單租戶(hù)與多租戶(hù)的SaaS架構(gòu)有何不同?
譯文【51CTO.com快譯】隨著云服務(wù)持續(xù)在各個(gè)領(lǐng)域幫助我們存儲(chǔ)和管理各類(lèi)數(shù)據(jù),我們需要根據(jù)實(shí)際的應(yīng)用場(chǎng)景選擇正確的SaaS框架。通常,我們有單租戶(hù)架構(gòu)與多租戶(hù)架構(gòu)兩種選擇。
從字面上理解,單租戶(hù)和多租戶(hù)架構(gòu)之間的主要區(qū)別是:?jiǎn)巫鈶?hù)架構(gòu)通常是在獨(dú)占式的SaaS(軟件即服務(wù))云服務(wù)或交付模型中使用。而多租戶(hù)架構(gòu)則是多個(gè)用戶(hù)同時(shí)分享軟件應(yīng)用的相關(guān)服務(wù)。本文將和您討論兩者的具體差異,包括每種架構(gòu)是如何工作的,哪種模型方案可以滿(mǎn)足何種場(chǎng)景需求,以及構(gòu)建SaaS應(yīng)用程序的三種方法。
單租戶(hù)架構(gòu)的特點(diǎn)
讓我們以房地產(chǎn)為例,來(lái)看看單租戶(hù)架構(gòu)系統(tǒng)的工作原理。
如上圖所示,我們將SaaS服務(wù)器環(huán)境視為一個(gè)街區(qū),想象每個(gè)用戶(hù)都有自己的辦公樓,所有這些建筑物都位于同一條街上。那么每個(gè)用戶(hù)都在其建筑物內(nèi)運(yùn)行自己的業(yè)務(wù),每個(gè)建筑物在大街上排成一行。
可見(jiàn),單租戶(hù)架構(gòu)具有獨(dú)享性,因此每個(gè)SaaS服務(wù)器僅允許一個(gè)實(shí)例。服務(wù)提供商往往會(huì)有針對(duì)性地為每個(gè)用戶(hù)構(gòu)建單個(gè)軟件。在完成本地用戶(hù)端的安裝后,用戶(hù)可以自行更改UI(用戶(hù)界面),以滿(mǎn)足特定的環(huán)境需求。雖然每個(gè)用戶(hù)都有各自的數(shù)據(jù)庫(kù)和應(yīng)用實(shí)例,但是他們是不可以訪(fǎng)問(wèn)到基礎(chǔ)代碼的。
值得一提的是,單租戶(hù)架構(gòu)不但適用于本地應(yīng)用,也適合云計(jì)算環(huán)境,包括第三方云平臺(tái)和私有云服務(wù)等。因此,如果企業(yè)希望從精細(xì)化管理的業(yè)務(wù)環(huán)境,過(guò)渡到云端自托管的對(duì)等環(huán)境,那么采用單租戶(hù)架構(gòu)會(huì)比較適合。
多租戶(hù)架構(gòu)的特點(diǎn)
仿造上述房地產(chǎn)的示例,我們可以將多租戶(hù)架構(gòu)描述為辦公室環(huán)境,所有辦公室(用戶(hù)端)都位于同一個(gè)建筑物內(nèi)。每個(gè)用戶(hù)都可以在大型SaaS的環(huán)境中擁有自己的工作空間。
如上圖所示,在多租戶(hù)架構(gòu)中,每個(gè)軟件應(yīng)用程序?qū)嵗际菫橐粋€(gè)以上的租戶(hù)(用戶(hù)端)提供服務(wù)的。所有用戶(hù)端將共享相同的數(shù)據(jù)庫(kù)和應(yīng)用信息。因此,多租戶(hù)的SaaS架構(gòu)往往是基于B2B生態(tài)系統(tǒng)的,兩到多個(gè)用戶(hù)可以同時(shí)在同一個(gè)區(qū)域內(nèi)進(jìn)行協(xié)作。
對(duì)于那些初創(chuàng)型企業(yè)來(lái)說(shuō),它們希望擁有更舒適的啟動(dòng)體驗(yàn)、以及較低硬件配置。那么多租戶(hù)架構(gòu)就是一個(gè)絕佳的解決方案。作為企業(yè)在SaaS環(huán)境中普遍采取的標(biāo)準(zhǔn),多租戶(hù)架構(gòu)允許其用戶(hù)在軟件內(nèi)部進(jìn)行各種自定義的更改。
兩種架構(gòu)的各自?xún)?yōu)點(diǎn)
總體而言,單租戶(hù)比其相應(yīng)的多租戶(hù)要昂貴得多。而多租戶(hù)架構(gòu)具有非常高效的資源使用率,以及更大的計(jì)算力。同時(shí),多租戶(hù)架構(gòu)的維護(hù)成本要便宜得多。
- 安全性和可靠性:通過(guò)實(shí)施單租戶(hù)架構(gòu),用戶(hù)的數(shù)據(jù)會(huì)與其他最終用戶(hù)相隔離。這意味著沒(méi)有人可以訪(fǎng)問(wèn)他人的敏感數(shù)據(jù)。用戶(hù)可以放心地持續(xù)使用自己的服務(wù)實(shí)例和數(shù)據(jù)。
- 總體成本:多租戶(hù)架構(gòu)提供了諸如:數(shù)據(jù)庫(kù)、服務(wù)、應(yīng)用程序、以及資源層面上的交換,而且其成本低于單租戶(hù)架構(gòu)。多租戶(hù)架構(gòu)的擴(kuò)展對(duì)于用戶(hù)來(lái)說(shuō)影響最小。新用戶(hù)在無(wú)需支付昂貴費(fèi)用的情況下,可以享受到既有用戶(hù)的各項(xiàng)服務(wù),包括:最新的軟件版本等。因此,區(qū)別于獨(dú)享式的單租戶(hù)架構(gòu),多租戶(hù)架構(gòu)的維護(hù)成本與SaaS的訂閱數(shù)相關(guān)聯(lián)。
- 更大的計(jì)算力:多租戶(hù)架構(gòu)能夠使整個(gè)組織保留在同一基礎(chǔ)架構(gòu)和數(shù)據(jù)中心內(nèi)。據(jù)此,用戶(hù)不必考慮增加服務(wù)器、及其容量的問(wèn)題。
- 自托管式的環(huán)境遷移:而當(dāng)用戶(hù)希望從某個(gè)SaaS環(huán)境轉(zhuǎn)到另一個(gè)自托管環(huán)境時(shí),由于單租戶(hù)架構(gòu)將所有信息存儲(chǔ)在同一個(gè)空間里,因此用戶(hù)可以安全地傳輸數(shù)據(jù),并將其導(dǎo)入新的環(huán)境。
兩種架構(gòu)的各自缺點(diǎn)
從成本上說(shuō):除了本身比較昂貴以外,由于需要更多的資源和時(shí)間來(lái)進(jìn)行維護(hù)和定制,因此單租戶(hù)架構(gòu)不但比多租戶(hù)架構(gòu)實(shí)現(xiàn)起來(lái)更麻煩,而且構(gòu)建與維護(hù)成本比較高。
從安全角度來(lái)看:由于需要開(kāi)放和預(yù)留適合各類(lèi)用戶(hù)訪(fǎng)問(wèn)的接入點(diǎn),因此多租戶(hù)架構(gòu)更容易受到攻擊。此外,由于多租戶(hù)架構(gòu)能夠提供的定制項(xiàng)不如單租戶(hù)架構(gòu)多,因此用戶(hù)在運(yùn)行環(huán)境方面的管控力度不足。
從升級(jí)與維護(hù)角度:?jiǎn)巫鈶?hù)架構(gòu)需要由用戶(hù)端發(fā)起更新和升級(jí),而多租戶(hù)架構(gòu)則可以使用為所有用戶(hù)啟動(dòng)的一次性通用升級(jí)。
為何要為SaaS應(yīng)用選擇多租戶(hù)架構(gòu)?
在開(kāi)發(fā)SaaS應(yīng)用程序時(shí),開(kāi)發(fā)人員和企業(yè)往往傾向于選擇更高效、更具成本效益的架構(gòu)。基于上述對(duì)于兩種架構(gòu)優(yōu)、缺點(diǎn)的分析,用戶(hù)通常會(huì)選用多租戶(hù)的SaaS架構(gòu)。目前,多租戶(hù)方法擁有兩種實(shí)現(xiàn)模型:
- 邏輯數(shù)據(jù)分離 - 該模型允許所有租戶(hù)僅使用一個(gè)數(shù)據(jù)庫(kù)。它為每個(gè)用戶(hù)端分配了唯一的標(biāo)識(shí)符,進(jìn)而將所有數(shù)據(jù)都安全地隔離在同一數(shù)據(jù)庫(kù)中。其代碼庫(kù)需要通過(guò)這些唯一的標(biāo)識(shí)符,來(lái)檢索和存儲(chǔ)數(shù)據(jù)。
- 物理數(shù)據(jù)分離 – 該模型將通過(guò)讓不同的用戶(hù)端(租戶(hù))使用不同的數(shù)據(jù)庫(kù),來(lái)成功地分離數(shù)據(jù)。此舉可以根據(jù)用戶(hù)的實(shí)際需求,以及業(yè)務(wù)的發(fā)展,來(lái)擴(kuò)展應(yīng)用程序。
如今,諸如Zendesk、Boho、Office 365、Slack等知名應(yīng)用,以及大多數(shù)云服務(wù)提供商都能夠提供多租戶(hù)的SaaS應(yīng)用環(huán)境。用戶(hù)端可以在相同的硬件、相同的存儲(chǔ)、以及相同操作環(huán)境(如:Slack)中使用到相同的應(yīng)用程序。當(dāng)然,這與虛擬化有著本質(zhì)的區(qū)別。在虛擬化環(huán)境中,所有應(yīng)用程序是在各自操作的系統(tǒng)(或不同的虛擬機(jī))上運(yùn)行。
目前,最常見(jiàn)的多租戶(hù)應(yīng)用程序架構(gòu)可被歸結(jié)為如下三個(gè)架構(gòu)模型:
- 基于虛擬化的SaaS(容器) - 由于在數(shù)據(jù)庫(kù)、應(yīng)用程序和容器之間存在著許多交互,因此它是最復(fù)雜的一種設(shè)置。
- 多租戶(hù)SaaS - 各個(gè)結(jié)構(gòu)模式、數(shù)據(jù)庫(kù)以及限制,都是在數(shù)據(jù)庫(kù)級(jí)別被完成的。由于運(yùn)行中的SaaS應(yīng)用程序通??梢蕴峁┡c數(shù)據(jù)庫(kù)更多的近距離(close-up)交互,因此這是一種不太復(fù)雜的模型。
- 基于URL的SaaS – 作為最直接的模型,它只用到了單個(gè)數(shù)據(jù)庫(kù)和域名。此類(lèi)SaaS可以通過(guò)諸如subdomain.maindomain.com的URL,將Web應(yīng)用程序界面置于數(shù)據(jù)庫(kù)和用戶(hù)之間。值得一提的是,服務(wù)的安全性和數(shù)據(jù)管理都是在應(yīng)用程序級(jí)別被處理的。
小結(jié)
綜上所述,我們可以得出如下結(jié)論:
- 單租戶(hù)架構(gòu)的優(yōu)勢(shì)主要體現(xiàn)在--
- 更好的安全性。
- 多租戶(hù)架構(gòu)的優(yōu)勢(shì)主要體現(xiàn)在--
- 更具有云端成本效益。
- 方便企業(yè)在同一操作環(huán)境中同時(shí)工作。
- 不需要大量的維護(hù),在升級(jí)補(bǔ)丁并分發(fā)給用戶(hù)端時(shí),能夠立即自動(dòng)升級(jí)。
- 易于處理和實(shí)現(xiàn)。
【原標(biāo)題】Single-Tenant vs Multi-Tenant: SaaS Architecture (作者:Alfonso Valdes)
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】