SAAS架构设计

AWS

下面这个PDF已经说的很清楚了

https://docs.aws.amazon.com/zh_cn/wellarchitected/latest/saas-lens/wellarchitected-saas-lens.pdf

落地-资源模式

池模式(共享资源),简仓模式(独立资源)

落地-核心组件

租户公共模块(租户管理,用户鉴权,用户/租户对应关系,租户KPI,计量,计费,租户服务指标/趋势分析)

租户初始化管道将创建命名空间、部署服务(池模式,简仓模式,其他3种)

租户上下文装载和路由(nginx根据jwt解析其中租户负载部分,进行动态路由),后端K8S(pod集群安全策略PodSecurityPolicy进行访问限制)

租户上下文,在微服务中的传递,应该无感知化(mybatis-metaObjectHandler),开发人员只需要专注业务,而不应该考虑租户的维度
在微服务调用中把JWT,放header进行租户上下文传递,是比较推荐的做法,但是需要考虑JWT负载区,存放的授权信息(注意避免泄露不必要信息)

租户个性化

自定义选项来实现(租户个性化选项,系统预设)
插件模式(系统未预设,但可以灵活插件支持)
功能标记(租户功能清单),租户和SAAS服务的多对多关系

租户隔离

用户需要和租户形成映射关系(可能存在多对多的情况)
API 的入口点隔离
主题
• 筒仓隔离
(优点:隔离级别高,可满足个性化)
(缺点:敏捷差,自动装载机制复杂,去中心化复杂)
• 池隔离
(优点:敏捷,成本)
(缺点:嘈杂邻居,成本跟踪(计数不表示资源占有率))
• 桥接模式
混合隔离(简仓,池一起)
• 分层隔离
系统设计分层,有些层不需要进行隔离,都属于公共,对于资源数据层进行隔离
• 有针对性的隔离
微服务级别进行隔离,租户和微服务的对应进行资源隔离

扩展-数据保护

备份,利用基座进行数据隔离(hdfs,minio等对象存储桶策略),K8S平台的POD 安全策略PodSecurityPolicy

扩展-可靠性保障

资源限制(通过计量进行控制,利用队列进行排队,VIP租户单独队列),预留资源空闲, 并发感知,丢弃提示策略

扩展-计量维度

计算、存储、数据库、网络,访问次数

扩展-统计分析

资源占用和账单的分析比列