多租戶(hù) SaaS 產(chǎn)品的數(shù)據(jù)邊界如何劃分
對(duì)于 SaaS 產(chǎn)品多租戶(hù)設(shè)計(jì),某些和平臺(tái)相關(guān)的業(yè)務(wù)數(shù)據(jù)到底該放在平臺(tái)側(cè)還是租戶(hù)側(cè)才是最合適最穩(wěn)妥的呢?這篇文章,我們來(lái)看看:
前天在 SaaS 架構(gòu)設(shè)計(jì)交流群有群友提出來(lái)一個(gè)問(wèn)題,他們的 SaaS 平臺(tái)有一個(gè)對(duì)所有商戶(hù)開(kāi)放的門(mén)戶(hù),門(mén)戶(hù)中有一個(gè)商品中心模塊,這個(gè)模塊允許所有商戶(hù)發(fā)布商品,并且發(fā)布的商品允許其他商戶(hù)查看。同時(shí)允許商戶(hù)自己在商品中心訂購(gòu)商品,他糾結(jié)的是這里涉及兩部分?jǐn)?shù)據(jù),一部分?jǐn)?shù)據(jù)是商戶(hù)私有的訂購(gòu)數(shù)據(jù),一部分是平臺(tái)所有商戶(hù)共享的商品數(shù)據(jù),這兩部分?jǐn)?shù)據(jù)要不要做租戶(hù)間的隔離?
對(duì)于 SaaS 產(chǎn)品多租戶(hù)設(shè)計(jì),確實(shí)會(huì)經(jīng)常遇到如何界定數(shù)據(jù)邊界的問(wèn)題,典型的案例是做數(shù)據(jù)庫(kù)隔離設(shè)計(jì)的方案中(即每個(gè)租戶(hù)獨(dú)享一個(gè)數(shù)據(jù)庫(kù),參考:講講 SaaS 平臺(tái)的多租戶(hù)設(shè)計(jì)),某些和平臺(tái)相關(guān)的業(yè)務(wù)數(shù)據(jù)到底該放在平臺(tái)側(cè)還是租戶(hù)側(cè)。本篇分享一下個(gè)人對(duì)這種多租戶(hù)設(shè)計(jì)的數(shù)據(jù)邊界的個(gè)人理解。
一、基本原則
先說(shuō)一個(gè)基本原則,這個(gè)也應(yīng)該是 SaaS 產(chǎn)品劃分?jǐn)?shù)據(jù)邊界的首要原則,那就是“以不影響租戶(hù)業(yè)務(wù)運(yùn)行為首要原則”。聽(tīng)起來(lái)比較難理解,我們來(lái)看一般 SaaS 產(chǎn)品的數(shù)據(jù)和應(yīng)用支撐形式。
如上圖所示,通常 SaaS 產(chǎn)品會(huì)分為租戶(hù)應(yīng)用和平臺(tái)側(cè)應(yīng)用,其中租戶(hù)應(yīng)用也就是租戶(hù)日常使用的各類(lèi)業(yè)務(wù)應(yīng)用,平臺(tái)側(cè)應(yīng)用主要是給 SaaS 企業(yè)自己運(yùn)營(yíng)使用。平臺(tái)側(cè)應(yīng)用通常只會(huì)使用平臺(tái)數(shù)據(jù),如果需要租戶(hù)數(shù)據(jù)(比如對(duì)租戶(hù)的日常使用進(jìn)行埋點(diǎn)分析)也應(yīng)該是將這些數(shù)據(jù)放到平臺(tái)側(cè)來(lái)存儲(chǔ)。租戶(hù)應(yīng)用則主要是使用租戶(hù)自有的數(shù)據(jù)庫(kù),但是也有可能會(huì)使用部分平臺(tái)數(shù)據(jù),比如一些整個(gè)平臺(tái)通用的數(shù)據(jù)(例如字典數(shù)據(jù))。
這里平臺(tái)數(shù)據(jù)通常會(huì)是單獨(dú)的數(shù)據(jù)庫(kù)服務(wù)器存儲(chǔ),這就會(huì)產(chǎn)生一個(gè)問(wèn)題,如果平臺(tái)數(shù)據(jù)庫(kù)服務(wù)器出現(xiàn)故障,就有可能導(dǎo)致租戶(hù)的業(yè)務(wù)受影響。因此,我們應(yīng)當(dāng)盡可能降低這種風(fēng)險(xiǎn),而降低這種風(fēng)險(xiǎn)最有效的手段就是盡量讓租戶(hù)應(yīng)用少依賴(lài)平臺(tái)數(shù)據(jù),甚至是不依賴(lài)。
二、實(shí)際案例
我們來(lái)看一個(gè)具體的案例,在涉及在線(xiàn)支付的業(yè)務(wù)中(例如電商 SaaS,商戶(hù)可以在線(xiàn)銷(xiāo)售商品給 C 端用戶(hù)),每個(gè)租戶(hù)都會(huì)有自己支付參數(shù)(如支付渠道、商戶(hù)號(hào)、密鑰等等)。系統(tǒng)自然會(huì)對(duì)接多家支付渠道,因此會(huì)有一個(gè)支付中心(技術(shù)上叫支付網(wǎng)關(guān),參考:接一個(gè)第三方支付,開(kāi)發(fā)說(shuō)要2個(gè)月?)。在租戶(hù)支付的時(shí)候,從簡(jiǎn)化支付中心設(shè)計(jì)來(lái)說(shuō),可以將每個(gè)租戶(hù)的支付參數(shù)存儲(chǔ)在平臺(tái)數(shù)據(jù)中,這樣就不需要分租戶(hù)從不同的數(shù)據(jù)庫(kù)讀取支付參數(shù)。然而,這里有個(gè)問(wèn)題,就是如果平臺(tái)數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題,意味著整個(gè) SaaS 平臺(tái)的所有租戶(hù)的在線(xiàn)支付業(yè)務(wù)都會(huì)受影響。這種事情出現(xiàn)的概率雖然低,但是只要出現(xiàn)一次都會(huì)造成無(wú)法挽回的損失 —— 大家可以想象一下,假設(shè)支付寶出現(xiàn)故障,會(huì)給淘寶的交易額帶來(lái)多大的損失。
所以說(shuō),雖然我們說(shuō)要追求簡(jiǎn)潔的設(shè)計(jì)、降低成本,但是也要考慮風(fēng)險(xiǎn),尤其是那種可能導(dǎo)致所有租戶(hù)業(yè)務(wù)受阻的重大風(fēng)險(xiǎn)。這也是我之前在一篇文章中說(shuō)過(guò)的,SaaS 產(chǎn)品要追求穩(wěn)定性。
那么像上面這種情況怎么處理呢?我們說(shuō)“不要將所有雞蛋放到1個(gè)籃子里”,這個(gè)原則對(duì)于 SaaS 產(chǎn)品同樣適用。我們可以將這些支付參數(shù)分別放到租戶(hù)數(shù)據(jù)中,雖然支付中心的設(shè)計(jì)開(kāi)發(fā)變得復(fù)雜了,但是單個(gè)租戶(hù)數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題只會(huì)影響該租戶(hù)自身,而不會(huì)影響其他租戶(hù)。這樣的話(huà),實(shí)際上就是將大的風(fēng)險(xiǎn)給分化了,可以降低整個(gè) SaaS 平臺(tái)的風(fēng)險(xiǎn),提高穩(wěn)定性。
三、如何劃分?jǐn)?shù)據(jù)邊界
通過(guò)前面講的原則和例子,我們?cè)诰唧w設(shè)計(jì) SaaS產(chǎn)品數(shù)據(jù)層的時(shí)候,就可以判斷該如何劃分?jǐn)?shù)據(jù)邊界了。當(dāng)數(shù)據(jù)可放在租戶(hù)側(cè)也可放在平臺(tái)側(cè)的時(shí)候,我們要考慮是響應(yīng)數(shù)據(jù)庫(kù)出現(xiàn)故障的風(fēng)險(xiǎn),選擇風(fēng)險(xiǎn)低、出故障后影響面小的方案。
再回到開(kāi)篇講的問(wèn)題,實(shí)際上這個(gè)問(wèn)題和數(shù)據(jù)隔離并沒(méi)有太大關(guān)系,因?yàn)樯唐分行暮蜕虘?hù)訂購(gòu)數(shù)據(jù)(即訂單)本質(zhì)上其實(shí)是平臺(tái)為租戶(hù)提供的撮合交易服務(wù)。這種情況下,平臺(tái)其實(shí)就類(lèi)似閑魚(yú),而商戶(hù)就是閑魚(yú)的用戶(hù)。閑魚(yú)的用戶(hù)發(fā)布的商品數(shù)據(jù)自然是統(tǒng)一放到平臺(tái)側(cè)的,這樣平臺(tái)才方便對(duì)所有其他用戶(hù)展示和篩選。對(duì)于用戶(hù)自己購(gòu)買(mǎi)的商品訂單,平臺(tái)開(kāi)放訂單管理功能供用戶(hù)查看即可。
這個(gè)問(wèn)題里,實(shí)際上要搞清楚的是兩個(gè)問(wèn)題:平臺(tái)商戶(hù)能查看哪些數(shù)據(jù)?能管理哪些數(shù)據(jù)?比如商品中心的數(shù)據(jù)允許所有商戶(hù)查看,比如商家自己發(fā)布的商品允許管理(編輯、上下架、刪除等),比如可以管理自己的訂單(取消、支付、評(píng)價(jià)等)。
四、總結(jié)
SaaS 產(chǎn)品因?yàn)槭欠?wù)于企業(yè)客戶(hù),也就意味著我們平臺(tái)上面的企業(yè)的日常業(yè)務(wù)運(yùn)轉(zhuǎn)依賴(lài)于我們的產(chǎn)品。一旦我們的產(chǎn)品出現(xiàn)了問(wèn)題,有可能大面積地影響到客戶(hù)的業(yè)務(wù)運(yùn)轉(zhuǎn)。因此,追求產(chǎn)品穩(wěn)定運(yùn)行是 SaaS 產(chǎn)品應(yīng)該優(yōu)先追求的目標(biāo)。對(duì)于數(shù)據(jù)邊界的劃分,同樣也應(yīng)該遵循追求穩(wěn)定、降低風(fēng)險(xiǎn)的原則。
專(zhuān)欄作家
產(chǎn)品海豚灣,公眾號(hào):產(chǎn)品海豚灣(ID:pm-dophin-bay),人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家。技術(shù)出身的產(chǎn)品經(jīng)理,從事過(guò) C 端產(chǎn)品和 B 端產(chǎn)品設(shè)計(jì),擅長(zhǎng) SaaS 產(chǎn)品設(shè)計(jì)、產(chǎn)品架構(gòu)設(shè)計(jì)和需求分析。負(fù)責(zé)的B 端產(chǎn)品完成了完整的從0到1,從1到 N 的過(guò)程,成功簽約行業(yè)百?gòu)?qiáng)客戶(hù)。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
該文觀(guān)點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!