寫在前面

上篇IaaS-PaaS-SaaS定義中介紹了雲端計算的3種服務模型:

 

 

本文解釋這張圖的由來,即雲服務模型的演進過程

 

一.表層模型

早在2008年,Microsoft等公司(在此之前還有Amazon、Google)就在探索雲服務了。推出Azure時,Microsoft提出了這樣的模型圖:

 

 

用來解釋PaaS模型與當時人們所熟知的本地部署(on-premises)、外包託管(outsourced hosting)之間的差異

具體的:

  • 本地部署:需要擁有(購買)硬體並維護資料

  • 外包託管:可以直接用主機託管或託管伺服器

  • PaaS:使用雲架構,不但資源託管還支援彈性擴充套件

實際上,這種基於訂閱的收入模型可能會蠶食Microsoft當時已有的許多基於許可證的產品。但從巨集觀上看,規模經濟(economies of scale)才是雲服務模型最重要的價值

在微觀經濟學中,規模經濟是指企業由於經營規模而獲得的成本優勢,單位產出成本隨著規模的擴大而降低:

In microeconomics, economies of scale are the cost advantages that enterprises obtain due to their scale of operation (typically measured by amount of output produced), with cost per unit of output decreasing with increasing scale.

簡單來講,規模經濟就是隨著規模的擴大而更高效地做事:

The simple meaning of economies of scale is doing things more efficiently with increasing size.

在雲端計算中體現在資源集中管理(Resource pooling)上,從而產生規模效應:

雲端計算的規模經濟體現在兩個方面,一是使得使用者終端成本降低,二是擁有更高的利用率,因而被認為可能產生良好經濟效益。

一方面使用者不需要購買儲存器或伺服器、而是通過購買服務來獲得(相應功能),降低成本的投入和管理費用。另一方面雲服務的提供實際上就是大量的使用者在共享一個服務的資源,利用率更高。

由雲服務供應商集中管理軟硬體資源,並提供維護、按需計費、彈性擴充套件等服務,使用者不再需要全權控制上上下下的N層資源棧,即可部署自己的應用程式(PaaS)

 

二.資源棧模型

上圖僅從表層去描述了PaaS與外包託管和本地部署之間的主要差異,缺乏具象的對比,因此需要一種能夠突出差異並傳達其價值,同時還能說明差異程度的視覺化模型:

 

 

先根據人們所熟知的本地IT環境抽象出9層資源棧,作為統一上下文,再將雲服務模型對映到這個上下文中,並突出差異。之所以用層次結構來描述,是因為:

  • 體現了某種程度的關注點分離

  • 表現出棧中各層之間具有一些直接依賴關係和設計/操作抽象

具體的:

  • 本地部署:正如我們所理解的那樣,完全控制整個資源棧,擁有並管理這些資源

  • IaaS:不再全權控制所有資源,下5層託管給基礎設施供應商

  • PaaS:除Application之外的層都交由供應商管理了,我們只需要關注自己的應用程式

 

三.類比模型

也有一些類比模型,例如披薩、汽車等,但都不如資源棧模型貼切,因為在做類比時會丟失一些上下文資訊,比如層間依賴和關注點分離

以汽車模型為例:

 

 

這種類比的關鍵點是:

  • 本地部署:就像擁有自己的車,可以隨時去任何想去的地方(完全控制)。車的型號、外觀、顏色、裝飾等都可以自選,但要自己負責維護

  • IaaS:像是租車服務,仍然可以隨時想去哪就去哪。雖然在車的選擇上有一些限制,但不必自己維護,拿到鑰匙就能出發

  • PaaS:就像公共交通,可以根據發車時間表按既定路線去往已通車的地方,雖然存在這樣一些限制,但易於使用,而且能按使用量付費(得益於規模經濟)

從本質上來講,這種類比所表達的還是最初控制與規模經濟之間的權衡,但在視覺上更容易理解,而且有助於展開討論和傳播

 

四.資源棧模型擴充套件

9層資源棧模型出現之後,又對其視覺呈現做了一些修改(將3D的部分扁平化,減少顏色數量,去掉複雜形狀),得到了:

 

 

接著有人提出SaaS也應該加進來,於是有了:

 

 

為了讓SaaS與PaaS的差異更明顯(直接加的話,僅一層Application的區別),對資源棧本身做了一些調整:

  • Security & Integration層被刪掉了,因為所有層都存在安全問題,作為單獨一層沒什麼意義

  • 在Applications層下面添上Data層

  • Databases, Servers, Server HardWare層分別改為Middleware、O/S和Server層

這樣,雲環境(IaaS、PaaS、SaaS)之間都是2層差異,雲環境與本地環境之間有5層差異,表明雲環境與本地環境間的差異更大

之後為了表意更準確,又做了一些修繕,

  • O/S改為Operating System

  • On-Premises改為Traditional IT,因為本地部署包括私有云環境,要區分開

  • 對IaaS中的managed by線做了輕微調整(延伸出一部分到Operating System層),表示IaaS中的O/S層是共同維護的,雲供應商提供基礎了VM映象,但使用者還需要維護其補丁和更新

得到終稿:

 

 

 

參考資料

  • Cloud Service Models (IaaS, PaaS, SaaS) Diagram:從歷史長河淌過來的David Chou親述

  • Economies of scale

  • 唐雄燕:雲端計算價值在於協同與規模經濟

  • Pizza as a Service

 

有所得、有所惑,真好

關注「前端向後」微信公眾號,你將收穫一系列「用心原創」的高質量技術文章,主題包括但不限於前端、Node.js以及服務端技術

本文首發於 ayqy.net,原文連結 http://www.ayqy.net/blog/雲服務模型:控制與規模經濟的博