经验分享之会员 SaaS 系统

前言

2018年,这是不平凡的一年;互联网行业的中台战略、会员经济等模式如火如荼,同时也逐渐地走入我们公司每个人的视野。在南海集团的战略规划背景下,当时我所在的公司作为集团的研发中心,承担了对会员 SaaS 系统的建设。很庆幸当时我参与了这个项目,因此也提升了我对 SaaS 模式的基本认知、及技术架构的精进。借此机会,我把这段经历的主要内容分享给大家。

SaaS(Software-as-a-Service),意思为软件即服务,即通过网络提供软件服务。SaaS 平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得 Saas 平台供应商提供的服务。SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。常见的产品有 Gmail、PayPal、淘宝、Shopify。

相关概念:

  1. PaaS(Platform as a Service),是指平台即服务。是一种云计算服务,提供运算平台与解决方案服务;抽象掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层。提供的服务,例如:操作系统、数据库、中间件、动态运行库等底层软件服务。
  2. IaaS(Infrastructure as a Service),即基础设施即服务。指把 IT 基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。提供的服务,例如:服务器、存储、网络、CDN 等基础设施。

举个例子,假如要开发一个基于微信小程序商城系统。
IaaS 模式:需要购买服务器,数据库、域名,并且开发小程序商城。
PaaS模式:微信小程序提供云开发服务,免去了服务器、存储、域名等,只需开发程序即可。
SaaS 模式:微信提供商城程序,只需开通即可。

二、会员 SaaS 系统

架构示意图

架构描述

  1. 主控端分为租户系统、平台系统。
  2. 租户系统管理该租户下的数据及子系统,例如:会员数据、积分数据等。
  3. 平台系统管理所有的租户,例如:租户的创建、初始化、服务控制等。
  4. 每个租户以系统套件的方式,部署在 K8s 集群服务中;每个组件都容器化运行。
  5. 每个租户系统套件,都被服务调度系统管理和约束;且定期做服务健康检查。
  6. 每创建一个新的租户,服务调度系统会自动构建、部署新的租户系统套件,包括:组件的部署、数据库的创建等。
  7. 每个租户的数据都是单独的数据库进行存储,定期会被同步到大数据中心仓库。
  8. 每个租户的客户端,可以直接通过子域名调用到租户系统套件服务。
  9. 子域名的配置,是通过域名泛解析的方式实现;可直接解析到指定的套件系统上。

租户数据隔离模式

模式一:每个租户一个数据库
每个租户配置一个独立的数据库。

优点:

  • 数据隔离级别高、安全性好。
  • 简化数据模型,可满足不同租户的特定需求。
  • 某个租户出现故障,可快速回滚。
  • 便于支持私有化部署。

缺点:

  • 数据库数量多,维护成本及数据库费用成本高。
  • 设计、实现的难度比较高。

模式二:租户共享数据库,隔离数据结构
多个租户共享一个数据库,每个租户一个数据表,例如:tenant_a、tenant_b。

优点:

  • 逻辑数据隔离,每个数据库可支持多租户。
  • 硬件成本相对较低。

缺点:

  • 数据库出现故障,恢复难度大;会对其他的租户数据造成影响。
  • 跨租户进行数据统计会变得复杂。

模式三:租户共享数据库,共享数据结构
多个租户共享一个数据库,且共用一个数据表,通过租户 ID tenant_id 区分。

优点:

  • 硬件成本低。
  • 理论支持租户数量最大、运营成本相对较低。

缺点:

  • 数据隔离级别最低、安全性最低。
  • 数据恢复难度最大、备份数据困难。

小结:

  1. 模式一,称为桶模式;模式二、模式三,称为池模式。
  2. 数据的安全性要求极高的业务,或属于政府监管类的系统,最好是采用模式一。
  3. 成本控制比较严、预算有限的业务,可采用模式二、三。
  4. 当时我们公司的架构师在 Info Q 的《深圳全球架构师峰会》上与嘉宾还讨论了关于数据存储模式的问题。

安全策略

  1. 系统部署方面,尽量选择有基础保障能力和安全防护能力的云平台;云平台相对于普通的 IDC 机房来说,具有高可用性、安全性及弹性扩容的优势。
  2. 服务器运维方面,建立运维审核机制、安全堡垒机、访问控制、防攻击策略等。
  3. 租户系统方面,支持双因子认证、增强密码复杂度、提升验证码破击难度等。

总结

  1. 对于 Saas 系统的客户来说,客户比较关心自己的数据能不能得到有效的保护。
  2. 数据存储方式的选型上,在系统的设计之初需要着重的权衡。
  3. 服务调度及监控系统,在 SaaS 系统中尤为重要,是系统稳定性的根本保障。
  4. SaaS 系统需要具备一定的安全防护能力,来保障客户的服务、数据的安全。
  5. SaaS 系统是项长期工程,需要逐步的迭代和演化。

结束语

人生的每一段经历,可以很简单、很平凡;但是需要有一定的有收获,无论大与小,无论好与坏;会员 SaaS 系统的建设,使用到了很多的技术栈、技术架构。因对我来说收获颇多,扩充了我的技术视野。希望这次分享,可以让大家对 SaaS 系统有一些了解。

每一次的总结,是为了下一次更好的开始;与君共勉,感谢大家聆听!


欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值