1,简单说说多租户
多租户是指同一套软件服务可以供多个用户使用,并且保证这多个用户的数据相互隔离。通俗理解就是电商平台中入驻的商家,这多个商家只需要通过平台审核,就可以快速地使用平台功能,并且商家之间的数据相互隔离,不影响查看彼此的数据,彼此之间互不影响。
多租户是SAAS(软件即服务)中的一个概念,他的意义在于降低资源成本,方便迭代,能提供大量的结构化数据,创造二次价值。
2,个人的一些经历与总结
个人的项目在多租户上项目经历有点特殊,做的第一个产品就是基于云端部署的多租户,租户层级只有平台与商家两级,产品形态上平台与商家的界限很模糊,或者说区别不大,与商家相比,平台更多的就是能看到所有商家的商品,多了商家列表这样的平台管理模块;
后来自己又做了租户层级更多的电商产品,在商家与平台之间增加了高级别管理单位,租户树状结构更复杂,其中不同的层级会涉及差异化的功能。
最近半年做的产品是本地部署,单用户的形态,后续会逐步向云端多租户形式转变。
基于上述经历,有如下体会:
(1)与开发沟通时,如何避免一头雾水?
如果产品即将转换为平台,做多租户功能,因为多租户已经是一个成熟的设计,第一时间和技术经理讲明做的就是多租户设计,可以节省双方的沟通时间;同时自己也要预估未来的业务规模,数据的保密性(隔离性)要求,多租户核心的特点便是数据隔离。
实现数据隔离的方式有三种:
a,独立数据库:隔离级别最高,安全性最高,成本也最高,一般用于政府,运营商这样对数据安全性要求高的用户。
b,共享数据库,隔离数据架构:安全性较高,数据故障时,恢复比较困难,同时会影响其他租户,如果需要跨租户统计,存在一定困难。
c,共享数据库,共享数据架构:维护和购置成本最低,允许的每个数据库支持的租户最多,但是隔离级别最低,安全最低,数据备份与恢复也最困难。
由于之前不清楚多租户数据隔离与业务需求的关系,导致在这一块花费了大量的沟通。
(2)没有规则,意味着混乱
当租户出现层级时,不同层级的租户对应的现实业务角色不一样,需要的功能有相同的,也有不同的。理论上租户的树状结构,提供了从上(根)到下(叶子)的数据结构;而权限在业务呈现为菜单项的“配置”,租户的树状结构和权限这两项组成了整个产品的功能数据骨架。“顺拐”地想,设计一款产品,直接按“根节点”的租户,然后赋予所有权限,这样一个最全的模板,其他“租户‘,只是这个大而全的”租户“模板的子集就行了,这样思考理论上可行,实际上,这样不从业务出发思考,会带来的产品的难用,甚至是不可用。设计之初,定义好,每个层级的业务含义,每个层级拥有哪些功能,这样设计,不仅可以使业务更清晰,也会大大降低项目成本,而产品的灵活度,并不会因为这样层级与业务的映射关系而下降。
(3)租户之下的数据再隔离
租户本身的树状关系,是可以很好地实现上下级,平级之间的数据隔离。但单个租户下还会存在不同业务角色,不同业务角色有差异化数据查看的需求。自己由于“顺拐”地受从“租户树”的上下级天然关系影响,所以在单个租户下的数据权限思考一开始会有些想不明白,租户树的树状结构数据权限不能完全适用于单个租户下的数据隔离,彼此之间会有交集。
最后终于从业务层想通,单个租户之下,还会存在数据隔离的需求,而这个需求会因为行业不同而各不一样,与租户本身的层级关系更没有必然关系。