多租戶SaaS系統怎麽設計,下面是我總結的幾點原則,供大家參考:
1、租戶間是資源隔離的。相互無法訪問對方的數據。
我們目前做到邏輯隔離,通過表裏面增加租戶ID的方式來實現多租戶的支持。當然我們自然想做到物理隔離,相應的成本也會多很多。這塊大家必須有租戶間資源是隔離的概念。為了能更好的理解整個SaaS系統的設計初衷,我們可以認為租戶間資源是物理隔離的。
2、組織也是壹種資源,各租戶都有自己的組織。
每個租戶是有各自的資源信息的,這些資源是租戶私有的。比如:角色信息、用戶信息、組織信息等。
3、租戶可以通過組織進行資源劃分。
租戶和組織這塊有很多相近的地方,這塊需要深刻的理解下。我個人是這麽理解的:租戶是對全部資源物理層面的隔離,而組織是對租戶私有資源邏輯上的隔離。
4、租戶不支持多層級,租戶有不同的類型。
為了降低系統的復雜性,我們建議租戶不支持多層級,只能建壹級,租戶是有類型的,通過類型區分不同的業務場景,租戶間是平等的。
比如:XXX運營方也是獨立的租戶,與其它用戶無本質區別。
5、通過組織的層級結構,來實現用戶的數據權限。
這塊也是我們做的最大改動:輕租戶,重組織。發揮組織的天然業務隔離的特性,通過組織樹來實現資源數據權限。
6、運營側只管理到租戶級別,不應該涉及到租戶的私有資源。
組織是租戶的私有資源,運營管理側自然不應該去管理他,也不方便管理。
來張圖,方便大家的理解:
為了方便,可以默認將租戶的信息映射到組織上,做為組織的L0級。也可不映射,查詢的時候自動加上。租戶新建的時候,租戶的默認管理員是掛在本賬戶下的,此時還沒有組織的信息。