談?wù)剬?duì)多租戶系統(tǒng)的簡(jiǎn)要理解

zmL
10 評(píng)論 46302 瀏覽 179 收藏 14 分鐘

編輯導(dǎo)語(yǔ):如今很多企業(yè)都引入了SaaS產(chǎn)品,那多租戶也必然是SaaS的天然屬性之一;多租戶意味著應(yīng)用邏輯層面的隔離,如何好單租戶以及多租戶才是SaaS 應(yīng)用多租戶設(shè)計(jì)的核心關(guān)注點(diǎn);本文作者詳細(xì)介紹了多租戶系統(tǒng)的簡(jiǎn)要理解,我們一起來(lái)看一下。

SaaS領(lǐng)域一般都會(huì)涉及到租戶的概念,在設(shè)計(jì)SaaS體系時(shí),最重要的環(huán)節(jié)之一就是租戶系統(tǒng)的構(gòu)建了;本文從如何構(gòu)建多租戶系統(tǒng)出發(fā),簡(jiǎn)要闡述對(duì)多租戶系統(tǒng)的理解。

一、為什么要搭建多租戶系統(tǒng)

多租戶是SaaS領(lǐng)域的特有產(chǎn)物,探究何為多租戶需回歸到對(duì)SaaS的理解上。

SaaS服務(wù)是指部署在云上的,客戶可以按需購(gòu)買,并通過(guò)網(wǎng)絡(luò)請(qǐng)求就能獲取到的服務(wù);也就是說(shuō),在這樣的場(chǎng)景下,會(huì)有N個(gè)客戶同時(shí)使用同一套SaaS服務(wù)。

那么對(duì)SaaS服務(wù)供應(yīng)商來(lái)說(shuō),構(gòu)建SaaS體系需要完成兩部分工作:上層服務(wù)+底層多租戶系統(tǒng)。

上層服務(wù)是供應(yīng)商對(duì)外售賣的軟件服務(wù),其可以為客戶創(chuàng)造價(jià)值、為公司帶來(lái)營(yíng)收;而底層多租戶系統(tǒng)則是SaaS模式實(shí)現(xiàn)的具體方式,公司在對(duì)外售賣SaaS服務(wù)時(shí),需要考慮如何實(shí)現(xiàn)客戶之間的數(shù)據(jù)隔離、服務(wù)的權(quán)限控制、計(jì)費(fèi)管理等;因此需要引入多租戶概念來(lái)解決上述問(wèn)題。

通過(guò)多租戶系統(tǒng),公司可以更好的管理客戶和上層服務(wù),客戶也可以更好的使用軟件服務(wù)。

這也就是多租戶系統(tǒng)存在的意義了。

二、什么是多租戶系統(tǒng)

這里借用一下百度百科對(duì)多租戶的定義:多租戶技術(shù),是一種軟件架構(gòu)技術(shù),它是在探討與實(shí)現(xiàn)如何于多用戶的環(huán)境下共享相同的系統(tǒng)或程序組件,并且仍可確保各用戶間資料的隔離性;簡(jiǎn)單來(lái)說(shuō)是指一個(gè)單獨(dú)的實(shí)例可以為多個(gè)組織服務(wù)。

其中涉及到了很多的細(xì)節(jié)點(diǎn),需要進(jìn)行說(shuō)明一下,加深對(duì)多租戶的理解。

首先是對(duì)租戶概念的理解。租戶是指被賦予了SaaS服務(wù)使用權(quán)的企業(yè)組織,即客戶。

SaaS服務(wù)供應(yīng)商根據(jù)客戶購(gòu)買需求在多租戶系統(tǒng)中配置對(duì)應(yīng)的軟件服務(wù)版本,生成租戶賬號(hào),客戶拿到租戶賬號(hào)之后就可以使用SaaS服務(wù),那么該客戶就是該SaaS服務(wù)的一個(gè)租戶。

一般來(lái)說(shuō),租戶和客戶兩者是一對(duì)一的關(guān)系,客戶買了a軟件服務(wù),開(kāi)通了一個(gè)租戶賬號(hào),后來(lái)又買了b軟件服務(wù);此時(shí)只需在給之前的租戶賬號(hào)上配置b軟件服務(wù)的使用權(quán)就可以,不需要在重新建立租戶賬號(hào)。

由租戶又可延伸到用戶和角色這兩個(gè)概念,這三者是多租戶系統(tǒng)中賬號(hào)和權(quán)限體系的重要組成部分,這里面又是有非常大的可鉆研空間,后續(xù)會(huì)單獨(dú)補(bǔ)充。

其次是多租戶與單租戶的區(qū)別。租戶可分為多租戶和單租戶,簡(jiǎn)單一點(diǎn)理解就是——多租戶是多個(gè)客戶使用同一個(gè)實(shí)例,數(shù)據(jù)存儲(chǔ)在相同的位置,通過(guò)數(shù)據(jù)庫(kù)、數(shù)據(jù)表和tenantID字段三種方式進(jìn)行數(shù)據(jù)隔離,適合標(biāo)準(zhǔn)化程度較高的場(chǎng)景;單租戶是指多個(gè)客戶使用多個(gè)實(shí)例,各個(gè)客戶使用的實(shí)例和數(shù)據(jù)存儲(chǔ)單獨(dú)運(yùn)行,更適合定制化需求場(chǎng)景。

最后是多租戶系統(tǒng)與開(kāi)放平臺(tái)、aPaaS之間的區(qū)別;在查關(guān)于多租戶系統(tǒng)資料的時(shí)候,容易把這幾個(gè)平臺(tái)概念和作用搞混,特此進(jìn)行說(shuō)明。

1)aPaaS指應(yīng)用程序平臺(tái)即服務(wù),由PaaS衍生而來(lái),PaaS面向開(kāi)發(fā)者,提供軟件開(kāi)發(fā)所需的平臺(tái)環(huán)境(各類中間件等)或者以API、SDK的形式被客戶應(yīng)用調(diào)用;但由于應(yīng)用開(kāi)發(fā)成本和門檻較高,aPaaS出現(xiàn),其幫助客戶實(shí)現(xiàn)低代碼甚至0代碼開(kāi)發(fā)應(yīng)用

2)開(kāi)放平臺(tái)實(shí)際上是PaaS的一種表現(xiàn)形式,我們先來(lái)看一下開(kāi)放平臺(tái)的定義:軟件系統(tǒng)通過(guò)開(kāi)放API或函數(shù)使得外部程序可以增加該軟件系統(tǒng)的功能或者使用該軟件系統(tǒng)的資源;常見(jiàn)的開(kāi)放平臺(tái)如微信開(kāi)放平臺(tái)、支付寶開(kāi)放平臺(tái)、釘釘開(kāi)放平臺(tái)等。舉例來(lái)說(shuō),第三方可以調(diào)用微信對(duì)外開(kāi)放的微信登錄和微信支付接口來(lái)實(shí)現(xiàn)自己的服務(wù),或者,ISV在微信開(kāi)放平臺(tái)上開(kāi)發(fā)自己的小程序等

三者之間的區(qū)別是,aPaaS/PaaS/開(kāi)放平臺(tái)是軟件服務(wù)供應(yīng)商為第三方提供幫助/服務(wù)的工具,多租戶系統(tǒng)則是軟件服務(wù)商為自己的軟件服務(wù)提供幫助的工具。

三、如何搭建多租戶系統(tǒng)

區(qū)別于傳統(tǒng)的軟件供應(yīng),在服務(wù)模式上,SaaS服務(wù)采用按需訂購(gòu)模式;在底層設(shè)計(jì)上,SaaS服務(wù)核心點(diǎn)在于數(shù)據(jù)隔離與數(shù)據(jù)安全;那么多租戶系統(tǒng)作為SaaS模式實(shí)現(xiàn)的具體方式,自然也是關(guān)注上述幾個(gè)點(diǎn)。

具體來(lái)說(shuō),針對(duì)多租戶使用者(客戶和公司),多租戶系統(tǒng)主要解決以下幾個(gè)層面的需求:

  • 租戶注冊(cè)與身份認(rèn)證、賬號(hào)管理、權(quán)限配置;
  • 計(jì)費(fèi)方式、定價(jià)、收費(fèi)、支付、欠費(fèi);
  • 應(yīng)用增刪改查、代碼接入教程、應(yīng)用監(jiān)控、統(tǒng)計(jì)報(bào)表、消息中心;
  • 數(shù)據(jù)存儲(chǔ)方案、安全機(jī)制;

針對(duì)產(chǎn)品需求進(jìn)行剖析,由需求引申到功能,梳理出多租戶系統(tǒng)的基本功能清單。

備注:筆者負(fù)責(zé)的產(chǎn)品是基于SDK開(kāi)發(fā)出來(lái)的SaaS服務(wù),因此客戶使用服務(wù)時(shí)需配置應(yīng)用集成SDK,并非是提供SDK標(biāo)準(zhǔn)接口供第三方直接調(diào)用或二次開(kāi)發(fā);所以本次多租戶系統(tǒng)的搭建會(huì)和直接部署使用SaaS服務(wù)(如ERP、CRM)的有所不同,但又會(huì)和開(kāi)放平臺(tái)的搭建存在相似之處。

多租戶系統(tǒng)使用者是客戶和公司內(nèi)部管理員,可將多租戶系統(tǒng)的功能劃分為兩類:面向公司內(nèi)部管理員和面向客戶,兩類功能通過(guò)權(quán)限來(lái)進(jìn)行數(shù)據(jù)范圍訪問(wèn)控制。

面向公司內(nèi)部管理員的功能主要有:租戶管理、產(chǎn)品管理、計(jì)費(fèi)管理中的計(jì)費(fèi)方案、權(quán)限管理、運(yùn)營(yíng)管理;面向客戶的功能主要有:權(quán)限管理、應(yīng)用管理、運(yùn)營(yíng)管理、計(jì)費(fèi)管理中的充值、賬單等。

1. 租戶管理

客戶接入服務(wù)時(shí),需提供公司名稱、機(jī)構(gòu)代碼等信息,經(jīng)過(guò)審核后創(chuàng)建租戶賬號(hào),租戶賬號(hào)中的產(chǎn)品權(quán)限、功能權(quán)限等配置可根據(jù)客戶選擇接入的產(chǎn)品版本自動(dòng)配置;或者由商務(wù)線下溝通,線上手動(dòng)完成配置。

2. 產(chǎn)品管理、計(jì)費(fèi)管理

SaaS服務(wù)對(duì)外售賣時(shí)會(huì)分為多個(gè)不同的版本,比如按用量或按功能來(lái)劃分,因此一般需設(shè)計(jì)多種計(jì)費(fèi)方案,公司按照不同的計(jì)費(fèi)方案來(lái)配置產(chǎn)品版本和權(quán)限。

客戶使用不同的產(chǎn)品版本時(shí),涉及到購(gòu)買、賬戶充值、支付、賬單管理,以及續(xù)費(fèi)、欠費(fèi)、產(chǎn)品升級(jí)等。

3. 權(quán)限管理

客戶的公司在使用服務(wù)時(shí),總會(huì)涉及到權(quán)限問(wèn)題:哪些人只能使用服務(wù)的一個(gè)功能,哪些數(shù)據(jù)只能高層看等等,這時(shí)可以通過(guò)對(duì)角色和用戶進(jìn)行權(quán)限分配。

一般來(lái)說(shuō),先設(shè)置角色,對(duì)角色賦予權(quán)限,然后再將角色賦予到用戶上,這樣用戶就有了該角色所擁有的權(quán)限,需要進(jìn)行權(quán)限修改時(shí),只需修改角色的權(quán)限就可。

在用戶管理中可以導(dǎo)入客戶公司的組織架構(gòu),包括人員、崗位、部門等,對(duì)特定人員、崗位、部門賦予角色權(quán)限就可。

4. 應(yīng)用管理

有的SaaS服務(wù)需要先接入SDK進(jìn)行使用,這時(shí)就需要客戶先創(chuàng)建應(yīng)用,添加SDK代碼;公司提供SDK接入教程、接口規(guī)則、接入限制等;當(dāng)應(yīng)用調(diào)用服務(wù)時(shí),一般需要校驗(yàn)簽名、防止亂塞數(shù)據(jù)。

5. 運(yùn)營(yíng)管理

客戶和公司都需要對(duì)服務(wù)的使用情況進(jìn)行監(jiān)控,通過(guò)統(tǒng)計(jì)報(bào)表進(jìn)行可視化展示,當(dāng)出現(xiàn)異常情況或服務(wù)快到期時(shí),進(jìn)行消息提醒。

6. 數(shù)據(jù)隔離與安全

數(shù)據(jù)隔離和數(shù)據(jù)安全是圖中沒(méi)有體現(xiàn)出來(lái)的部分,但實(shí)際上體現(xiàn)在每一個(gè)使用環(huán)節(jié)。

數(shù)據(jù)隔離方式分為三類:獨(dú)立數(shù)據(jù)庫(kù)、共享數(shù)據(jù)庫(kù)通過(guò)數(shù)據(jù)表隔離、共享數(shù)據(jù)庫(kù)和表通過(guò)字段隔離;一般來(lái)說(shuō),數(shù)據(jù)隔離可以按租戶和租戶下面的應(yīng)用兩種方式進(jìn)行隔離。

數(shù)據(jù)安全包括應(yīng)用和敏感數(shù)據(jù)加密、身份認(rèn)證、權(quán)限控制、網(wǎng)絡(luò)監(jiān)控、數(shù)據(jù)傳輸、IP地址管控、黑白名單等。

四、多租戶系統(tǒng)的設(shè)計(jì)

有了功能模塊之后,如何將功能模塊串聯(lián)起來(lái),只有在實(shí)際的業(yè)務(wù)場(chǎng)景中跑的通的系統(tǒng)才有價(jià)值,這也能幫助我們對(duì)多租戶系統(tǒng)的設(shè)計(jì)有更全面的認(rèn)知。

一個(gè)典型的SaaS服務(wù)購(gòu)買流程是:免費(fèi)試用申請(qǐng)→demo體驗(yàn)→付費(fèi)購(gòu)買→使用服務(wù)→續(xù)費(fèi)or取消服務(wù)。

將這一過(guò)程展開(kāi),可得到下面具體的業(yè)務(wù)流程。

有幾個(gè)注意事項(xiàng):

1)多租戶系統(tǒng)和SaaS服務(wù)系統(tǒng)使用同一套賬號(hào)體系,同一用戶免費(fèi)試用和正式付費(fèi)階段賬號(hào)不變,通過(guò)權(quán)限控制訪問(wèn)范圍就可。

2)免費(fèi)試用階段可以給客戶提供兩個(gè)選擇,接入SDK和不接入SDK試用demo,后者是mock數(shù)據(jù)讓客戶體驗(yàn),但正式付費(fèi)后還是需要接入SDK。

3)SDK接入之后,會(huì)先在測(cè)試環(huán)境跑通,在發(fā)布到生產(chǎn)環(huán)境,兩個(gè)環(huán)境通過(guò)參數(shù)進(jìn)行區(qū)分。

4)計(jì)費(fèi)方案中期限和使用額度應(yīng)該配置在租戶賬號(hào)下還是配置在具體的應(yīng)用下?分不同情況而定:

一般來(lái)說(shuō),對(duì)于按量(調(diào)用次數(shù)、人數(shù)等)售賣的SaaS服務(wù)來(lái)說(shuō),期限和使用額度配置在租戶賬號(hào)下,也就是說(shuō),SaaS服務(wù)供應(yīng)商不需要關(guān)心客戶具體是怎么使用的服務(wù)的,只需要在租戶層面控制服務(wù)的使用期限和使用額度就好。

另外一種情況,對(duì)于按以單個(gè)應(yīng)用為服務(wù)整體不可拆分的SaaS服務(wù)來(lái)說(shuō),使用期限配置在應(yīng)用層面,比如騰訊云的移動(dòng)應(yīng)用安全產(chǎn)品。

5)免費(fèi)試用到期和正式付費(fèi)后不再續(xù)費(fèi)的租戶,一般會(huì)由商務(wù)進(jìn)行跟進(jìn),如果完成不了轉(zhuǎn)化,對(duì)于這些到期賬號(hào)下的數(shù)據(jù),一般在保存1個(gè)月后自動(dòng)刪除

五、后記

至此,一個(gè)簡(jiǎn)單的多租戶系統(tǒng)就搭建起來(lái)了,可大概窺見(jiàn)全貌;但是,實(shí)際上,這套多租戶體系中仍然有非常多需要深挖的細(xì)節(jié),比如權(quán)限管理、計(jì)費(fèi)方案設(shè)計(jì)等,后續(xù)會(huì)出文章補(bǔ)充。

文中如有不正確的地方歡迎指正,也歡迎同行一起溝通交流呀~

 

本文由 @細(xì)嗅薔薇 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自 Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 請(qǐng)教下流程圖里:某些場(chǎng)景下如果是個(gè)人用戶注冊(cè)個(gè)人模式,也是以租戶的形式給TA開(kāi)通嗎?

    來(lái)自浙江 回復(fù)
  2. 已點(diǎn)贊三連,催更后續(xù)的權(quán)限設(shè)計(jì),計(jì)費(fèi)方案設(shè)計(jì)??

    來(lái)自浙江 回復(fù)
  3. 寫的真好,讓我一下子就明白了

    來(lái)自北京 回復(fù)
  4. 寫的很好 關(guān)于相似的找了很久的資料,謝謝~

    來(lái)自上海 回復(fù)
  5. 有沒(méi)有關(guān)于業(yè)務(wù)實(shí)體、組織實(shí)體的嵌套例子呢。比如:多業(yè)務(wù)、多組織及組織間與組織內(nèi)數(shù)據(jù)隔離,權(quán)限分配等

    來(lái)自陜西 回復(fù)
  6. 關(guān)于權(quán)限管理部分我有一些疑問(wèn)。這里的權(quán)限管理是管理的租戶在自己的系統(tǒng)里的權(quán)限嗎?如果把租戶在系統(tǒng)的權(quán)限放在了租戶管理系統(tǒng),是否意味著租戶本身是無(wú)法對(duì)權(quán)限進(jìn)行調(diào)配的呢?

    來(lái)自江蘇 回復(fù)
  7. 期待后續(xù)更新

    來(lái)自廣東 回復(fù)
  8. 有多租戶開(kāi)源項(xiàng)目推薦嗎?

    來(lái)自北京 回復(fù)
  9. 最近也是要考慮租戶用戶這塊的產(chǎn)品設(shè)計(jì),寫的很清晰,圖畫(huà)的很清晰,贊??

    回復(fù)
    1. ??

      回復(fù)