iT邦幫忙

2025 iThome 鐵人賽

DAY 30
0

前言

這段旅程的起點,是為了拯救那個在事件洪流中疲於奔命、被排程與邏輯耍得團團轉的自己。

我也意識到,這並不是我個人的困境,而是隨著微服務逐步成熟,越來越多團隊開始面對的現實課題,微服務過分炒作的情況將會退去,軟體工程的重點會從「拆解」轉向「收斂」。

那個存在已久、但價值未被充分看見的流程引擎,正在重新找到它的位置,它將吸收原本散落在系統中的排程、事件協調、補償與狀態控制邏輯,成為系統的控制中樞,讓開發更簡單,系統更透明、更容易演進。

這三十篇文章,是以流程引擎為核心從零到一的開發指南:從觀念建立、常見陷阱,到開發模型與實作案例,一步步打通從理論到實作的脈絡。

📖 完整文章列表

🌟 第一部分:基礎入門 (Day 01-05)

介紹分散式系統的挑戰、Workflow Orchestration 概念、Temporal 基礎架構,並實作第一個完整的註冊流程。

Day 01 - 分散式架構的挑戰

探討微服務架構下常見的痛點:連線瞬斷、狀態持久化、冪等性、跨天期長流程等挑戰。

Day 02 - Workflow Orchestration 流程編排介紹

介紹 Orchestration vs Choreography 的差異,以及流程引擎的能力總覽與使用時機。

Day 03 - Temporal 基礎介紹

認識 Temporal 的起源、架構簡介、核心優勢與設計理念。

Day 04 - 建立第一個流程 - Workflow / Activity

實作一個電商註冊流程,學習 Workflow 和 Activity 的定義與實作方式。

Day 05 - 啟動第一個流程 - Worker / Start Trigger

學習如何設置 Temporal Server、啟動 Worker 以及觸發 Workflow 執行。


🧠 第二部分:核心理論 (Day 06-09)

深入探討分散式流程的理論基礎,包括 BASE Model、State Machine、Event History、Replay 機制、順序性與冪等性挑戰。

Day 06 - 分散式流程的核心觀念 - BASE Model / State Machine

深入理解 BASE Model(基本可用、軟狀態、最終一致性)與狀態機設計。

Day 07 - 分散式流程可靠性的基石 - State Persistence & Replay

探討 Event History 與 Replay 機制如何確保流程可靠性與可追溯性。

Day 08 - 分散式流程的順序性(Ordering)挑戰

理解分散式環境下的順序性問題,以及如何透過 Workflow 保證執行順序。

Day 09 - 不管是一次、一百次還是一萬次,我還是想跟你說我愛...冪等性

學習冪等性設計,避免重試導致的重複執行問題。


⚙️ 第三部分:錯誤處理與流量控制 (Day 10-13)

學習如何設計健壯的分散式流程,涵蓋錯誤分類、Timeout Policy、Retry Policy 以及併發與限速策略。

Day 10 - 重試之前先判斷:錯誤分類與處理路徑設計

學習錯誤分類法(暫時性、永久性、業務失敗、系統崩潰)與對應策略。

Day 11 - 不要讓流程無限等:Timeout Policy 的設計思維

掌握 Activity Timeout 與 Workflow Timeout 的設計原則與實作方法。

Day 12 - 錯誤難免,重試要有策略:Retry Policy 的設計思維

深入 Retry Policy 設計,包括重試次數、退避策略與不可重試錯誤類型。

Day 13 - 流量高峰不失控:併發與限速的設計指南

學習 Concurrency Control 與 Rate Control,保護 Worker 與下游服務。


🚀 第四部分:進階流程模式 (Day 14-21)

掌握複雜流程的設計模式,包括 Saga Pattern、互動式流程、Message Passing、Entity Pattern、Child Workflow 等。

Day 14 - Temporal 實作 Saga Pattern,打造可靠的分散式交易流程

實作 Saga Pattern,處理跨服務的分散式交易與補償邏輯。

Day 15 - Temporal 消除排程與狀態管理,流程寫得更直覺

實作需要人工審核與超時處理的互動式流程。

Day 16 - Workflow Start 正確的流程啟動方式

詳解各種 Workflow 啟動方式的差異、適用情境與常見陷阱。

Day 17 - Message Passing 互動 API 的設計指南(Signal / Query / Update)

學習如何透過 Signal、Query、Update 與運行中的 Workflow 互動。

Day18 - Temporal Entity Pattern 的設計思維:讓每個商品庫存都有專屬 Workflow

掌握 Workflow-as-Entity 模式,將每個實體建模為一個 Long Living Workflow。

Day19 - Temporal Child Workflow:大型流程的治理模式

學習何時使用 Child Workflow,以及如何結構化拆分複雜流程。

Day 20 - Asynchronous Activity Completion - 非同步完成,讓資源不再卡住

實作非同步 Activity Completion,釋放 Worker 資源處理長尾任務。

Day 21 - Workflow Cancel:設計能被中途喊停的流程

學習 Workflow 與 Activity 的取消機制,確保流程能優雅地中斷與清理。


🔄 第五部分:版本管理與測試 (Day 22-25)

學習如何安全地演進 Workflow 程式碼,以及如何全面測試 Temporal 應用。

Day 22 - Temporal Workflow Versioning 流程版本管理

掌握 Workflow.getVersion API,安全地演進 Workflow 程式碼。

Day 23 - Temporal Testing(上):Workflow.sleep(), Activity.getExecutionContext()

學習使用 TestWorkflowEnvironment 測試 Workflow 與 Activity。

Day 24 - Temporal Testing(中):Workflow Versioning、Workflow.await、Heartbeat/Cancel

測試 Workflow Versioning、Workflow.await、Heartbeat 與取消機制。

Day 25 - Temporal Testing(下):Async Activity Completion、JUnit5 Extension、E2E 測試環境建立

測試非同步 Activity Completion,並建立 E2E 測試環境。


🤖 第六部分:AI 整合實戰 (Day 26-28)

探討 Workflow 與 AI Agent 的結合,實作一個具備記帳功能的 AI 對話平台。

Day 26 - AI 對話平台 - 整合 Temporal 與 AI Agents (上)

探討 Workflow 與 AI Agent 的本質差異,以及為何需要結合兩者。

Day 27 - AI 對話平台 - 整合 Temporal 與 AI Agents (中)

鳥瞰 AI 對話平台的整體架構與系統模組設計。

Day 28 - AI 對話平台 - 整合 Temporal 與 AI Agents (下)

深入程式碼實作,逐行理解 Temporal 如何與 AI Agent 協作。


📊 第七部分:可觀測性 (Day 29-30)

學習使用 Search Attributes 增強 Workflow 的查詢能力與系統可觀測性。

Day 29 - Search Attributes 入門實作

學習 Search Attributes 的基礎概念、資料類型與實作方式。

Day 30 - Search Attributes 設計策略

深入 Search Attributes 的設計決策、可觀測性策略與生產環境最佳實踐。


💡 學習路徑建議

分散式入門者路徑

第一部分到第三部分,透過初步學習企業級流程引擎的過程,從中建構起處理分散式架構的基礎觀念,是我自己最喜歡的篇幅。

  1. 從 Day 01-05 開始,建立流程引擎基礎概念,並實作第一個流程
  2. 閱讀 Day 06-09 理解分散式核心理論基礎
  3. 閱讀 Day 10-13 理解分散式的錯誤處理與流量控制

深入學習

第四部分開始是深水區,要整合前述觀念以及 Temporal API,其中的 Day 14(Saga Pattern),Day 15(Interactive Process),Day 18(Entity Pattern)是幾個重要的流程實作模式。

  1. 全系列閱讀
  2. 深入 Day 14-21(進階流程模式)
  3. 學習 Day 22-25(版本管理與測試)
  4. 重視 Day 29-30(可觀測性設計)

直接應用

  1. 閱讀 Day 01~13 建立第一個流程
  2. 研究 Day 14, 15, 18(Saga Pattern & Interactive Process & Entity Pattern)
  3. Day26-28 AI 對話平台 - 整合 Temporal 與 AI Agents (上/中/下)

待補完章節 (待我休個假再來補坑)

  1. Source Code 在哪?...待我找個時間整理好資料夾
  2. Schedule 定時器篇
  3. Deployment 佈署篇
  4. Security 安全篇
  5. Observability & Mertrics 觀測篇
  6. Performance 效能篇
  7. Dynamic Workflow 動態流程篇
  8. Priority, Worker Versioning 新特性篇

Performance 內容待補 (有興趣可以先看看案例)

公司 / 專案 應用場景 規模 / 數量級 Temporal 負責的是哪一段 重點說明 / 來源
Vinted 支付、退款、訂單後台流程協調 📈 10–12 百萬 Workflows / Activities 每天 處理交易邏輯、失敗補償、後台支付流程 Vinted Case Study – Temporal
Unify 自動化行銷/銷售 Playbook(節點流程) 📊 數十萬個 Node executions 同時進行 Orchestration DAG 流程、節點依序執行、狀態協調 How Unify uses Temporal
Dust AI Agent 任務管理、推理流程編排 ⚙️ 每天 1,000 萬+ Activities 執行 AI 任務分派、狀態追蹤、錯誤重試 Dust talk: Temporal at Scale
Snap 大規模事件流程處理(通知、使用者行為、後台協調) 🌍 用戶日活 4.14 億(具體 Workflow 數未公開) 關鍵任務編排、狀態管理、補償邏輯 Snap Engineering Blog – Reliable Systems with Temporal

嗨,這是 30 天鐵人賽的最後一篇(+1)。

感謝你一路陪我走過這段學習旅程,一起探索分散式流程的世界,認識了現代流程引擎 Temporal 的力量。

希望讀到這裡的你,也能在開發的路上少一點匆忙、多一點從容,讓系統與人生的流程都能游刃有餘地跑起來。

聯絡我


🔗 相關資源


上一篇
Day30 - Temporal Search Attributes(下)設計策略
系列文
Temporal 開發指南:掌握 Workflow as Code 打造穩定可靠的分散式流程31
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言