Upgrade to Pro — share decks privately, control downloads, hide ads and more …

以 Python 應用來推進餐飲雲端 POS 系統:一個後端開發者的實戰分享

Keith Yang
September 22, 2024

以 Python 應用來推進餐飲雲端 POS 系統:一個後端開發者的實戰分享

PyCon Taiwan 2024 的 Talk。

在服務超過一萬間餐廳的 POS 系統公司裡,有一個寫 Python 的工程師想跟大家分享,這些年與團隊夥伴一起看到與做到的成長,並笑說遇到的挑戰與災難;這一路上有太多的技術題目,這次會專注於與 Python 之道的精神相關的關鍵實作以及重大決擇,並在提及領域、團隊以及 Python 在不同的環境做到哪些事、遇到哪些哭笑不得的技術挑戰後,展示並演示幾個近年來使用的 Python 開發技巧如何解決後端工程師在開發與維運時系統所遇到的問題,最後以 AI 對組織內 Python 開發環境與文化的影響做結尾。

主要目標聽眾是:
Python 後端開發者
使用資料庫的開發者
想用(或被迫使用) Python 做為組織核心技術的人
對 Python 於企業應用感到興趣的人
希望能帶給目標聽眾一些經驗分享與技術參考。

Part I: 簡介

介紹:講者背景,鳥瞰技術發展時間軸
Part II: 路上的挑戰

在這樣的環境中,Python 還能用來解決什麼樣的問題呢?
關鍵時刻:挑戰與典範轉移
每個 web 框架的轉機:Web2py、Django、Flask
每個 DB 的挑戰:MySQL、PostgreSQL、MongoDB、Redis
核心技術挑戰:
Python 2.7 到 3.11,Django 1.3 到 3.2
維繞著 Django app 的各種挑戰:網路 (AWS GA)、資料庫 (MySQL, PostgreSQL, MongoDB, Redis)、防火牆 (WAF)、、擴展 (ECS)
產業相關挑戰:
自動化一間公司只收 Email 裡的 Excel 人工處理

Part III: Best Practice

Unit Test, CI/CD, Monitor, Alarm, Backup, Security, SRE
測試 (pytest)
監控 (Sentry, NewRelic, AWS CloudWatch)
自製預防性監控:防範資料庫 Primary Key 達上限
About Developer experience
程式碼 (Pre-commit, flake8)

總結 & QA

從 Developer experience 進入 AI 介入的 Python 開發環境:從 Stack Overflow 到 ChatGPT、Copilot 並帶到結尾
Q&A

Keith Yang

September 22, 2024
Tweet

More Decks by Keith Yang

Other Decks in Programming

Transcript

  1. Pyramid (用過) Flask (內部小服務) FastAPI (等待機會中) Django REST Framework (Legacy)

    Graphene GraphQL for Python 其它也是有(想)用(過)    Django Ninja (?)
  2. django 整合型服務 vs 微服務 Monolithic VS Micro Services Gateway AWS

    Lambda Pyramid 強勢被回歸,在一起 還是比較好開發、好維護
  3. AWS RDS 上的 5.7 -> 8.0 無痛升級 研究、測試、觀察,演練再演練 MySQL 8.0

    Instant DDL:許多 ALTER TABLE 的操作, 現在可以立即完成 Metadata 更改 更嚴格的 Metadata Locking,也可能造成 Django migration 時的鎖表 MySQL 5.7 -> 8.0
  4. 以為半夜三點升級安全 沒人想到 三點正好會跑一個例行的 scirpt 直接用 mysqlclient 開連線 select 完,沒有 commit

    也沒有 rollback 就繼續執行其它要跑很久的任務 當然也沒有設定 autocommit
  5. 以為建新的 DB 再切過去總沒事了吧 沒想到 建出來的新 DB 的 table 還沒熱起來 index

    所需的統計資料不足 一些高頻率的 query 變超級慢 趕快幫它下 ANALYZE 現在你可能可以多問一下 AI Retro
  6. AWS: WAF 被自己 DDoS 時的好幫手 從 v1 到 v2 a.

    把常用的急救 rules 刪掉省錢 b. 忽然需要時找不到 c. 有些錢還是不能省 d. 防火牆 能出什麼事呢
  7. 擴展 vs 團隊 AWS: ECS 相比於 K8S,一兩個後端或 SRE 能掌握的佈屬環境 B2B

    vs B2B2C Business . Business . Consumer 線上點餐、訂位 從只有對餐廳到面對消費者
  8. 設定每天跑 Python script 寫一個 class query 失敗的交易 寫入 Excel 寄給廠商那邊的收件者

    自動化 只收 Email 裡的 Excel 人工處理 SPEC!有先問廠商 「產出這樣的 Excel 可以嗎 現在可以想像 寫出步驟後 請 AI 完成一半的 code