SaaS架构与数据隔离的几种方案

27 阅读3分钟

目录

  1. 三种架构模式
  2. 四种数据隔离方式
  3. 不同数据隔离方式架构模式的演进
  4. 总结

1. 三种架构模式

1. 独立架构

  • 优点
    1. 满足强隔离要求
    2. 故障影响面低
    3. 计费逻辑简单
    4. 可个性化交付
    5. 合同到期后销毁资源容易
  • 缺点 不利于规模化发展,当客户越多时,维护成本、硬件成本、监控等都会变得更贵更复杂,无法最大利益化。

2. 云架构模式

优点

  1. 维护简单
  2. 规模越大成本更低

缺点

  1. 租户共用资源,相互影响
  2. 数据泄漏风险高
  3. 不适合个性化交互

3. 混合架构模式

混合模式 = 独立模式 + 云模式,根据客户情况自由选择。

优点

  1. 可满足不同客户的需求
  2. 通常大客户金主会要求独立模式,他们是大金主,大概率会有定制开发
  3. 能更好的均衡投入与产出

四种云架构的数据隔离方式

1. 独立数据库

  1. 数据安全性高
  2. 后期转独立部署容易
  3. 维护表结构、数据困难
  4. 数据汇总、同步复杂(汇总是为了给SaaS管理平台看租户的部分数据,如所有租户的商品)

2. 同库不同表模式

  1. 数据安全性较高
  2. 后期转独立部署容易度一般,
  3. 维护表结构、数据困难
  4. 无数据汇总、同步

3. 同库同表模式

  1. 数据安全性较差
  2. 后期转独立部署容困难
  3. 维护表结构、数据容易
  4. 无数据汇总、同步

4. sharding库 + 同表模式

  1. 数据安全性一般
  2. 后期转独立部署容一般
  3. 维护表结构、数据较容易(有一部分同表模式减少了数据库数量)
  4. 数据汇总同步复杂度一般

四种数据隔离方式的总结

方案数据隔离安全性后期结构维护数据汇总同步开发复杂度灵活性
独立数据库困难困难一般
同库不同表较高困难简单一般一般
同库同表简单简单简单
sharding库+同表模式一般一般一般一般较高

不同隔离方式在不同架构的演进

1. 云模式 --> 独立模式

独立模式+独立库:数据库不变,创建新服务层,配置好流量转发即可

独立模式+同库同表:将租户的表迁移到新库,创建新服务层,配置好流量转发即可

独立模式+同库不同表:清洗自己的数据形成一个新库,创建新服务层,配置好流量转发即可

独立模式+sharding库+同表

  • sharding的租户单独数据库,同上面的独立库处理方案一样
  • sharding的是租户是共用:清洗自己的数据形成一个新库,创建新服务层,配置好流量转发即可

2. 独立模式 --> 云模式

独立云模式+独立库:配置好流量转发与服务数据库配置即可

独立云模式+同库不表:将独立库清洗成独立表,迁移到云模式数据库,配置好流量转发与服务数据库配置即可

总结

适合自己的,才是最好的方案,需要综合考虑公司的业务、人员、未来方向等。我司做的电商SaaS业务,最终采用了混合架构模式 + sharding库+同表,它是一个折中的方案,在满足不同客户要求的同时,能平衡成本与灵活度。


下一篇分享sharding库+同表在Golang的entgo框架中的具体落地方案。