经验分享之会员 SaaS 系统
经验分享之会员 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、架构描述
2.1、主控端分为租户系统、平台系统。
2.2、租户系统管理该租户下的数据及子系统,例如:会员数据、积分数据等。
2.3、平台系统管理所有的租户,例如:租户的创建、初始化、服务控制等。
2.4、每个租户以系统套件的方式,部署在 K8s 集群服务中;每个组件都容器化运行。
2.5、每个租户系统套件,都被服务调度系统管理和约束;且定期做服务健康检查。
2.6、每创建一个新的租户,服务调度系统会自动构建、部署新的租户系统套件,包括:组件的部署、数据库的创建等。
2.7、每个租户的数据都是单独的数据库进行存储,定期会被同步到大数据中心仓库。
2.8、每个租户的客户端,可以直接通过子域名调用到租户系统套件服务。
2.9、子域名的配置,是通过域名泛解析的方式实现;可直接解析到指定的套件系统上。
三、租户数据隔离模式
模式一:每个租户一个数据库
每个租户配置一个独立的数据库。

优点:
1、数据隔离级别高、安全性好。
2、简化数据模型,可满足不同租户的特定需求。
3、某个租户出现故障,可快速回滚。
4、便于支持私有化部署。
缺点:
1、数据库数量多,维护成本及数据库费用成本高。
2、设计、实现的难度比较高。
模式二:租户共享数据库,隔离数据结构
多个租户共享一个数据库,每个租户一个数据表,例如:tenant_a、tenant_b。

优点:
1、逻辑数据隔离,每个数据库可支持多租户。
2、硬件成本相对较低。
缺点:
1、数据库出现故障,恢复难度大;会对其他的租户数据造成影响。
2、跨租户进行数据统计会变得复杂。
模式三:租户共享数据库,共享数据结构
多个租户共享一个数据库,且共用一个数据表,通过租户 ID tenant_id 区分。

优点:
1、硬件成本低。
2、理论支持租户数量最大、运营成本相对较低。
缺点:
1、数据隔离级别最低、安全性最低。
2、数据恢复难度最大、备份数据困难。
小结:
1、模式一,称为桶模式;模式二、模式三,称为池模式。
3、数据的安全性要求极高的业务,或属于政府监管类的系统,最好是采用模式一。
4、成本控制比较严、预算有限的业务,可采用模式二、三。
5、当时我们公司的架构师在 Info Q 的《深圳全球架构师峰会》上与嘉宾还讨论了关于数据存储模式的问题。
四、安全策略
1、系统部署方面,尽量选择有基础保障能力和安全防护能力的云平台;云平台相对于普通的 IDC 机房来说,具有高可用性、安全性及弹性扩容的优势。
2、服务器运维方面,建立运维审核机制、安全堡垒机、访问控制、防攻击策略等。
3、租户系统方面,支持双因子认证、增强密码复杂度、提升验证码破击难度等。
五、总结
1、对于 Saas 系统的客户来说,客户比较关心自己的数据能不能得到有效的保护。
2、数据存储方式的选型上,在系统的设计之初需要着重的权衡。
3、服务调度及监控系统,在 SaaS 系统中尤为重要,是系统稳定性的根本保障。
4、SaaS 系统需要具备一定的安全防护能力,来保障客户的服务、数据的安全。
5、SaaS 系统是项长期工程,需要逐步的迭代和演化。
六、结束语
人生的每一段经历,可以很简单、很平凡;但是需要有一定的有收获,无论大与小,无论好与坏;会员 SaaS 系统的建设,使用到了很多的技术栈、技术架构。因对我来说收获颇多,扩充了我的技术视野。希望这次分享,可以让大家对 SaaS 系统有一些了解。
每一次的总结,是为了下一次更好的开始;与君共勉,感谢大家聆听!
经验分享之会员 SaaS 系统的更多相关文章
- [经验分享]C# 操作Windows系统计划任务
背景:我做了一个事情是要自己提前创建好很多要定时执行的任务,在我不在的时候自动执行这些程序,以保证我的工作能无人值守,那么我就需要建立系统计划任务来帮我完成这件事情,当然用脑子想想如何实现,很简单,每 ...
- CIO必看:跨国集团采购部报表系统的建设经验分享
CIO必看:跨国集团采购部报表系统的建设经验分享 引言 福耀集团是国内最具规模.技术水平最高.出口量最大的汽车玻璃生产供应商,产品"FY"商标是中国汽车玻璃行业第一个"中 ...
- 鸿蒙系统开源学习经验分享HarmonyOS[www.allharmonyos.com]
分享鸿蒙系统开源知识,分享学习经验,分享鸿蒙系统开发经验 www.allharmonyos.com https://gitee.com/allharmonyos https://github.com/ ...
- saas系统架构经验总结
2B Saas系统最近几年都很火.很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, Desk Saas系统.很多Saas创业公司也拿了大额风投.毕竟Saas相对传统软件的优势非常明显. ...
- SaaS 系统架构设计经验总结
2B SaaS系统最近几年都很火.很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, Desk SaaS系统.很多SaaS创业公司也拿了大额风投.毕竟SaaS相对传统软件的优势非常明显. ...
- SaaS 系统架构,Spring Boot 动态数据源实现!
这段时候在准备从零开始做一套SaaS系统,之前的经验都是开发单数据库系统并没有接触过SaaS系统,所以接到这个任务的时候也有也些头疼,不过办法部比困难多,难得的机会. 在网上找了很多关于SaaS的资料 ...
- 【原创经验分享】WCF之消息队列
最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...
- (转)CMOS Sensor的调试经验分享
CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...
- thinkphp开发技巧经验分享
thinkphp开发技巧经验分享 www.111cn.net 编辑:flyfox 来源:转载 这里我给大家总结一个朋友学习thinkphp时的一些笔记了,从变量到内置模板引擎及系统变量等等的笔记了,同 ...
- 线上Linux服务器运维安全策略经验分享
线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...
随机推荐
- 开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition
目录 简介 源码 函数说明 arv_camera_new arv_camera_acquisition arv_camera_get_model_name arv_buffer_get_image_w ...
- Openstack之工作流程
组件 OpenStack的核心部件即包括Nova(用于计算).Keystone(用于身份服务).Neutron(用于网络和地址管理).Cinder(块存储).Swift(对象存储).Glance(镜像 ...
- Causal Inference理论学习篇-Tree Based-Causal Tree
Tree-Based Algorithms Tree-based这类方法,和之前meta-learning 类的方法最明显的区别是: 这类方法把causal effect 的计算显示的加入了到了树模型 ...
- 什么是报表工具?和 EXCEL 有什么区别?
报表是什么? 带数据的表格和图表就都是报表,像工资表,考勤表,成绩表,资产负载表等等都是报表. 那报表工具,顾名思义就是用来做报表的工具,那 Excel 是不是也算报表工具?广义上讲当然也算.但 IT ...
- ping的常用方法
ping的常用方法 ping +ip tcping +ip+端口号(例如 tcping 127.0.0.1 8080) telnet +ip+端口号 nc -nzv +ip+端口号(linux用)
- 第二課:Mirth培養興趣之旅 ——由定時刷庫接口編程講起
1.准备工作 1.1 本机安装vs2019:(https://visualstudio.microsoft.com/zh-hans/) 1.2 本机安装win64的MariaDB 10.3.27版本数 ...
- 面试题 02.07(Java). 链表相交(简单)
题目: 本题与:力扣160相交链表 一致 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c ...
- 力扣498(java)-对角线遍历(中等)
题目: 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素. 输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4 ...
- WPF开源轻便、快速的桌面启动器
前言 今天大姚给大家分享一款WPF开源.简单.轻便.快速的桌面启动器(支持多主题.多语言:简体中文.繁体中文.英文等):CurvaLauncher. WPF介绍 WPF 是一个强大的桌面应用程序框架, ...
- [ERROR] listen tcp :80: bind: permission denied
出现这类提示的时候,表明当前用户没有权限进行 bind 操作. 在某些 Linux 云服务器提供商的运行环境中会出现. 解决方式:使用 sudo 切换为 root,然后在执行原操作. Refer:li ...