多租户设计

1,简单说说多租户

多租户是指同一套软件服务可以供多个用户使用,并且保证这多个用户的数据相互隔离。通俗理解就是电商平台中入驻的商家,这多个商家只需要通过平台审核,就可以快速地使用平台功能,并且商家之间的数据相互隔离,不影响查看彼此的数据,彼此之间互不影响。

多租户是SAAS(软件即服务)中的一个概念,他的意义在于降低资源成本,方便迭代,能提供大量的结构化数据,创造二次价值。

2,个人的一些经历与总结

个人的项目在多租户上项目经历有点特殊,做的第一个产品就是基于云端部署的多租户,租户层级只有平台与商家两级,产品形态上平台与商家的界限很模糊,或者说区别不大,与商家相比,平台更多的就是能看到所有商家的商品,多了商家列表这样的平台管理模块;

后来自己又做了租户层级更多的电商产品,在商家与平台之间增加了高级别管理单位,租户树状结构更复杂,其中不同的层级会涉及差异化的功能。

最近半年做的产品是本地部署,单用户的形态,后续会逐步向云端多租户形式转变。

基于上述经历,有如下体会:

(1)与开发沟通时,如何避免一头雾水?

如果产品即将转换为平台,做多租户功能,因为多租户已经是一个成熟的设计,第一时间和技术经理讲明做的就是多租户设计,可以节省双方的沟通时间;同时自己也要预估未来的业务规模,数据的保密性(隔离性)要求,多租户核心的特点便是数据隔离。

实现数据隔离的方式有三种:

a,独立数据库:隔离级别最高,安全性最高,成本也最高,一般用于政府,运营商这样对数据安全性要求高的用户。

b,共享数据库,隔离数据架构:安全性较高,数据故障时,恢复比较困难,同时会影响其他租户,如果需要跨租户统计,存在一定困难。

c,共享数据库,共享数据架构:维护和购置成本最低,允许的每个数据库支持的租户最多,但是隔离级别最低,安全最低,数据备份与恢复也最困难。

由于之前不清楚多租户数据隔离与业务需求的关系,导致在这一块花费了大量的沟通。

(2)没有规则,意味着混乱

当租户出现层级时,不同层级的租户对应的现实业务角色不一样,需要的功能有相同的,也有不同的。理论上租户的树状结构,提供了从上(根)到下(叶子)的数据结构;而权限在业务呈现为菜单项的“配置”,租户的树状结构和权限这两项组成了整个产品的功能数据骨架。“顺拐”地想,设计一款产品,直接按“根节点”的租户,然后赋予所有权限,这样一个最全的模板,其他“租户‘,只是这个大而全的”租户“模板的子集就行了,这样思考理论上可行,实际上,这样不从业务出发思考,会带来的产品的难用,甚至是不可用。设计之初,定义好,每个层级的业务含义,每个层级拥有哪些功能,这样设计,不仅可以使业务更清晰,也会大大降低项目成本,而产品的灵活度,并不会因为这样层级与业务的映射关系而下降。

(3)租户之下的数据再隔离

租户本身的树状关系,是可以很好地实现上下级,平级之间的数据隔离。但单个租户下还会存在不同业务角色,不同业务角色有差异化数据查看的需求。自己由于“顺拐”地受从“租户树”的上下级天然关系影响,所以在单个租户下的数据权限思考一开始会有些想不明白,租户树的树状结构数据权限不能完全适用于单个租户下的数据隔离,彼此之间会有交集。

最后终于从业务层想通,单个租户之下,还会存在数据隔离的需求,而这个需求会因为行业不同而各不一样,与租户本身的层级关系更没有必然关系。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容