经验分享之会员 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 系统的更多相关文章

  1. [经验分享]C# 操作Windows系统计划任务

    背景:我做了一个事情是要自己提前创建好很多要定时执行的任务,在我不在的时候自动执行这些程序,以保证我的工作能无人值守,那么我就需要建立系统计划任务来帮我完成这件事情,当然用脑子想想如何实现,很简单,每 ...

  2. CIO必看:跨国集团采购部报表系统的建设经验分享

    CIO必看:跨国集团采购部报表系统的建设经验分享 引言 福耀集团是国内最具规模.技术水平最高.出口量最大的汽车玻璃生产供应商,产品"FY"商标是中国汽车玻璃行业第一个"中 ...

  3. 鸿蒙系统开源学习经验分享HarmonyOS[www.allharmonyos.com]

    分享鸿蒙系统开源知识,分享学习经验,分享鸿蒙系统开发经验 www.allharmonyos.com https://gitee.com/allharmonyos https://github.com/ ...

  4. saas系统架构经验总结

    2B Saas系统最近几年都很火.很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, Desk Saas系统.很多Saas创业公司也拿了大额风投.毕竟Saas相对传统软件的优势非常明显. ...

  5. SaaS 系统架构设计经验总结

    2B SaaS系统最近几年都很火.很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, Desk SaaS系统.很多SaaS创业公司也拿了大额风投.毕竟SaaS相对传统软件的优势非常明显. ...

  6. SaaS 系统架构,Spring Boot 动态数据源实现!

    这段时候在准备从零开始做一套SaaS系统,之前的经验都是开发单数据库系统并没有接触过SaaS系统,所以接到这个任务的时候也有也些头疼,不过办法部比困难多,难得的机会. 在网上找了很多关于SaaS的资料 ...

  7. 【原创经验分享】WCF之消息队列

    最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...

  8. (转)CMOS Sensor的调试经验分享

    CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...

  9. thinkphp开发技巧经验分享

    thinkphp开发技巧经验分享 www.111cn.net 编辑:flyfox 来源:转载 这里我给大家总结一个朋友学习thinkphp时的一些笔记了,从变量到内置模板引擎及系统变量等等的笔记了,同 ...

  10. 线上Linux服务器运维安全策略经验分享

    线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...

随机推荐

  1. HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)

    一.  介绍 溪村小镇是一款展示溪流背坡村园区风貌的应用,包括园区内的导航功能,小火车行车状态查看,以及各区域的风景展览介绍,主要用于展示HarmonyOS的ArkUI能力和动画效果.具体包括如下功能 ...

  2. IaC 管理新思路:Walrus 和 Terraform 的差异化探索

    Terraform 的社区版本及商业化版本,让其成为在基础设施即代码(IaC)领域中可靠的部署和管理平台.尽管目前 Terraform Cloud/Enterprise 仍然是最为广泛采用的 IaC ...

  3. CS101

    Turing machine:图灵机 理论上可以计算任何东西 CPU(Center Process Unit):中央处理器 是现代电脑的"大脑",其中包含数十亿细小开关的硅片,即晶 ...

  4. 单机运行环境搭建之 --CentOS-6.4安装MySQL 5.6.10并修改MySQL的root用户密码

    单机运行环境搭建之 --CentOS-6.4安装MySQL 5.6.10并修改MySQL的root用户密码 Mysql 5.5以后使用了CMake进行安装,参考与以前的区别请参考: http://ww ...

  5. nginx重新整理——————http请求的11个阶段中的content阶段[十八]

    前言 简单介绍一下content 阶段. 正文 下面介绍一下root和alias. 这个前面其实就提交过了,这里再说明一下. 功能都是一样的:将url映射为文件路径,以返回静态文件内容. 差别:roo ...

  6. 整理k8s————k8s概念[一]

    前言 简单整理一下k8s. 正文 k8s 是基于容器的一套解决方案,那么解决了什么问题呢? 解决了分布式部署问题. k8s 特点: 轻量 开源 弹性伸缩:IPVS 知识图谱: 更多的看官网就好. 结 ...

  7. 4A 安全之授权:编程的门禁,你能解开吗?

    概述 在安全管理系统里面,授权(Authorization)的概念常常是和认证(Authentication).账号(Account)和审计(Audit)一起出现的,并称之为 4A.就像上一文章提到的 ...

  8. springboot 整合webservice 相关说明

    1.环境依赖 jdk8, springboot 2.3.12.release,cxf版本需要根据springboot版本修改,方法:查看springboot版本的发布日期,然后根据日期找相近的两个版本 ...

  9. docker安装mysql8.0.20并远程连接

    前言 今天docker安装mysql8.0.20捯饬了半天,主要是挂载问题和连接问题,索性记录一下.网上很多千篇一律,还有很多就是过时了,那还是我自己上场吧.大家看的时候,请睁大眼睛,按步骤来. Do ...

  10. MAC上Cisco AnyConnect删除不干净,造成无法重新安装的解决办法

    1.问题 由于直接删除而不是正常卸载,导致文件残留,无法正常安装,并且软件不可用 2.解决 2.1 终端运行命令 pkgutil --pkgs|grep com.cisco 查看cisco残留的文件 ...