
68
| 第四章
將一切事項變成事件:全新的模式
不要低估使用 FaaS 無伺服器平台的事件驅動模型的學習曲線,這對許多
開發者來說是完全陌生的東西。我們看過一些開發者在建構 app 時,用
同步(會阻塞的)呼叫來串接功能,就像傳統的程序式開發一樣,這會做
出脆弱且不靈活的 app。我們百分之百建議你更深入學習事件驅動架構、
非同步編程,以及被動系統設計。
在使用 FaaS 時,你只要負責處理你的程式碼即可。FaaS 平台會管理計算(伺服器)機
群(fleet),平衡記憶體、CPU、網路與其他資源。但這些好處是用靈活性換來的,也
就是說,你無法登入計算實例,或自訂作業系統或語言執行環境。FaaS 平台利用這些限
制來幫你執行運維與管理動作,包括配置容量、監視機群健康、應用安全補丁、部署程
式碼,以及監視與 log 你的 Lambda 函式。
FaaS 帶來的挑戰
如同許多其他的現代部署平台,FaaS 技術最大的挑戰是學習曲線,原因不但是這種平
台與 Java 執行環境經常受到限制(與 PaaS 很像),也因為開發模式傾向事件驅動架構
(EDA)。 FaaS app 通常由
反應性
功能組成的,app 功能是用事件來觸發的(例如有訊
息進入 MQ,或物件儲存器傳來的檔案上傳通知),而且功能的執行可能會產生副作用
(例如資料在資料庫內的持久保存)以及額外的事件。
FaaS 平台可以在你自己的基礎設施上運行,通常是在協調系統上面運行,例如
Kubernetes(例如 kubeless(
http://kubeless.io/ ...