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