从蛋糕店的例子,搞懂 IaaS、PaaS、SaaS、FaaS

2023年9月22日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

本篇最早收录于《ExplainThis 全端双周报》第十期

《从蛋糕店的例子,学习软体系统设计》一文中,我们用蛋糕店的比喻,来了解软体系统设计。在篇文章,我们将继续用经营蛋糕店的比喻,进一步聊现实世界中的系统设计决策。

在经营蛋糕店时,会需要思考该是自己买下店面,还是跟别人租店面来经营? 假如要租店面,是只租店面剩下自己打理,还是租那种会连装潢、清洁也一起包下来的? 会需要思考蛋糕师傅的招募是要委外还是自己培训? 甚至需要思考,到底要纯手工做蛋糕,还是由机器来生产? 上面这一系列的问题,都是在真实世界的系统设计中要考量的。

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 之间的区别。在真实世界的系统设计,要选择用什么服务,或者是自建,是必需要意识决定的。就如同蛋糕店的经营,不同的选择都有其利弊,没有所谓最好的选择,只有最适合你的系统的选择。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們