SaaS软件架构设计系列 | 1-1 SaaS软件的特点

214 阅读7分钟

SaaS软件的特点

在讨论SaaS软件技术相关的话题前,我们先来看看SaaS软件是什么,有什么特点。

SaaS软件的定义

对SaaS软件的定义有很多,下面引用IBM网站上的描述如下:

SaaS (软件即服务) 是托管在云端的应用软件,由 Web 浏览器、移动应用程序或瘦客户端通过互联网连接使用。SaaS 提供商负责运营、管理和维护软件以及作为软件运行平台的基础架构。客户只需创建一个帐户并支付费用,即可开始工作。

有些SaaS软件是面向个人用户的(ToC),有些是面向企业用户的(ToB),我们接下来的讨论都是围绕ToB场景展开的。

SaaS软件和OP软件的主要区别

我们围绕ToB软件的几个关注点,对SaaS和OP(On-Premises,本地部署)软进行比较如下:

  • 商务模式:SaaS通常采用订阅模式,一般ToB都是按使用周期(月、季、年)进行收费,有的活动型应用也会按次收费。OP软件通常是买断授权,有的软件会限制用户数,增加用户数需要额外付费。
  • 软件部署:SaaS通常由提供商部署在公有云上,OP通常部署在客户的IDC或私有云上。
  • 软件交付:SaaS通常只需要开通账户和应用权限,提供使用说明文档;OP通常需要交付软件程序以及相关使用说明文档,可能还需要提供系统设计与维护的技术文档,甚至软件源代码。一般都会为客户进行系统的初始化,给客户提供使用培训。通常SaaS的初始化和培训更加的简单、轻量。
  • 安全与合规:SaaS的安全由提供商管理,OP由客户负责。SaaS可能难以提供个性化的合规要求,但一般基础安全和通用安全会比OP好。
  • 个性化扩展:SaaS通过一套软件为所有的客户提供服务,相比OP可个性化的范围要小很多,通常成本也更高。
  • 更新与升级:SaaS保持持续的软件改进,并为所有客户提供最新的功能。OP通常需要客户付费才能获取新功能,如果软件进行了个性化开发,升级可能需要重新适配,带来较高的成本。
  • 维护和支持:SaaS软件的维护由提供商进行,通常提供免费的标准支持服务,收集支持个性化的服务(如导数、改数)。OP软件由客户承担维护和支持,便一般会购买提供商或其合作伙伴的相关服务,费用通常为交易金额的5%~20%每年。

现实中的一些特例:

  • 买断的“SaaS”:指客户不按SaaS软件的标准定价付费,而且一次性支付一定的费用“买断”,然后每年支付较少比例的服务费。比如SaaS软件的定价是1000元*用户数/年,客户一次性支付50万元“买断”,不限制用户数,并且每年支付5万元的服务费。一般是大客户为降低订阅付费的成本,让提供商降价的一种方式。
  • 私有化部署的“SaaS”:部分客户为了安全合规、数字化资产等原因,会要求将SaaS软件部署在自己的IDC、私有云或公有云自购资源中,需要支付私有化部署和数据迁移的费用。保持订阅付费的商务方式,同时购买提供方的本地运维服务,提供商也保持私有化环境的更新和升级,升级的频率可能会按客户指定的要求来进行。
  • OP化的SaaS:如果私有化部署的同时进行“买断”,实质上就变成了OP软件,商务上一般也会按OP来进行。费用一般是SaaS产品费用的3倍,并按年支付一定比例的维护服务费。如果要保持软件的更新与升级,也需要支付相应的费用。

SaaS软件的技术特点

SaaS软件提供服务的方式,让其即有OP软件的服务要求,又有互联网软件的形态。下面我们通过以下几点来对比来看一下SaaS软件的技术特点:

  • 访问方式:SaaS软件用户通过互联网进行访问,这一点和互联网软件相同,目前有很多OP软件也能通过互联网访问,特别是提供给自己的客户、供应商或合作伙伴使用的软件,比如营销类软件,供应链协同软件等。大部分企业内部使用的OP软件通过企业内部网络访问,或使用VPN通过互联网访问,比如OA软件。
  • 用户规模:SaaS软件的用户规模通常介于同等规模OP软件和互联网软件之间。OP软件一般只为一个企业服务,而SaaS软件为多个企业服务,但与互联网软件大量的C端用户比,还有很大的差距。
  • 性能挑战:SaaS软件服务于多个客户,随着租户的增加,用户量可能快速增长。虽然相对互联网软件可预见性更强,但要随时保持系统的性能扩展能力。如果SaaS软件提供营销活动的的支持,也可能在短时间内吸引大量的用户参与,里面还可能有大量的羊毛党,他们拿着刷单工具能给系统带来巨大的流量。因此这类SaaS需要建设和秒杀系统类似的能力。还有一个挑战就是你可能无法很好的预见租户什么时候开始举行活动,有时候自动扩容都来不及,更别说人工扩容了。
  • 可用性挑战:SaaS软件虽然很少像某些互联网软件一样,宕机多久就造成直接损失多少,但有时候也会造成灾难性的负面影响,导致客户续签困难或在行业内口碑下降。重要的系统不可用,在哪里都会是灾难,SaaS软件面临的画风是一线的反馈从各路飞到工作群,运维工位上人山人海,然后客户投诉,对事故进行分析出报告,一线安抚客户可能还要附加赔偿,内部通报可能还会附带惩罚。
  • 安全性挑战:除了应对常规的互联网安全威胁,在SaaS领域通常认为数据是客户的,而且往往包括商业敏感信息,所以数据安全是重中之重。数据不能丢、不能泄漏、不能串租户、客户未授权不能随意访问或修改数据。
  • 用户需求:由于SaaS行业存在满足大客户个性化需求的问题,所以SaaS软件往往是“人格分裂”的。往往产品经理信心满满的做好了产品规划,然后被客户裹挟着插入各种“不协调”的东西,关键是当被团队质问为什么要这么做时,产品经理说一千道一万,最后只能是一个“客户就是要”。这种张家要长、李家要短的需求,给产品和技术都带来了巨大的挑战。
  • 更新升级:SaaS软件的更新频率和互联网软件更接近,往往采用双周或月迭代的方式。而不是像OP那样采用发布版本的模式,一个OP的版本可能要三到六个月,甚至更长。

讨论完SaaS软件的特点,后面我们将一起讨论一下SaaS软件架构设计的核心关注点。