SaaS架构设计

1、是什么

SaaS:就是软件即服务(Softwire as a Service),核心是将软件产品服务化,客户无需自建IT基础设施,通过按需购买,即可享受到软件产品及后续维护服务。

2、优缺点

优点缺点
拿来即用,无需维护;按需购买,降低成本;随处可用;客户数据安全性、敏感性问题;

3、成熟度模型

3.1、成熟度级别

成熟度可配置高性能伸缩性
L1xxx
L2xx
L3x
L4

L1是定制开发,与以前ASP架构类似

3.2、成熟度演进方向

多租户
高性能
可配置
可伸缩

3.2.1、多租户

Multi-Tenant,是SaaS架构的基本特征
三种多租户模式

模式优点缺点
独立数据库数据隔离级别高;容易扩展个性化表结构;数据故障影响范围较小维护成本、采购成本很高
共享数据库,隔离数据架构(schema)数据隔离基本较高;单个数据库可支持多租户,降低成本跨租户数据统计难度提升;数据库故障会影响到多个租户
共享数据库,共享数据架构维护成本、采购成本最低;数据隔离级别最低;开发设计时需多做数据安全隔离控制(tenant_id);数据故障容易影响所有租户

3.2.2、高性能

保证租户体验

维度策略
Web层高性能CDN、请求压缩、静态化、缓存
应用层高性能缓存、异步
数据库高性能合适的索引、避免复杂sql、避免大量数据表连接

3.2.3、可配置

适配租户个性化需求
1、数据可配置

方案描述
定制字段在一张表中为不同租户扩展个性化字段,如果字段不多可以接受,但是多了就会破坏表结构,冗余很多无意义的字段
预分配字段建表时预留一些没有特殊含义的扩展字段。那么对于同一个预留字段,不同租户存储的数据值、类型都可能不一样,会导致在程序中做很多类型转换的处理
字段扩展表新建一张扩展表,包含租户ID、表名、数据ID、字段名称、字段值、字段类型等,可以做无限个性化扩展。但是操作表关联复杂度会提升一些

2、功能可配置

维度描述
原子功能设计独立的、有业务价值的单个功能,如用户查询、用户新增等
功能包设计根据业务场景将原子功能组装成功功能模块,如用户管理、订单管理
产品包设计将多个功能包组合为可销售的产品包,为租户提供完整的产品价值,如标准版、专业版本、钻石版

3、界面可配置

维度描述
菜单按需配置菜单
页面个性化登录页、主页
页面元素风格、图标

4、流程可配置

维度描述
通用流程模板预定义常规流程模板,如请假、入职
个性化流程集成工作流引擎,租户可图形化配置对应流程

3.2.4、伸缩性

伸缩性(Scalaable)也可理解为性能、容量的扩展性,目的是能支持海量租户

维度描述
服务器扩展分布式、集群
数据库扩展主从读写分离、垂直业务切分、水平表切分

4、其他能力

4.1、安全性

1、应用安全

维度描述
身份认证集中式认证(如OAuth2认证中心)、非集中式认证、混合认证
权限管理RBAC(Role-Based Access Control )基于角色的访问控制,权限与角色关联,角色赋给用户
日志记录用户操作日志、API请求响应日志
应用监控内存、磁盘、cpu、攻击监控

2、数据安全

维度描述
数据隔离确保租户间数据无污染
数据加密重要数据加密存储(如密码)、传输(如业务数据)
数据脱敏敏感字过滤(如黄赌毒)、关键字脱敏(如名称、证件号、手机)
数据量监控监控容量、及时扩容,确保系统稳定性

3、网络安全

维度描述
安全传输https、报文混合加密(如RSA+AES)
攻击防御防护墙、安全过滤器、黑白名单
网络监控7*24监控,及时告警

4.2、开放平台

提供openAPI能力,进行输出

4.3、离线功能

需考虑页面本地缓存、数据本地存储、数据同步、数据提交冲突等问题


版权声明:本文为shaixinxin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。