SaaS软件架构设计系列 | 1-2 核心关注点

263 阅读3分钟

SaaS软件架构设计的核心关注点

SaaS软件和其他软件最大的不同,是一套软件服务于多个租户,也就是我们常说的多租户架构。几乎所有架构层面的设计,都需要考虑多租户的因素,所以“多租户”并不是一个独立的设计层或模块,而是在系统设计的方方面面都贯穿的一个概念。可以通过下面这张图来大致了解一下多租户概念的分布。

image.png

上图是一个逻辑简图,主要涉及到访问入口、数据库、消息队列、任务调度以及大数据相关的租户隔离,具体的内容会在后面的章节进行展开。

根据前面对SaaS软件特点的分析,在架构层面除了多租户设计外,还需要特别关注以下方面:

  • 安全性设计:除了ToB软件传统的安全设计外,SaaS软件还需要考虑跨租户的安全、互联网安全以及内部安全。安全作为ToB软件的生命底线,一旦出现问题,将会带来灾难性的后果,所以在系统架构、工具、流程、规章制度方面都要有严格和完善的设计。
  • 功能扩展设计:功能扩展和个性化一直是SaaS软件面临的具大挑战,由于客户的业务发展阶段、企业管理水平和管理模式的不同,类似的场景可能会出不同甚至矛盾的解决方案诉求。对于同一套软件要满足各种个性化的需求来说,需要系统根据不同的场景提供不同的功能扩展方式来满足不同客户的需求。比如简单的业务流程差异,可以使用特性开关来满足;复杂的界面个性化,需要提供零代码设计器才能满足需求。
  • 性能扩展设计:SaaS软件面临比OP软件更快的用户增长,特别是ToBToC的场景(SaaS软件用于服务于客户的C端用户),而和互联网ToC软件相比,一般又具有更高的业务复杂度。所以在最初的架构设计中就需要考虑性能的可扩展性,当业务发展到一定规模后,需要对性能需求不同的业务进行隔离和分别设计。
  • 快速迭代能力:对于客户来说,SaaS软件除了能够以相对较低的成本快速使用外,还有一个好处就是能够快速获得优化的用户体验和最新的行业最佳实践。特别是对于中小型客户来说,这种“免费”的升级具有很强的吸引力。对于SaaS软件提供商而言,这也是促进客户续签和增购的重要能力。所以SaaS软件必须能够快速迭代以增强系统的能力,相比于传统OP软件几个月一次的版本升级或付费二开的方式,这也是SaaS软件模式优于OP软件的地方。
  • 演进式架构:SaaS软件的用户规模和业务范围变化有很强的不确定性,而且由于掌握着唯一的一套软件,没有OP软件二开升级的困扰(懂的都懂),因此SaaS软件最适合演进式的架构设计。

后面我们沿着演进式架构设计的思路,按“创始阶段”、“单业务爆发”、“多业务发展”、“大规模租户”四个阶段来详细聊一聊SaaS软件架构设计的各个方面,过程中我们重点关注和SaaS软件特性相关的设计。通用的架构设计已经有很多优秀的文章进行了阐述,因此我们只会进行简要的描述。最后我们会看到一个业务形态复杂多样,用户规模庞大的SaaS系统的架构形态,并且一起经历其发展过程。