新零售SaaS架構(gòu):多租戶系統(tǒng)架構(gòu)設(shè)計(jì)

5 評(píng)論 21906 瀏覽 181 收藏 15 分鐘

多租戶是SaaS領(lǐng)域的特有產(chǎn)物,租戶是指使用SaaS系統(tǒng)的客戶,做好多租戶系統(tǒng)架構(gòu)設(shè)計(jì)需要了解其相關(guān)概念。本文介紹了多租戶的概念,對(duì)比傳統(tǒng)軟件模式與SaaS模式的區(qū)別,并通過(guò)分析多租戶的三種隔離模式,逐步梳理出多租戶的系統(tǒng)架構(gòu)設(shè)計(jì),希望對(duì)你有所啟發(fā)。

一、什么是多租戶?

多租戶是SaaS領(lǐng)域的特有產(chǎn)物,在SaaS服務(wù)中,租戶是指使用SaaS系統(tǒng)的客戶,租戶不同于用戶,例如,B端SaaS產(chǎn)品,用戶可能是某個(gè)組織下的員工,但整個(gè)企業(yè)組織是SaaS系統(tǒng)的租戶。多租戶技術(shù)是一種軟件架構(gòu)技術(shù),可以實(shí)現(xiàn)多個(gè)租戶共享系統(tǒng)實(shí)例,并且租戶間能夠?qū)崿F(xiàn)數(shù)據(jù)與行為的隔離。

二、傳統(tǒng)軟件模式 VS SaaS模式

傳統(tǒng)軟件項(xiàng)目一般是指,面向客戶開(kāi)發(fā)一套特定的軟件系統(tǒng),并部署在獨(dú)立的環(huán)境中,通常是企業(yè)內(nèi)部環(huán)境。而SaaS模式,是將軟件服務(wù)部署到云端環(huán)境,可以面向不同的客戶提供相同的軟件服務(wù)。

三、SaaS多租戶隔離模式

對(duì)于SaaS模式,多租戶間的資源隔離是非常基礎(chǔ)的能力,出于成本和運(yùn)營(yíng)效率考慮,SaaS服務(wù)商需要構(gòu)建多租戶可同時(shí)訪問(wèn)軟件的環(huán)境,不同租戶雖然訪問(wèn)同一套SaaS產(chǎn)品服務(wù),但資源訪問(wèn)需要嚴(yán)格隔離開(kāi)。

1. SaaS資源隔離包含幾個(gè)層次

  1. 第一層是SaaS系統(tǒng)底層所涉及到的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)等資源的隔離。
  2. 第二層是系統(tǒng)基礎(chǔ)數(shù)據(jù)的隔離,主要包括組織,用戶,角色,權(quán)限,產(chǎn)品能力授權(quán)關(guān)系等。
  3. 第三層是系統(tǒng)使用過(guò)程中,各類業(yè)務(wù)動(dòng)態(tài)數(shù)據(jù)的隔離,例如業(yè)務(wù)單據(jù)、操作記錄等。

多租戶架構(gòu)主要是解決第一層的隔離問(wèn)題,即計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)等資源的隔離。為了實(shí)現(xiàn)多租戶隔離架構(gòu),我們先要搞清楚常見(jiàn)的幾種多租戶隔離模式。

2. 豎井隔離模式

有些SaaS服務(wù)商會(huì)選擇豎井隔離模式,即每個(gè)租戶都運(yùn)行在隔離的一套資源中。有人會(huì)說(shuō),這不就是傳統(tǒng)軟件模式嗎,為什么會(huì)是SaaS模式呢?但如果這些豎井式的資源,擁有標(biāo)準(zhǔn)化的租戶身份識(shí)別、入駐流程、計(jì)費(fèi)體系、部署流程、運(yùn)營(yíng)流程,那邊它依然是SaaS模式,只不過(guò)每個(gè)客戶都有一套端到端的基礎(chǔ)設(shè)施。

優(yōu)勢(shì):

  • 滿足強(qiáng)隔離需求:一些客戶為了系統(tǒng)和數(shù)據(jù)的安全性,可能提出非常嚴(yán)格的隔離需求,期望軟件產(chǎn)品能夠部署在一套完全獨(dú)立的環(huán)境中,不和其他租戶的應(yīng)用實(shí)例、數(shù)據(jù)放在一起。
  • 計(jì)費(fèi)邏輯簡(jiǎn)單:SaaS服務(wù)商需要針對(duì)租戶使用資源進(jìn)行計(jì)費(fèi),對(duì)于復(fù)雜的業(yè)務(wù)場(chǎng)景,計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)資源間的關(guān)系同樣也會(huì)非常復(fù)雜,計(jì)費(fèi)模型是很有挑戰(zhàn)的,但在豎井模式下,計(jì)費(fèi)模型相對(duì)來(lái)說(shuō)是比較簡(jiǎn)單的。
  • 降低故障影響面:因?yàn)槊總€(gè)客戶的系統(tǒng)都部署在自己的環(huán)境中,如果其中一個(gè)環(huán)境出現(xiàn)故障,并不會(huì)影響其他客戶使用軟件服務(wù)。

劣勢(shì):

  • 規(guī)?;瘑?wèn)題:由于租戶的SaaS環(huán)境是獨(dú)立的,所以每入駐一個(gè)租戶,就需要?jiǎng)?chuàng)建和運(yùn)營(yíng)一套SaaS環(huán)境,如果只是少量的租戶,還可能可以管理,但如果是成千上萬(wàn)的租戶,管理和運(yùn)營(yíng)這些環(huán)境將會(huì)是非常大的挑戰(zhàn)。
  • 成本問(wèn)題:每個(gè)租戶都有獨(dú)立的環(huán)境,花費(fèi)在單個(gè)客戶上的成本將非常高,會(huì)大幅削弱SaaS軟件服務(wù)的盈利能力。
  • 敏捷迭代問(wèn)題:SaaS模式的一個(gè)優(yōu)勢(shì)是能夠快速響應(yīng)市場(chǎng)需求,迭代產(chǎn)品功能。但豎井隔離策略會(huì)阻礙這種敏捷迭代能力,因?yàn)楦?、管理、支撐這些租戶的SaaS環(huán)境,會(huì)變得非常復(fù)雜和低效。
  • 系統(tǒng)管理與監(jiān)控:在同一套環(huán)境中,對(duì)部署的基礎(chǔ)設(shè)施進(jìn)行管理與監(jiān)控,是較為簡(jiǎn)單的。但每個(gè)租戶都有獨(dú)立的環(huán)境,在這種非中心化的模式下,對(duì)每個(gè)租戶的基礎(chǔ)設(shè)施進(jìn)行管理與監(jiān)控,同樣也是非常復(fù)雜、困難的。

3. 共享模式

相信很多SaaS服務(wù)商會(huì)優(yōu)先選擇共享模式,即多租戶共享一套基礎(chǔ)設(shè)施資源,這樣能讓SaaS軟件服務(wù)更加高效、敏捷、低成本。

優(yōu)勢(shì):

  • 高效管理:在共享策略下,能夠集中化地管理、運(yùn)營(yíng)所有租戶,管理效率非常高。同時(shí),對(duì)基礎(chǔ)設(shè)施配置管理、監(jiān)控,也將更加容易。相比豎井策略,產(chǎn)品的迭代更新會(huì)更快。
  • 成本低:SaaS服務(wù)商的成本結(jié)構(gòu)中,很大一塊是基礎(chǔ)設(shè)施的成本。在共享模型下,服務(wù)商可以根據(jù)租戶們的實(shí)際資源負(fù)載情況,動(dòng)態(tài)伸縮系統(tǒng),這樣基礎(chǔ)設(shè)施的利用率將非常高。

劣勢(shì):

  • 租戶相互影響:由于所有租戶共享一套資源,當(dāng)其中一個(gè)租戶大量占用機(jī)器資源,其他租戶的使用體驗(yàn)很可能受到影響,在這種場(chǎng)景下,需要在技術(shù)架構(gòu)上設(shè)計(jì)一些限制措施(限流、降級(jí)、服務(wù)器隔離等),讓影響面可控。
  • 租戶計(jì)費(fèi)困難:在豎井模型下,非常容易統(tǒng)計(jì)租戶的資源消耗。然而,在共享模型下,由于所有租戶共享一套資源,需要投入更多的精力統(tǒng)計(jì)單個(gè)租戶的合理費(fèi)用。

四、分域隔離模式

傳統(tǒng)大企業(yè)更喜歡私有化部署、個(gè)性化交付的傳統(tǒng)模式,因?yàn)樗麄冃枰鼜?qiáng)的管控和更高的安全性。然而,中小企業(yè)付費(fèi)能力有限,需求往往也更加標(biāo)準(zhǔn)化,所以更喜歡價(jià)格更低的、訂購(gòu)更簡(jiǎn)單的SaaS產(chǎn)品。為了滿足不同客戶的需求,還有一種混合了豎井模型與共享模型的模式,即分域隔離模式。在該模式下,會(huì)細(xì)分基礎(chǔ)域、專用域,基礎(chǔ)域是使用共享模型,所有租戶共享一套資源;而專用域是使用豎井模型,每個(gè)租戶都有獨(dú)立的資源環(huán)境。對(duì)于大多數(shù)中小客戶來(lái)說(shuō),他們都是在基礎(chǔ)域環(huán)境使用SaaS產(chǎn)品,只有少量的大客戶會(huì)在專用域使用SaaS產(chǎn)品,通常他們付費(fèi)能力強(qiáng),有強(qiáng)烈的強(qiáng)隔離需求。但需要注意的是,為了避免多套產(chǎn)品版本出現(xiàn),SaaS服務(wù)商需要保證基礎(chǔ)域、專用域的產(chǎn)品版本一致,個(gè)性化的部分盡可能通過(guò)構(gòu)建PaaS平臺(tái),讓ISV參與建設(shè)。否則,一旦SaaS產(chǎn)品的標(biāo)準(zhǔn)化程度降低,后續(xù)各版本的維護(hù)將變成災(zāi)難。

五、多租戶系統(tǒng)的定位

了解各種多租戶隔離模式后,我們來(lái)總結(jié)下多租戶系統(tǒng)的定位。多租戶系統(tǒng)是為了滿足多用戶使用一套產(chǎn)品,并實(shí)現(xiàn)用戶間的數(shù)據(jù)與行為隔離,但根據(jù)用戶需求不同,可以共享或隔離軟硬件資源,系統(tǒng)架構(gòu)上能夠靈活支持多種隔離模式。

多租戶系統(tǒng)需要具備的能力:

  • 多個(gè)租戶支持共享一套云資源,如計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)資源等。單個(gè)租戶也可以獨(dú)占一套云資源。
  • 多個(gè)租戶間能夠?qū)崿F(xiàn)數(shù)據(jù)與行為的隔離,能夠?qū)ψ鈶暨M(jìn)行分權(quán)分域控制。
  • 租戶內(nèi)部能夠支持基于組織架構(gòu)的管理,可以對(duì)產(chǎn)品能力進(jìn)行授權(quán)和管理。
  • 不同的產(chǎn)品能力可以根據(jù)客戶需求,支持運(yùn)行在不同的云資源上。

六、多租戶概念模型

1. 多租戶核心概念

  • 租戶:一般指一個(gè)企業(yè)客戶或個(gè)人客戶,租戶之間數(shù)據(jù)與行為是隔離的。
  • 用戶:在某個(gè)租戶內(nèi)的具體使用者,可以通過(guò)使用賬戶名、密碼等登錄信息,登錄到SaaS系統(tǒng)使用軟件服務(wù)。
  • 組織:如果租戶是一個(gè)企業(yè)客戶,通常會(huì)擁有自己的組織架構(gòu)。
  • 員工:是指組織內(nèi)部具體的某位員工。
  • 解決方案:為了解決客戶的某類型業(yè)務(wù)問(wèn)題,SaaS服務(wù)商將產(chǎn)品與服務(wù)組合在一起,為商家提供整體的打包方案。
  • 產(chǎn)品能力:指的是SaaS服務(wù)商對(duì)客戶售賣的產(chǎn)品應(yīng)用,特指能夠幫助客戶實(shí)現(xiàn)端到端場(chǎng)景解決方案閉環(huán)的能力。
  • 資源域:用來(lái)運(yùn)行1個(gè)或多個(gè)產(chǎn)品應(yīng)用的一套云資源環(huán)境。
  • 云資源:SaaS產(chǎn)品一般都部署在各種云平臺(tái)上,例如阿里云、騰訊云、華為云等。對(duì)這些云平臺(tái)提供的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)、容器等資源,抽象為云資源。

2. 概念模型設(shè)計(jì)

  • SaaS平臺(tái)可以創(chuàng)建與管理多個(gè)平臺(tái)用戶、多個(gè)租戶、多個(gè)資源域。
  • 單個(gè)平臺(tái)用戶可以關(guān)聯(lián)到多個(gè)租戶下,例如,平臺(tái)用戶張三,可以是租戶A的用戶,也可以是租戶B的用戶。單個(gè)租戶下可以擁有多個(gè)用戶。
  • 單個(gè)租戶可以訂購(gòu)多個(gè)解決方案,解決方案可以包多個(gè)產(chǎn)品能力,產(chǎn)品能力運(yùn)行在某個(gè)資源域上。
  • 組織單元間有上下級(jí)關(guān)系,單個(gè)組織下可以有多個(gè)員工,員工與單個(gè)用戶進(jìn)行綁定。

七、多租戶核心場(chǎng)景

1. 租戶內(nèi)部模型關(guān)系

對(duì)SaaS產(chǎn)品來(lái)說(shuō),租戶是最頂層的概念,租戶內(nèi)部擁有組織、用戶、產(chǎn)品能力、云資源等模型,租戶就像租了一套大房子,其他模型都是房子內(nèi)部的家具或設(shè)施。

2. 租戶身份識(shí)別

在各種隔離模式下,識(shí)別租戶身份,獲取租戶的資源配置,是非常關(guān)鍵的。當(dāng)一個(gè)用戶登錄SaaS系統(tǒng)后,系統(tǒng)會(huì)返回租戶上下文信息,上下文會(huì)包含用戶綁定的租戶信息,以及隔離模式。租戶上下文信息會(huì)被附加在每一次系統(tǒng)交互中,貫穿整個(gè)系統(tǒng)調(diào)用鏈路,讓上游調(diào)用方知道路由到哪些下游資源。

3. 租戶計(jì)費(fèi)計(jì)量管理

在豎井隔離模式下,由于資源本身就是隔離的,所以可以根據(jù)占用的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)資源來(lái)計(jì)費(fèi)計(jì)量,邏輯相對(duì)簡(jiǎn)單。在共享模式下,計(jì)費(fèi)計(jì)量就比較復(fù)雜,我們要能準(zhǔn)確地采集到各個(gè)租戶對(duì)實(shí)際資源的使用情況,一般會(huì)根據(jù)請(qǐng)求并發(fā)量、存儲(chǔ)容量、數(shù)據(jù)對(duì)象數(shù)量等數(shù)據(jù)來(lái)進(jìn)行組合計(jì)費(fèi)。

八、多租戶系統(tǒng)應(yīng)用架構(gòu)

總結(jié)

本文首先介紹了什么是多租戶,對(duì)比傳統(tǒng)軟件模式與SaaS模式的區(qū)別。通過(guò)分析多租戶的三種隔離模式,逐步梳理出多租戶的系統(tǒng)架構(gòu)設(shè)計(jì),包括概念模型、場(chǎng)景推演、應(yīng)用架構(gòu)等。

本文由 @湯師爺 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

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

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 您好,我想問(wèn)一下,有頂層租戶一說(shuō)嘛?比如,平臺(tái)目前有3個(gè)租戶,頂層租戶可以在平臺(tái)上看到3個(gè)租戶所有的數(shù)據(jù)

    來(lái)自北京 回復(fù)
  2. 很棒的文章,支持一下,對(duì)我最近的業(yè)務(wù)很有參考性

    來(lái)自江蘇 回復(fù)
  3. 作者用的什么畫(huà)圖工具呀,非常不錯(cuò)

    來(lái)自山東 回復(fù)
  4. 轉(zhuǎn)發(fā)了

    來(lái)自廣東 回復(fù)
  5. 太棒了

    來(lái)自江蘇 回復(fù)