大家好,我們是 Berry AI 的 Software Team。
前面七天 ML Team 講的是怎麼把影像變成每一台車的旅程,昨天 Day 17 講的是上線之後怎麼持續確認這些數字準不準。數字準了之後,還要在使用者需要的時候送到他們手上,而且每個地方看到的要是同一個數字。接下來七天,我們介紹數據最後一哩路上的系統與挑戰。
先看一台車:中午開進得來速車道,排隊、點餐、取餐,整段過程前後幾分鐘。這幾分鐘的計時數字,有三種人會在不同的地方看到:
Day 02 那一百條難題裡,第 75 條講的就是這段:同一個數據要在店內看板、雲端報表與對外 API 各算一次,每個地方都要得出同一個數字。店內與雲端是兩套系統,中間的網路不一定穩定。每間店的時區、餐期、營業時間、車道配置又都不一樣,要讓它們的結果一致並不容易。

店內那條路要快,雲端這兩條路要準、要一致。
對照上面那張圖,Software Team 負責的系統如下:
這些系統本身也需要監控,Day 23 會說明如何從瀏覽器外部確認店內的即時看板正常運作。
每個系統的第一版都是先求快、求有,讓客戶先用得到。之後門市從幾十間增加到上千間,原本的做法陸續不夠用,我們再隨著門市數量一步步改。Day 20 到 Day 24 這五篇,講的就是這些系統怎麼迭代:
這些架構上的改動理由各不相同,其中最常出現的是兩件事:數字要一致,日後要容易修改。同一個數字不能算出兩個版本;PM 想調整報表的欄位順序,不應該需要工程師開 PR、送 review、等部署。
| Day | 主題 |
|---|---|
| Day 19 | 從零開始做標註工具 |
| Day 20 | 從零開始導入 Superset |
| Day 21 | 營運指標的 data pipeline:從 6,000 行 Python 搬進 dbt |
| Day 22 | 把 Superset 看板轉成 PDF 寄到客戶信箱 |
| Day 23 | 從瀏覽器外部監控店內的即時看板 |
| Day 24 | 車道即時影像:從 RTMP + FLV 換成 WebRTC |
Software Team 負責把 ML Team 算出來的數字送到店員、店經理、總部與加盟商手上,而且三種人看到的要一樣。看板、data pipeline、報表、播放器,每一樣都有現成的做法。難的是上千間店的時區、餐期、車道配置與網路狀況各不相同,要在這些條件下每天準時把數字送到。
明天從 BerryTool 開始,講一個標註工具怎麼從零做起。
本系列由 Berry AI 工程團隊出品。更多工程實戰紀錄都在 Berry AI 技術部落格。