無論SaaS、IaaS還是PaaS,云計算所有層次的中心概念之一是多用戶租用。如果在一個部署中沒有共享資源,就很難把這個部署合理地稱作“云”。
甚至美國國家標準與技術局(NIST)在云計算的正式定義中也或多或少地提出了多租戶的正式定義。NIST在云計算定義中的一部分指出,重要特點:資源匯合。提供商的計算資源將匯合起來使用一種多租戶模式為多個消費者服務。不同的物理和虛擬資源將根據(jù)消費者的需求動態(tài)地分配或者重新分配。
在大多數(shù)SaaS產品中,多用戶租用是多種多樣的 -- 服務器、應用程序代碼、數(shù)據(jù)庫、甚至單個平板電腦。或者這個數(shù)據(jù)庫中的網頁可以在不同的客戶和這個系統(tǒng)的不同用戶之間共享。
在IaaS中,多租戶是通過虛擬化技術實施的:一個管理程序分配和管理在一個特定的物理計算資源上的許多完整的虛擬機。
但是,PaaS怎么樣呢?
在PaaS中對于多租戶有兩個主要方法:一個方法是依賴IaaS多租戶,業(yè)界人士把它叫作服務器PaaS。另一種方法更像是SaaS,業(yè)界人士稱之為資源PaaS。
服務器PaaS實際上是一種自動化的部署和管理系統(tǒng)。雖然有管理的服務提供商,他們能夠人工建立你的應用程序部署和在云服務器上部署環(huán)境并且甚至能夠實現(xiàn)部分自動化,但是,它不是PaaS。它只是管理的服務。
相比之下,如果開發(fā)者能夠通過一個可提供高水平操作的用戶接口直接管理這個環(huán)境(即使這個用戶接口在命令行中),那么,這實際上是一個服務。服務器PaaS的例子包括RightScale、Standing Cloud和EngineYard。
資源PaaS為一個應用提供一個抽象的“容器”,允許它與其它這種應用以精細的方式共享計算資源。它消除了“服務器”的概念以支持功能的資源。這個應用容器類似于傳統(tǒng)應用部署的程度取決于特定的服務,但是,肯定沒有“根訪問”。資源PaaS的例子包括orce.com、Google AppEngine和Heroku。
資源PaaS有許多好處。首先,應用程序升級是精細和迅速的。隨著這個應用程序收到更多的請求或者開始做更多的工作,需要的資源將立即提供(當然是在限度之內)。成本計算也是精細的,因此,你僅為你使用的計算資源付費。另一個好處與SaaS的好處相似:開發(fā)者不必考慮或者管理服務器(包括出故障的服務器)或者備份、設置、配置等等。
但是,這種精細程度和抽象是有代價的。這個代價就是失去控制。與其他用戶共享的任何事情也不能由每個用戶任意設置。如果有一個設置細節(jié)能夠被單個用戶修改,那么,專門為那個用戶運行的軟件和系統(tǒng)必須隔離開。再說一次,在這個連續(xù)統(tǒng)一體中,每一個服務都有自己的位置。例如,谷歌AppEngine使用由每一個人共享的BigTable數(shù)據(jù)庫,而Heroku允許每一個用戶建立一個單獨的NoSQL數(shù)據(jù)庫或者關系數(shù)據(jù)庫。