Temporal 的起源可以追溯到 2004 年,當時兩位創辦人在 AWS 共同參與了 SQS message queue 的基礎建設,並打造了 Simple Workflow Service (SWF)。他們在那個階段就意識到:單純的 Queue-based 並不是理想的系統構建方式。
之後,他們持續投入與 queue 和 workflow 相關的專案,直到在 Uber 再度合作,開發出 Cadence —— Temporal 的前身。後來兩位創辦人認為這個模式可行,便共同創立公司並進行大幅改寫並維持開源。雖然 Temporal 在 2019 年才正式誕生,算是相對年輕的專案,但背後其實凝聚了多年累積的經驗。
有趣的是,SQS 在 2004 就推出,雲端服務商帶動了微服務的熱潮,但事實上連他們的工程師也還沒真正搞懂微服務...嗎?而另一方面,BPM 陣營在 2000 年前後就已經發展了 Workflow Engine,只是那時並沒有針對 大規模分散式系統 (massive scale) 的挑戰去設計。
Temporal 的 SDK 不只是「連線 Server 的用戶端」,使用起來更像是一個框架(framework):它提供 Worker 執行環境、決定性 Workflow 引擎、Activity 呼叫抽象、重試/超時/計時器、互動(Signal/Query/Update)等完整能力。因此需要學習它的 API 與設計方法。
流程架構概念
Workflow 與 Activity 的執行模式
Event History(事件歷史)
錯誤處理與重試
本篇介紹了 Temporal 基本架構、SDK 及基本運作原理,希望讀者在還沒開始寫扣之前,就對這個框架級的工具有一定的了解,下一篇就來建立第一個 Workflow 吧!