其他分享
首页 > 其他分享> > 谈一谈SaaS产品的架构设计

谈一谈SaaS产品的架构设计

作者:互联网

1. SaaS 是什么

从字面中理解SaaS的全称是Software as a service, 即软件即服务。
从服务模式来看,SaaS是一种软件授权和交付模式,以订阅模式代替传统授权模式,以集中式部署代替用户环境部署,通常被认为是按需付费软件。
目前SaaS被广泛的认为是云计算的一部分,跟Infrastructure as a service, platform as a service, xxx as a service等并列。
从用户访问方式来看,用户一般使用像浏览器这样的瘦客户端访问SaaS应用,随着更多的企业级软件陆续提供SaaS化,客户端也将变得更加丰富,如微软Office 365, 钉钉,Saleforces, Oracle Fusion Cloud等。

2. SaaS产品的前世今生

SaaS的产品可以简单的分为三个阶段。

第一阶段是在上世纪60年代,将各种商业应用集中托管在一台大型主机里,从这个年代起IBM和其它大型机厂商提供一种服务中心业务,为客户提供分时享用和效用计算服务,这些大型机厂商通过还提供计算资源和数据库存储服务。

第二阶段是上世纪90年代,随着Internet的不断扩展,一种新的集中计算服务出现,被称为应用服务提供商(ASP)。ASP不但提供应用服务所需要的主机,还提供专业化的业务应用,并且通过集中式的托管硬件与软件来降低客户成本。

第三阶段是进入新世纪后,SaaS将ASP模式发扬光大,但又有着明显的区别:

3. SaaS产品的架构设计

如上文所述,大多数主要SaaS应用都基于多租户架构,在这个架构中应用采用单一版本和统一的配置(硬件,网络,操作系统)为所有的用户服务。为了支持伸缩性,应用必须可以部署在多服务器中以支持横向扩展。有一些应用运行多版本共存,比如新版本上线后只能小部分用户开放以验证产品的稳定性,验证成功后才全量发布。

3.1 多租户架构优缺点

3.1.1 多租户架构优点

3.1.2 多租户架构缺点

3.2 多租户架构设计

在这里插入图片描述

3.2.1 租户识别

租户识别是SaaS平台入口环节的重要功能,通过系统访问域名(DNS)和用户登陆信息来进行确认访问具体租户的应用与数据。

子域名进入:
域名格式参考:[租户域名].[部署池].[主域名].[根域名]
示例如下:my-pos.eastchina01.examledomain.com

公共域名进入:
登陆域: login.examledomain.com
用户成功登录后直接跳转到子域,用户在子域中访问系统,若一个用户绑定多个租户则由用户选择待进入的租户。

租户在资源层次结构中建立数据隔离边界,每个租户都有自己的以下属性:

3.2.2 存储资源隔离

多租户架构存储资源隔离模式主要有如下三种类型,不同类型的架构复杂度和成本均不同。
在这里插入图片描述

3.2.3 计算资源隔离

应用服务器采用共享集群的方式,将租户分配到不同的部署池中,租户的分配可采取随机或者容量规则,从并发数和数据库连接数的维度考虑每一个集群部署租户的数量。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vwR3uldf-1625663874873)(evernotecid://42FA98E9-87DA-4E80-AF21-13A3CD090623/appyinxiangcom/13598593/ENResource/p72)]

3.2.4 缓存与消息中间件资源隔离

把所有的资源配置作为元数据,存储到配置中心,在系统运行时动态的创建和路由DataSource,消息集群,缓存集群,路由key为tenantId。

3.2.5 安全性

当租户选择一款SaaS产品时,产品的安全性将会放置在第一位考虑,如数据隔离,敏感数据加解密,数据访问权限,个人隐私以及运维流程。针对安全性的考虑,SaaS一般需要考虑以下几点:

3.2.6 可配置界面

一个成熟的SaaS产品需提供灵活用户界面配置能力。当新版本发布时为业务对象增加一个字段,需要在Web端,移动端和关联的报表同步改动生效,那么产品能通过相同的工具和流程去配置产品。常见的配置项如下:

3.2.7 丰富的API

一个SaaS产品要取得成功,系统的集成能力是重要的一环,API设计是集成能力提供的关键因素。业内首屈一指的云厂商Amazon AWS的产品设计之初就提出Everything is API和The API first的策略。在产品内部所有的行为都应该是API的调用,无论是内部访问还是外部访问,一切设计均围绕API进行。

API能力以微软的AKS产品为例:

3.2.8 发布与部署策略

4. SaaS产品私有化部署

如果有土豪顾客对产品表示十分喜欢,受制于内部的安全因素无法在公有云上使用产品,灵活的SaaS需具备私有化的能力。要满足这个要求,在技术选型需考虑以下:

5. SaaS产品的简单实现

6. 参考文档

  1. Multitenant SaaS on Azure

关于作者

微胖中年码农-老王

标签:架构设计,谈一谈,架构,租户,SaaS,API,3.2,应用
来源: https://blog.csdn.net/vipshop_fin_dev/article/details/118557648