1.概述
对于SAAS应用的架构师而言,尤其是从传统软件转型到SAAS的架构师,遇到的首要挑战就是多租户思维的转变。传统软件的销售模式决定了软件的每一个运行实例都服务于一个客户,因此对于性能、可配置性、伸缩性方面的处理策略都是针对单一客户所设计的。而对于SAAS应用,为了最大化SAAS的规模效应,一般采用的都是多个租户共享一个实例的架构(Multi-Tenant架构,及多租户架构)。如何在Multi-Tenant架构下,实现SAAS的高性能、可配置、可伸缩的目标,就是SAAS应用架构师所面临的最大挑战。这些也构成了SAAS成熟度模型的主要特性。
2.SAAS成熟度模型分级
根据SAAS应用是否具有可配置性、高性能、可伸缩性的特性,SAAS成熟度模型被分为四级,每一级都比前一级增加以上三种特性中的一种
可配置 | 高性能 | 可伸缩 | |
Level1 | × | × | × |
Level2 | √ | × | × |
Level3 | √ | √ | × |
Level4 | √ | √ | √ |
3.SAAS成熟度模型应用架构
(1)最初级的SAAS应用成熟度模型与20世纪末的第一次互联网浪潮中曾经一度流行的ASP(Application Service Provider )基本一致的。在这种模型下,软件服务提供商为每一个客户定制一套软件,并为其部署。每个客户使用一个独立的数据库实例和应用服务器实例。数据库中数据结构和应用的代码可能都根据客户需求做过定制化修改。
(2)在第二级成熟度模型中,软件的部署架构没有发生太大变化,依然是每个客户独立部署一个运行实例。只是每个运行实例运行的是同一份代码,通过配置的不同满足不同客户的个性化需求
(3)在第三级别成熟度模型下,实现多租户高性能架构
变化:
- 在传统应用模型的基础上,增加一个Tenant表,用于描述租户信息。
- 在大部分与租户有关的数据表中增加tenant_id字段
- 业务数据查询过滤时,都增加上tenant_id=?过滤条件
(4)第四级成熟度模型,可伸缩性的多租户架构
实现了多租户单实例的架构后,随着租户数量的组件增加,集中式的数据库性能就将成为整个SAAS应用的性能瓶颈,如果不进一步考虑数据库的分区设计,则只能依靠于更强大的硬件设备来向上扩展(scale up),当应用规模增长带来的压力达到单一设备的极限时,最终导致SAAS应用架构难以满足低成本运营需要。
如果通过一定的策略来满足SAAS应用的水平扩展(scale out),成为SAAS应用架构需要解决的问题。即在用户数大量增加的情况下,无须更改应用架构,仅需简单增加硬件设备的数量,就可以支撑应用规模的增长。不管用户多少,都能像单用户一样方便地实施应用修改。这就是第四级也是最高级别的SAAS所要致力解决的问题。
参考书籍《互联网时代的革命-SAAS应用架构》