從蛋糕店的例子,搞懂 IaaS、PaaS、SaaS、FaaS
2023年9月22日
在《從蛋糕店的例子,學習軟體系統設計》一文中,我們用蛋糕店的比喻,來了解軟體系統設計。在篇文章,我們將繼續用經營蛋糕店的比喻,進一步聊現實世界中的系統設計決策。
在經營蛋糕店時,會需要思考該是自己買下店面,還是跟別人租店面來經營? 假如要租店面,是只租店面剩下自己打理,還是租那種會連裝潢、清潔也一起包下來的? 會需要思考蛋糕師傅的招募是要委外還是自己培訓? 甚至需要思考,到底要純手工做蛋糕,還是由機器來生產? 上面這一系列的問題,都是在真實世界的系統設計中要考量的。
IaaS
以買店面或租店面為來說,在真實世界需要考量,要自己建機房 (就像買),還是用雲端廠商提供的服務 (就像租)。買跟租都有各自的好處,自己建機房就需要自己團隊內有專業的人,來處理機房可能遇到的各種狀況,這是一種成本;而使用 AWS、GCP、Azure 這類廠商提供的 IaaS (基礎架構即服務),可以省去很多麻煩,但是成本會高一點 (37signals 今年從雲端改回自建,估計一年省一百五十萬美元)。
PaaS
至於要選擇只租店面自己打理細節,還是租那種裝潢、清潔管理通包的? 這就像選擇 IaaS 與 PaaS (平台即服務) 之間的選擇。選擇 PaaS 就像租來店面後,有出現漏水、要換燈泡等問題,都有人會來修好,不用自己擔心。IaaS 具體就像用 AWS 的 EC2,你租了別人的服務,但遇到運算不足,要自己升級或加開機器;而 PaaS 就像用 Lamda,你租的同時,後面那些資源擴容、修補的問題你都不用煩惱,都由 AWS 煩惱就好。
SaaS
而要找外面現成的蛋糕師傅,或是自己培訓,這就像選擇 SaaS 服務,或者自己從零造輪子。找現成的蛋糕師傅好處是快速方便,省去培訓的麻煩;但是壞處是外面找來的師傅,可能有些做蛋糕的方式或習慣,跟你理想中的不符合。自己培訓則是要花時間與成本,但可以讓培訓出來的師傅更貼近你的理想。用 SaaS 或自己做,也是相似的概念。 SaaS 提供現成的功能讓你直接用,但很可能沒辦法完全依照你的需求客製化;自己從零做,雖然能高度客製化,但要花時間與成本。
FaaS
至於要選擇手作蛋糕,還是工廠生產蛋糕,這就像思考是否選擇 FaaS (函式即服務) 一樣。用蛋糕工廠生產,然後下游的蛋糕店需要時就叫貨,這就像用 FaaS 一樣,你呼叫所需的函式,不須用自己一個一個生產。
以上透過蛋糕店的例子,希望大家有更清楚在 IaaS、PaaS、SaaS,以及 FaaS 之間的區別。在真實世界的系統設計,要選擇用什麼服務,或者是自建,是必需要意識決定的。就如同蛋糕店的經營,不同的選擇都有其利弊,沒有所謂最好的選擇,只有最適合你的系統的選擇。