前言
2018年,这是不平凡的一年;互联网行业的中台战略、会员经济等模式如火如荼,同时也逐渐地走入我们公司每个人的视野。在南海集团的战略规划背景下,当时我所在的公司作为集团的研发中心,承担了对会员 SaaS 系统的建设。很庆幸当时我参与了这个项目,因此也提升了我对 SaaS 模式的基本认知、及技术架构的精进。借此机会,我把这段经历的主要内容分享给大家。
SaaS(Software-as-a-Service),意思为软件即服务,即通过网络提供软件服务。SaaS 平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得 Saas 平台供应商提供的服务。SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。常见的产品有 Gmail、PayPal、淘宝、Shopify。
相关概念:
- PaaS(Platform as a Service),是指平台即服务。是一种云计算服务,提供运算平台与解决方案服务;抽象掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层。提供的服务,例如:操作系统、数据库、中间件、动态运行库等底层软件服务。
- IaaS(Infrastructure as a Service),即基础设施即服务。指把 IT 基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。提供的服务,例如:服务器、存储、网络、CDN 等基础设施。
举个例子,假如要开发一个基于微信小程序商城系统。
IaaS 模式:需要购买服务器,数据库、域名,并且开发小程序商城。
PaaS模式:微信小程序提供云开发服务,免去了服务器、存储、域名等,只需开发程序即可。
SaaS 模式:微信提供商城程序,只需开通即可。
二、会员 SaaS 系统
架构示意图
架构描述
- 主控端分为租户系统、平台系统。
- 租户系统管理该租户下的数据及子系统,例如:会员数据、积分数据等。
- 平台系统管理所有的租户,例如:租户的创建、初始化、服务控制等。
- 每个租户以系统套件的方式,部署在 K8s 集群服务中;每个组件都容器化运行。
- 每个租户系统套件,都被服务调度系统管理和约束;且定期做服务健康检查。
- 每创建一个新的租户,服务调度系统会自动构建、部署新的租户系统套件,包括:组件的部署、数据库的创建等。
- 每个租户的数据都是单独的数据库进行存储,定期会被同步到大数据中心仓库。
- 每个租户的客户端,可以直接通过子域名调用到租户系统套件服务。
- 子域名的配置,是通过域名泛解析的方式实现;可直接解析到指定的套件系统上。
租户数据隔离模式
模式一:每个租户一个数据库
每个租户配置一个独立的数据库。
优点:
- 数据隔离级别高、安全性好。
- 简化数据模型,可满足不同租户的特定需求。
- 某个租户出现故障,可快速回滚。
- 便于支持私有化部署。
缺点:
- 数据库数量多,维护成本及数据库费用成本高。
- 设计、实现的难度比较高。
模式二:租户共享数据库,隔离数据结构
多个租户共享一个数据库,每个租户一个数据表,例如:tenant_a、tenant_b。
优点:
- 逻辑数据隔离,每个数据库可支持多租户。
- 硬件成本相对较低。
缺点:
- 数据库出现故障,恢复难度大;会对其他的租户数据造成影响。
- 跨租户进行数据统计会变得复杂。
模式三:租户共享数据库,共享数据结构
多个租户共享一个数据库,且共用一个数据表,通过租户 ID tenant_id 区分。
优点:
- 硬件成本低。
- 理论支持租户数量最大、运营成本相对较低。
缺点:
- 数据隔离级别最低、安全性最低。
- 数据恢复难度最大、备份数据困难。
小结:
- 模式一,称为桶模式;模式二、模式三,称为池模式。
- 数据的安全性要求极高的业务,或属于政府监管类的系统,最好是采用模式一。
- 成本控制比较严、预算有限的业务,可采用模式二、三。
- 当时我们公司的架构师在 Info Q 的《深圳全球架构师峰会》上与嘉宾还讨论了关于数据存储模式的问题。
安全策略
- 系统部署方面,尽量选择有基础保障能力和安全防护能力的云平台;云平台相对于普通的 IDC 机房来说,具有高可用性、安全性及弹性扩容的优势。
- 服务器运维方面,建立运维审核机制、安全堡垒机、访问控制、防攻击策略等。
- 租户系统方面,支持双因子认证、增强密码复杂度、提升验证码破击难度等。
总结
- 对于 Saas 系统的客户来说,客户比较关心自己的数据能不能得到有效的保护。
- 数据存储方式的选型上,在系统的设计之初需要着重的权衡。
- 服务调度及监控系统,在 SaaS 系统中尤为重要,是系统稳定性的根本保障。
- SaaS 系统需要具备一定的安全防护能力,来保障客户的服务、数据的安全。
- SaaS 系统是项长期工程,需要逐步的迭代和演化。
结束语
人生的每一段经历,可以很简单、很平凡;但是需要有一定的有收获,无论大与小,无论好与坏;会员 SaaS 系统的建设,使用到了很多的技术栈、技术架构。因对我来说收获颇多,扩充了我的技术视野。希望这次分享,可以让大家对 SaaS 系统有一些了解。
每一次的总结,是为了下一次更好的开始;与君共勉,感谢大家聆听!
欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。