談談對多租戶系統的簡要理解
編輯導語:如今很多企業都引入了SaaS產品,那多租戶也必然是SaaS的天然屬性之一;多租戶意味著應用邏輯層面的隔離,如何好單租戶以及多租戶才是SaaS 應用多租戶設計的核心關注點;本文作者詳細介紹了多租戶系統的簡要理解,我們一起來看一下。
SaaS領域一般都會涉及到租戶的概念,在設計SaaS體系時,最重要的環節之一就是租戶系統的構建了;本文從如何構建多租戶系統出發,簡要闡述對多租戶系統的理解。
一、為什么要搭建多租戶系統
多租戶是SaaS領域的特有產物,探究何為多租戶需回歸到對SaaS的理解上。
SaaS服務是指部署在云上的,客戶可以按需購買,并通過網絡請求就能獲取到的服務;也就是說,在這樣的場景下,會有N個客戶同時使用同一套SaaS服務。
那么對SaaS服務供應商來說,構建SaaS體系需要完成兩部分工作:上層服務+底層多租戶系統。
上層服務是供應商對外售賣的軟件服務,其可以為客戶創造價值、為公司帶來營收;而底層多租戶系統則是SaaS模式實現的具體方式,公司在對外售賣SaaS服務時,需要考慮如何實現客戶之間的數據隔離、服務的權限控制、計費管理等;因此需要引入多租戶概念來解決上述問題。
通過多租戶系統,公司可以更好的管理客戶和上層服務,客戶也可以更好的使用軟件服務。
這也就是多租戶系統存在的意義了。
二、什么是多租戶系統
這里借用一下百度百科對多租戶的定義:多租戶技術,是一種軟件架構技術,它是在探討與實現如何于多用戶的環境下共享相同的系統或程序組件,并且仍可確保各用戶間資料的隔離性;簡單來說是指一個單獨的實例可以為多個組織服務。
其中涉及到了很多的細節點,需要進行說明一下,加深對多租戶的理解。
首先是對租戶概念的理解。租戶是指被賦予了SaaS服務使用權的企業組織,即客戶。
SaaS服務供應商根據客戶購買需求在多租戶系統中配置對應的軟件服務版本,生成租戶賬號,客戶拿到租戶賬號之后就可以使用SaaS服務,那么該客戶就是該SaaS服務的一個租戶。
一般來說,租戶和客戶兩者是一對一的關系,客戶買了a軟件服務,開通了一個租戶賬號,后來又買了b軟件服務;此時只需在給之前的租戶賬號上配置b軟件服務的使用權就可以,不需要在重新建立租戶賬號。
由租戶又可延伸到用戶和角色這兩個概念,這三者是多租戶系統中賬號和權限體系的重要組成部分,這里面又是有非常大的可鉆研空間,后續會單獨補充。
其次是多租戶與單租戶的區別。租戶可分為多租戶和單租戶,簡單一點理解就是——多租戶是多個客戶使用同一個實例,數據存儲在相同的位置,通過數據庫、數據表和tenantID字段三種方式進行數據隔離,適合標準化程度較高的場景;單租戶是指多個客戶使用多個實例,各個客戶使用的實例和數據存儲單獨運行,更適合定制化需求場景。
最后是多租戶系統與開放平臺、aPaaS之間的區別;在查關于多租戶系統資料的時候,容易把這幾個平臺概念和作用搞混,特此進行說明。
1)aPaaS指應用程序平臺即服務,由PaaS衍生而來,PaaS面向開發者,提供軟件開發所需的平臺環境(各類中間件等)或者以API、SDK的形式被客戶應用調用;但由于應用開發成本和門檻較高,aPaaS出現,其幫助客戶實現低代碼甚至0代碼開發應用
2)開放平臺實際上是PaaS的一種表現形式,我們先來看一下開放平臺的定義:軟件系統通過開放API或函數使得外部程序可以增加該軟件系統的功能或者使用該軟件系統的資源;常見的開放平臺如微信開放平臺、支付寶開放平臺、釘釘開放平臺等。舉例來說,第三方可以調用微信對外開放的微信登錄和微信支付接口來實現自己的服務,或者,ISV在微信開放平臺上開發自己的小程序等
三者之間的區別是,aPaaS/PaaS/開放平臺是軟件服務供應商為第三方提供幫助/服務的工具,多租戶系統則是軟件服務商為自己的軟件服務提供幫助的工具。
三、如何搭建多租戶系統
區別于傳統的軟件供應,在服務模式上,SaaS服務采用按需訂購模式;在底層設計上,SaaS服務核心點在于數據隔離與數據安全;那么多租戶系統作為SaaS模式實現的具體方式,自然也是關注上述幾個點。
具體來說,針對多租戶使用者(客戶和公司),多租戶系統主要解決以下幾個層面的需求:
- 租戶注冊與身份認證、賬號管理、權限配置;
- 計費方式、定價、收費、支付、欠費;
- 應用增刪改查、代碼接入教程、應用監控、統計報表、消息中心;
- 數據存儲方案、安全機制;
針對產品需求進行剖析,由需求引申到功能,梳理出多租戶系統的基本功能清單。
備注:筆者負責的產品是基于SDK開發出來的SaaS服務,因此客戶使用服務時需配置應用集成SDK,并非是提供SDK標準接口供第三方直接調用或二次開發;所以本次多租戶系統的搭建會和直接部署使用SaaS服務(如ERP、CRM)的有所不同,但又會和開放平臺的搭建存在相似之處。
多租戶系統使用者是客戶和公司內部管理員,可將多租戶系統的功能劃分為兩類:面向公司內部管理員和面向客戶,兩類功能通過權限來進行數據范圍訪問控制。
面向公司內部管理員的功能主要有:租戶管理、產品管理、計費管理中的計費方案、權限管理、運營管理;面向客戶的功能主要有:權限管理、應用管理、運營管理、計費管理中的充值、賬單等。
1. 租戶管理
客戶接入服務時,需提供公司名稱、機構代碼等信息,經過審核后創建租戶賬號,租戶賬號中的產品權限、功能權限等配置可根據客戶選擇接入的產品版本自動配置;或者由商務線下溝通,線上手動完成配置。
2. 產品管理、計費管理
SaaS服務對外售賣時會分為多個不同的版本,比如按用量或按功能來劃分,因此一般需設計多種計費方案,公司按照不同的計費方案來配置產品版本和權限。
客戶使用不同的產品版本時,涉及到購買、賬戶充值、支付、賬單管理,以及續費、欠費、產品升級等。
3. 權限管理
客戶的公司在使用服務時,總會涉及到權限問題:哪些人只能使用服務的一個功能,哪些數據只能高層看等等,這時可以通過對角色和用戶進行權限分配。
一般來說,先設置角色,對角色賦予權限,然后再將角色賦予到用戶上,這樣用戶就有了該角色所擁有的權限,需要進行權限修改時,只需修改角色的權限就可。
在用戶管理中可以導入客戶公司的組織架構,包括人員、崗位、部門等,對特定人員、崗位、部門賦予角色權限就可。
4. 應用管理
有的SaaS服務需要先接入SDK進行使用,這時就需要客戶先創建應用,添加SDK代碼;公司提供SDK接入教程、接口規則、接入限制等;當應用調用服務時,一般需要校驗簽名、防止亂塞數據。
5. 運營管理
客戶和公司都需要對服務的使用情況進行監控,通過統計報表進行可視化展示,當出現異常情況或服務快到期時,進行消息提醒。
6. 數據隔離與安全
數據隔離和數據安全是圖中沒有體現出來的部分,但實際上體現在每一個使用環節。
數據隔離方式分為三類:獨立數據庫、共享數據庫通過數據表隔離、共享數據庫和表通過字段隔離;一般來說,數據隔離可以按租戶和租戶下面的應用兩種方式進行隔離。
數據安全包括應用和敏感數據加密、身份認證、權限控制、網絡監控、數據傳輸、IP地址管控、黑白名單等。
四、多租戶系統的設計
有了功能模塊之后,如何將功能模塊串聯起來,只有在實際的業務場景中跑的通的系統才有價值,這也能幫助我們對多租戶系統的設計有更全面的認知。
一個典型的SaaS服務購買流程是:免費試用申請→demo體驗→付費購買→使用服務→續費or取消服務。
將這一過程展開,可得到下面具體的業務流程。
有幾個注意事項:
1)多租戶系統和SaaS服務系統使用同一套賬號體系,同一用戶免費試用和正式付費階段賬號不變,通過權限控制訪問范圍就可。
2)免費試用階段可以給客戶提供兩個選擇,接入SDK和不接入SDK試用demo,后者是mock數據讓客戶體驗,但正式付費后還是需要接入SDK。
3)SDK接入之后,會先在測試環境跑通,在發布到生產環境,兩個環境通過參數進行區分。
4)計費方案中期限和使用額度應該配置在租戶賬號下還是配置在具體的應用下?分不同情況而定:
一般來說,對于按量(調用次數、人數等)售賣的SaaS服務來說,期限和使用額度配置在租戶賬號下,也就是說,SaaS服務供應商不需要關心客戶具體是怎么使用的服務的,只需要在租戶層面控制服務的使用期限和使用額度就好。
另外一種情況,對于按以單個應用為服務整體不可拆分的SaaS服務來說,使用期限配置在應用層面,比如騰訊云的移動應用安全產品。
5)免費試用到期和正式付費后不再續費的租戶,一般會由商務進行跟進,如果完成不了轉化,對于這些到期賬號下的數據,一般在保存1個月后自動刪除
五、后記
至此,一個簡單的多租戶系統就搭建起來了,可大概窺見全貌;但是,實際上,這套多租戶體系中仍然有非常多需要深挖的細節,比如權限管理、計費方案設計等,后續會出文章補充。
文中如有不正確的地方歡迎指正,也歡迎同行一起溝通交流呀~
本文由 @細嗅薔薇 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
請教下流程圖里:某些場景下如果是個人用戶注冊個人模式,也是以租戶的形式給TA開通嗎?
已點贊三連,催更后續的權限設計,計費方案設計??
寫的真好,讓我一下子就明白了
寫的很好 關于相似的找了很久的資料,謝謝~
有沒有關于業務實體、組織實體的嵌套例子呢。比如:多業務、多組織及組織間與組織內數據隔離,權限分配等
關于權限管理部分我有一些疑問。這里的權限管理是管理的租戶在自己的系統里的權限嗎?如果把租戶在系統的權限放在了租戶管理系統,是否意味著租戶本身是無法對權限進行調配的呢?
期待后續更新
有多租戶開源項目推薦嗎?
最近也是要考慮租戶用戶這塊的產品設計,寫的很清晰,圖畫的很清晰,贊??
??