当前位置: 首页 > 工具软件 > tmaic saas > 使用案例 >

SaaS架构

黄正浩
2023-12-01

SaaS简介

SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。SaaS这个说法是区别于以往软件购买和交付方式而提出来的。在以前,你公司要使用一款软件来管理财务记账的时候,那你要向软件提供公司说明需求、支付购买软件的钱并提供安装软件的硬件环境,然后软件公司就会上门安装调试软件,调试完后就可以正式投入使用了。这里有一个很显著的特点是,软件都安装在你指定的地方,你拥有100%的管控权,相应的你后续还需要继续投入人员和资源维护系统的正常运行。

SaaS(软件即服务)的模式就不一样了,在客户还没有来之前,软件提供公司就自己提服务器、数据库等硬件,把软件安装发布好,作为一个软件使用方就变得轻松许多,一上来就可以直接体验了,体验之后,你觉得哪些功能合适你的,就挑出来,按月支付支付比较便宜的费用就可以正式使用了。后续的升级、维护也由软件公司来负责,把所有的软件相关工作都归类准备好了,你直接过来挑自己需要的用就好了,其他的用户过来也是一样。“按需付费”是SaaS的一个非常重要的特性。在这种模式下,软件是别人的,发布在别人的服务器上,数据也需要保存在别人的服务器上,安全和信任一直是个令人担忧的问题。

业内有一个很恰当的比喻,一开始的时候,各家都自己挖井抽水蓄水,挖井抽水蓄水的技术是有专业的公司提供,但总的来说喝水这个事情是自家管自家的,这是传统的软件的供水模式。SaaS模式下,挖井抽水蓄水净水修水管这些工作对使用方来说都是透明的,你有需要的时候就打开水龙头取水就OK了,然后每月自来水公司会过来跟你结算。同样的,优缺点很明显,优点是按需用水省事了,成本变低了,缺点是水由水务公司完成控制供水稳定性、供水质量取决于水务公司实力。

常见名词定义:

CRM:CustomerRelationship Management (客户关系管理)

OA:OfficeAutomation(办公自动化)

ERP:EnterpriseResource Planning(企业资源计划)

HR:humanresource software(人力资源软件)

saas平台架构分为以下几个部分:

呈现层

saas平台架构的呈现层可以使用的客户端可能都浏览器或本地客户端。如果是浏览器则需要Web界面技术、交互技术等技术(如:HTMl5技术、CSS3技术、Ajax技术等)的支持,如果是软件客户端则需要远程桌面技术、软件交互技术等技术支持。

调度层

saas平台架构的调度层体现分布式系统的特性之一。调度层首先负责识别并通过AAA认证每个用户请求,然后根据业务处理器的负载、业务特征进行合理的调度。通过应用这样的架构SaaS平台可以横向扩展。此外在存储、缓存等方面为了满足平台的横向扩展需求,调度层也必须具有良好的可扩展性。

业务层

saas平台架构的业务层负责接收调度层转发过来的请求,而且还要通过对接受到的请求执行真正的业务逻辑。一般来说业务逻辑的执行使用一台服务器就够了。因此业务层实际是由一排对等的服务器组成的,每台服务器都执行相同的业务逻辑。

数据层

saas平台架构的数据库集群用于处理存储关系性很强并且对事务性要求很高的业务数据,这类数据目前还要用传统的数据库集群技术来解决,saas平台架构的数据库集群主要是根据业务特征制定数据拆分方案。同时分布式数据库用于存放海量但关系性不强的数据(如:用户的操作日志等)。

saas核心组件

1、安全组件

在SaaS产品中,系统安全永远是第一位需要考虑的事情,如何保障租户数据的安全,是你首要的事情。这如同银行首选需要保障储户资金安全一样。安全组件就是统一的对SaaS产品进行安全防护,保障系统数据安全。

2、数据隔离组件

安全组件解决了用户数据安全可靠的问题,但数据往往还需要解决隐私问题,各企业之间的数据必须相互不可见,即相互隔离。在SaaS产品中,如何识别、区分、隔离多个租户的数据是你在实施SaaS软件架构设计时需要考虑的第二个问题。

3、可配置组件

尽管SaaS产品在设计之初就考虑了大多数通用的功能,让租户开箱即用,但任然有为数不少的租户需要定制服务自身业务需求的配置项,如UI布局、主题、标识(Logo)等信息。正因为无法抽象出一个完全通用的应用程序,所以在SaaS产品中,你需要提供一个可用于自定义配置的组件。

4、可扩展组件

随着SaaS产品业务和租户数量的增长,原有的服务器配置将无法继续满足新的需求,系统性能将会与业务量和用户量成反比。此时,SaaS产品应该具备水平扩展的能力。如通过网络负载均衡其和容器技术,在多个服务器上部署多个软件运行示例并提供相同的软件服务,以此实现水平扩展SaaS产品的整体服务性能。为了实现可扩展能力,就需要SaaS展示层的代码与业务逻辑部分的代码进行分离,两者独立部署。例如使用VUE+微服务构建前后端分离且可水平进行扩展的分布式SaaS应用产品。对于可扩展,还有另外一种方式,即垂直扩展,其做法比较简单,也比较粗暴:通过增加单台服务器的配置,如购买性能更好的CPU、存储更大的内存条、增大带宽等措施,让服务器能够处理更多的用户请求。但此做法对于提升产品性能没有质的改变,且成本很高。

5、0停机时间升级产品

以往的软件在升级或者修复Bug是,都需要将运行的程序脱机一段时间,等待升级或修复工作完成后,再重新启动应用程序。而SaaS产品则需要全天候保障服务的可用性。这就需要你考虑如何实现在不重启原有应用程序的情况下,完成应用程序的升级修复工作。

6、多租户组件

要将原有产品SaaS化,就必须提供多租户组件,多租户组件是衡量一个应用程序是否具备SaaS服务能力的重要指标之一。SaaS产品需要同时容纳多个租户的数据,同时还需要保证各租户之间的数据不会相互干扰,保证租户中的用户能够按期望索引到正确的数据,多租户组件是你必须要解决的一个问题。其余的组件都将围绕此组件展开各自的业务。

SaaS成熟度模型分级

Level1:定制开发

Level2:可配置

Level3:高性能的多租户架构

Level4:可伸缩的多租户架构

多租户数据存储方案

隔离数据库

共享数据库,隔离数据结构

共享数据结构,tenantid字段隔离

多租户优化

数据库层性能优化(建立合适索引,消除大数据表连接,避免复杂SQL)

应用层性能优化(Cache,统计报表,异步操作,基于租户的索引搜索)

展现层性能优化

多租户可配置性

数据可配置(定制字段,预分配字段,键值对)

功能可配置(原子功能划分,功能包设计,功能使用校验)

界面可配置(系统菜单,页面元素)

流程可配置

可伸缩性

负载均衡

数据库读写分离

数据库垂直切分/水平切分

安全性

应用安全(身份认证,权限管理,日志记录,应用监控)

数据安全(数据隔离,数据库连接安全,敏感数据加密,数据量监控)

网络安全(安全传输,网络攻击防范,网络监控)

 类似资料: