SaaS多租戶的3種隔離模式

架构师汤师爷發表於2024-10-28

大家好,我是湯師爺~

在SaaS模式下,多租戶之間的資源隔離是基礎且關鍵的一環。SaaS服務商需要在確保運營效率和控制成本的前提下,搭建一個讓多個租戶能夠同時訪問的共享環境。

雖然大家都在用同一套SaaS產品服務,但資源訪問必須嚴格隔離,確保租戶之間互不干擾。SaaS資源隔離通常包含以下幾個層次:

1. 基礎設施的隔離

第一層主要指SaaS系統執行所依賴的基礎設施資源,比如計算資源(CPU、記憶體)、儲存資源(資料庫、檔案系統)、網路資源(IP、頻寬)等。

這些資源的隔離主要是為了確保不同租戶在使用系統時,互相之間不會因為資源競爭而受到影響。

2. 組織許可權的隔離

第二層隔離涉及組織許可權的隔離,包括組織資訊、使用者賬號、角色、許可權配置、產品授權關係等。這些資料決定了誰能用什麼功能,誰有操作哪些內容的許可權。

組織許可權隔離的目的是讓每個租戶擁有自己獨立的組織架構和許可權設定,不會因為其他租戶的操作而發生衝突。

3. 業務資料的隔離

最後一層隔離涉及系統執行過程中產生的業務資料,如訂單、發票、操作記錄和資料包表等。透過精細的資料許可權配置,這些資訊可以在不同組織單元間實現完全隔離,從而保障業務資訊的隱私性和安全性。

多租戶架構主要解決第一層的隔離問題,即計算、儲存和網路等資源的隔離。為了實現多租戶隔離架構,我們需要先了解幾種常見的多租戶隔離模式。

豎井隔離模式

有些 SaaS 服務商選擇豎井隔離模式,也就是每個租戶都執行在獨立的資源環境中。如圖6-3所示。

有人會覺得,這不就是傳統軟體模式嗎?為什麼還是 SaaS?其實,如果這些獨立資源具備標準化的租戶身份識別、入駐流程、計費體系、部署和運營流程,那它仍然符合 SaaS 的定義,只不過是給每個客戶都提供了一整套獨立的基礎設施。

優點

  • 滿足強隔離需求:有些客戶對系統和資料的安全性有極高要求,期望能在完全獨立的環境中執行,避免與其他租戶的應用例項或資料混合。
  • 計費邏輯簡單:對 SaaS 服務商來說,資源使用計費可能很複雜,尤其是涉及計算、儲存和網路資源的場景。但在豎井模式下,每個租戶都是獨立環境,計費模式相對來說會簡單許多。
  • 降低故障影響面:因為每個客戶的系統都是獨立的,一個環境出問題不會影響其他客戶的使用體驗。

缺點

  • 規模化困難:每新增一個租戶就要建立一套獨立的環境,少量租戶還能應付,但面對成千上萬的租戶,管理和運營這些環境的難度會成倍增加。
  • 成本高:每個租戶單獨的環境讓機器成本上升,導致 SaaS 服務的盈利能力大打折扣。
  • 敏捷迭代受限:SaaS 的優勢之一是快速迭代響應市場需求,但豎井隔離模式讓這點變得不易操作,因為更新和管理每個租戶的獨立環境非常耗時、複雜。
  • 系統管理和監控複雜:在同一個環境中管理和監控基礎設施相對簡單,但每個租戶都獨立後,這種分散模式下的管理和監控會變得極具挑戰性。

共享模式

相信很多 SaaS 服務商會優先選擇共享模式,也就是多租戶共享一套基礎設施資源,這樣能讓 SaaS 軟體服務更加高效、敏捷、低成本。如圖6-4所示。

優勢

  • 高效管理:在共享模式下,可以集中管理和運營所有租戶,極大提升管理效率。同時,基礎設施的配置管理和監控也更加簡單。相比豎井模式,共享模式下的產品迭代更新速度更快。
  • 成本低:SaaS 服務商的成本中,基礎設施佔很大比例。在共享模式下,服務商可以根據租戶的實際資源使用情況動態調整系統,極大提高基礎設施的利用率,從而降低整體成本。

劣勢

  • 租戶相互影響:因為所有租戶共享同一套資源,如果有租戶大量佔用資源,可能會影響其他租戶的使用體驗。為了解決這一問題,通常需要在技術架構上設計一些限制措施(如限流、降級、伺服器隔離等),以控制影響範圍。
  • 租戶計費困難:在豎井模式下,很容易統計單個租戶的資源消耗。而在共享模式中,由於所有租戶共用資源,準確計算每個租戶的使用成本會更加複雜,需要更多的精力和技術投入來實現合理的計費。

分域隔離模式

傳統大企業往往更青睞私有化部署和個性化交付的傳統模式,因為它們需要更強的管控能力和更高的安全性。而中小企業因為預算有限,需求通常也更標準化,因此更傾向於選擇價格低、訂購方便的 SaaS 產品。

為滿足不同客戶的需求,還有一種融合了豎井模式和共享模式的分域隔離模式。如圖6-5所示。

在這種模式下,將資源細分為基礎域和專用域:基礎域使用共享模式,所有租戶共享一套資源;專用域則採用豎井模式,每個租戶擁有獨立的資源環境。

大多數中小客戶通常在基礎域中使用 SaaS 產品,而只有少數具備強付費能力並有強隔離需求的大客戶會選擇在專用域中執行 SaaS 產品。

需要注意的是,為避免產生多個產品版本,SaaS 服務商需確保基礎域和專用域的產品版本保持一致。

個性化需求儘可能透過 PaaS 平臺來實現,讓 ISV(獨立軟體開發商)參與建設。否則,一旦 SaaS 產品的標準化程度降低,多版本的維護將變得極其困難。

本文已收錄於,我的技術網站:tangshiye.cn 裡面有,演算法Leetcode詳解,面試八股文、BAT面試真題、簡歷模版、架構設計,等經驗分享。

相關文章