SaaS模式与技术架构

2020-09-04 14:24:08 浏览数 (1)

SaaS是Software as a Service(软件即服务)的缩写,它是云计算的主要体现形式之一,其他的还有诸如平台即服务(PaaS),基础设施即服务(IaaS)以及数据即服务(DaaS)等。简而言之,SaaS是一种软件交付模式,旨在以“即用即付”服务的方式为客户提供软件服务,客户不需要安装软件便可获得应用程序提供的所有功能。

SaaS是一种基于云计算的软件交付系统,客户只需要通过浏览器便可轻松订阅应用程序所提供的功能。这种“按需使用”或“软件 服务”的软件交付系统,被广泛应用于各大中小企业,组织中,以帮助他们降低软件的使用成本。当下,SaaS软件正被用于各种行业的业务领域中,例如:客户关系管理软件(CRM),企业资源规划软件(ERP),信息管理软件(MIS),人力资源管理软件(HRM),地理信息管理软件(GIS)以及学习管理软件(SIS)等等。

使用SaaS应用软件的优势

SaaS软件交付模式的概念最早于20世纪60年代被提出,到20世纪90年代,随着互联网技术的不断发展,SaaS的发展速度也随之加快,许多软件提供商开始通过互联网托管和提供软件服务,而SaaS(软件即服务)这个术语也是在这一时期确定下来的。使用SaaS软件在以下几个方面可以获得较大优势:

1 在软件使用早期,可以大幅度降低硬件,带宽,安装和运营成本。2 可以以更小的人员和资金的开销,准确的预测业务数据,更快的完成软件的升级和维护工作。3 与传统软件相比,用户通过互联网获的软件服务,从而降低了管理软件所带来的安全风险。4 快速部署,快速接入。由于不需要自行安装和部署软件,只需要向服务提供商注册信息,并为订阅的服务付费,便可获得软件服务。从而减少了获得软件的等待时间。5 跨平台操作。借助互联网,客户可以在任何时间,任何地点,通过浏览器便可接入服务。任何有价值的东西,在其出现之前都会历经各种困难与挑战,没有什么事物是一蹴而就的。接下来,将介绍构建一个SaaS软件在系统测试,数据安全和升级维护三个方面面临的巨大挑战。

实现SaaS软件挑战一#测试

任何有价值的软件在交付之前,都需要进行大量的测试。这和我们买衣服一样,在确定付款前,都需要在试衣间试穿各种样式的衣服。SaaS软件的测试与传统的软件测试基本相同,通过执行各种逻辑验证,确保作为服务提供的软件在质量上是否符合客户的需求。SaaS软件的测试通常会包含数据安全测试,业务逻辑测试,数据集成测试,接口兼容测试,可伸缩测试和高并发测试。但SaaS软件的测试也有有别于传统软件测试的地方。

与传统软件开发相比,SaaS软件的测试在测试周期和实施等方面都面临着诸多的挑战。尽管实现SaaS软件的技术框架会有所不同,但在测试环节都将面临一些常见的技术挑战。

安全性测试

SaaS软件可以为使用者带来巨大的好处,但仍然有很多用户在质疑SaaS应用软件的数据安全。基于云计算应用的数据安全一直以来都是一个居高不下的热点话题。因此,针对SaaS软件的安全性测试必须慎重对待,需要有专门的测试策略和工具。

与其他任何的云计算平台一样,在云计算环境下维护数据的安全性和完整性具有很大的风险与挑战,和传统的软件相比,SaaS应用软件的安全性测试更为复杂。在SaaS应用软件测试中,需要模拟多个租户下,不同安全级别的隐私要求,权限分配粒度,资源隔离等级和用户行为模式。传统的测试手段很难测试并发现SaaS软件中存在的安全漏洞,软件测试场景也很难完全发现漏洞并消除这些安全威胁。

可伸缩和高可用测试

可伸缩(也称可扩展)性是SaaS软件服务提供商重要的商业模型指标之一,要求SaaS应用软件可以根据客户量的大小进行水平方向的伸缩。简单来说,SaaS平台可以根据当前用户量的多少,动态地增加或者减少运行实例的数量;而高可用(性能)是客户衡量SaaS软件好坏的一个重要指标。

如何成功的测试SaaS软件的可伸缩和高可用性,需要有专门的测试策略,才能组织出可用的测试场景,并且需要比传统软件测试更多的测试样本数据和测试标准。这些数据和标准需要仔细的考虑SaaS软件的应用场景,才可能被量化和设计。另外,还需要考虑如何在不同租户类型,不同的用户数量组合,不同使用环境(移动端,PC端)的复杂条件下,对系统的性能,峰值和负载能力进行测试。

集成和开放API接口测试

SaaS应用软件在一定程度上需要集成第三方的业务系统,同时还有可能需要开放一定的API接口,以支持从其他平台集成或迁移数据。在何种情况下,保护数据的安全性和完整性将给测试带来巨大的压力。在SaaS应用软件的集成测试和API测试中,需要对入站和出站数据进行验证,以及对所有API的功能,安全性,性能以及文档的完整性进行测试。即便是这样,你也很难提前组织起所有的测试场景,而且这个过程非常的耗时。也许第一版的API还没有测试完,新版本的API已经添加到测试列表。实现SaaS软件是一个不断迭代的过程,因此很难在短时间内一次测试就涵盖所有的API。

实现SaaS软件挑战二#数据安全

对于SaaS软件而言,更为复杂和艰难的工作是如何保障SaaS平台中用户数据的安全。不管是大型企业还是小公司,他们对于数据的安全性要求都是一样严苛的。例如常见的CRM系统,HR系统,ERP系统和财务管理系统等,它们都存储了大量高度敏感的用户信息,如果SaaS软件的数据安全无法得到保障,不仅是客户的数据会遭受破坏,服务提供商的信誉也会收到严重的影响,甚至会伴随着相关法律的处理。因此,相比于传统的软件,SaaS软件的安全性要求更高,系统结构更为复杂,实现难度也更大。

构建一个SaaS平台,在满足高性能和可伸缩的条件下,还需要着力保障用户数据的高度安全,这主要体现在以下三个方面:

1 多租户数据隔离:多租户架构是SaaS软件的一个重要评定标准,如何对各个租户的数据进行识别,分割和存储需要在效费比,安全性和性能上取得一个平衡。2 数据备份与恢复:由于各租户订阅服务的组合不同,使用软件的时间段也不尽相同,对不同租户的数据进行备份和恢复的难度也相当大。另外,在操作其中一个租户数据时,需要保障其他所有租户的数据不会受到影响。在发生系统故障时,还需要及时恢复租户数据,面对庞大的数据量,数据恢复的复杂度和难度都比单体应用高很多。3 数据入站和出站校验:SaaS软件允许用户在任何地点通过浏览器获取服务,这就要求SaaS软件在数据传输,用户输入,系统输出等环节有着更高的安全性要求。相比于单体架构的应用程序,需要更高级别的安全传输加密/解密手段,更细粒度的用户认证和鉴权措施。另外,对用户的日志的收集,追踪和审计工作比单体软件更难。保护存储在SaaS平台中的数据安全,需要仔细的分析平台中每一个业务流程,细化权限下放的粒度,严格把控访问接入设置以及数据的存储规则。即便如此,由于SaaS系统通常需要面对比单体架构软件更为庞大的数据量,且业务流程更为复杂,更新周期相对较短,因此如何确保存储在SaaS平台中的数据不易被破坏或者泄露是一个永久存在的工作。

实现SaaS软件挑战三#升级维护

SaaS应用软件免去了客户使用软件时的安装,维护,升级等工作,但这些繁杂的工作并未因为SaaS而消亡,而是转移到了SaaS软件服务商的手中,且工作变得更为复杂和艰难。

SaaS软件需要全天候为客户提供可用的服务,因为你完全不知道客户会在什么时候登入系统开展工作。这就要求SaaS服务提供商在升级和维护软件的工程中不能影响当前用户使用软件。简单来说,SaaS软件的升级维护不能采取“冷启动”的方式来完成,需要采用“热部署”的方式,让客户基本上感觉不到升级工作正在进行。反观传统软件上线或更新过程,往往会出现各种问题:不一致的运行环境,过多的人为干预系统的构建和部署,代码改动引起不可控的质量,向下不兼容,服务中断,更长的更新时间,数据丢失等问题。

对于SaaS系统,系统的升级维护工作不能暂停当前客户正在执行的业务,避免业务数据丢失,因此需要一种全新的软件发布机制,通过可视化,自动化的操作,实现持续,无缝,零重启的软件交付过程。在升级维护时,SaaS软件主要面临以下几个挑战:

1 版本可回退:如果新上线的功能模块遇到重大问题,可以回退到之前的版本而不影响用户的正常业务。2 系统向下兼容:新版本的系统需要尽可能的向下兼容旧系统的数据。在最坏的情况下,当升级过程发生时,用户正在使用旧版本提交数据,如果适配旧版本提交的数据,需要慎重考虑。3 灰度发布:灰度发布包含两个方面:前后端灰度发布和移动端的灰度发布。4 零重启:零重启要求在不终止服务的情况下完成系统的升级工作,这就要求SaaS平台具备热部署的特性,确保SaaS平台能够保持7x24小时的持续服务能力。SaaS软件易于使用是相对于软件使用者而言的,对于SaaS软件的提供者来说,软件的复杂性,安全性和可用性都面临者全新的技术难题,克服这些问题并不容易。作为SaaS软件的实现者,不能看着油漆是干燥的,就想当然的坐上去,在油漆真正干燥前,一切都是脆弱的,需要耗费大量的时间去处理诸多问题,才能让用户放心的坐上去。

0 人点赞