接手 pipeline 重寫
接手一條原本跑在 Composer + Apps Script 上的營收 pipeline,整套換成 BigQuery External Tables + Scheduled Queries。產出一樣、SLA 一樣,月支出降到原本的 1/300。
這個案子之後一直在套用的心得:多數「pipeline」其實不需要 orchestrator,需要的只是一個會照排程跑的 query。
童曉瑜 · John Tung
GCP、AWS、Azure 上都跑過 production,工作流程編排用過 Airflow,需求單純時直接用 scheduler。這幾年最常做的,其實是把別人搭得太重的東西改回一個會照排程跑的 query——工具看需求挑。
關於我
人在台灣。目前在一家媒體集團負責社群分析資料平台,從 Meta Graph API 的 Cloud Run Jobs,到存入 Looker Studio 的 dbt marts,都由自己負責建置。
過去幾份工作,GCP、AWS、Azure 都有正式環境的經驗,工作流程編排用過 Airflow 和輕量的 scheduler,資料處理 PySpark、dbt、BigQuery 都跑過 — 累積下來的心得是:最適合的工具,是「對得上實際需求 + 團隊維護得起來」的那一個。其中 2.5 年擔任 Data Team Lead,之後選擇回到 Principal IC 的角色繼續動手做事。
資料建模和基礎建設這兩塊花的時間差不多 — 後者像是讓 token 不會過期、讓 job 保持 idempotent、讓帳單一直停在很小的數字。
現在最投入的,是 LLM 強化的資料管線,以及讓編輯對歷史文章做語意搜尋——其實就是回到本業:中文文字探勘與輿情分析。
代表作
接手一條原本跑在 Composer + Apps Script 上的營收 pipeline,整套換成 BigQuery External Tables + Scheduled Queries。產出一樣、SLA 一樣,月支出降到原本的 1/300。
這個案子之後一直在套用的心得:多數「pipeline」其實不需要 orchestrator,需要的只是一個會照排程跑的 query。
Facebook、Instagram、Threads、YouTube 四個平台的資料端到端存入 BigQuery — 15 個 Cloud Run Jobs 搭配錯開時間的排程觸發,再用 dbt 建模並保留完整的歷史快照(每次變動都留下來,不只最新狀態)。
編輯和行銷每天會打開的 Looker Studio dashboard。
雙帳號 OAuth,涵蓋 8 種權限範圍,再用每週執行的 Cloud Run Job 透過 Secret Manager 自動更新 60 天 token。原本的設計是「token 快過期就 alert on-call、再請對方手動重新授權」,升級成完全自動、不需要有人介入。
Cloudflare Pages 上的純前端授權工具。社群團隊的編輯可以自己跑完整個 API 授權流程,不用開 ticket、不用敲工程師。純靜態 hosting、沒有 backend、幾乎不用維護。
寫作
家庭 bot 怎麼盯股價又做到閒置零成本、假日零誤報——盤中閘門管成本、新鮮度閘門管正確性,外加一個上線隔天就被推翻的界線決策。
side project 裡的 @types/react 悄悄從 node_modules 消失。tsc --noEmit 照樣跑、照樣吐出 0 error——只是它已經不再檢查任何 React 相關的東西了,而 CI 綠燈完全看不出這件事。
注音符號只有 1 到 4 筆,簡單到可以自己刻描寫判定,不用整套為完整漢字打造的函式庫。要不要自建的決定很好下;但要判定小孩的手指要畫到多接近才算「對」,卻試了三輪——前兩輪還是往相反方向各錯一次。
正在做
評估 BigQuery Vector Search 與 self-host Elasticsearch 兩條路,讓編輯對歷史文章做語意搜尋。
新架構已出數,正把最後一條營收 pipeline 從舊的 Composer DAG / Apps Script 完全下線。
聯絡
© 2026 John Tung. 以 Astro 建置。