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