SaaS多租户的3种隔离模式

大家好,我是汤师爷~

在SaaS模式下,多租户之间的资源隔离是基础且关键的一环。SaaS服务商需要在确保运营效率和控制成本的前提下,搭建一个让多个租户能够同时访问的共享环境。

虽然大家都在用同一套SaaS产品服务,但资源访问必须严格隔离,确保租户之间互不干扰。SaaS资源隔离通常包含以下几个层次:

1. 基础设施的隔离

第一层主要指SaaS系统运行所依赖的基础设施资源,比如计算资源(CPU、内存)、存储资源(数据库、文件系统)、网络资源(IP、带宽)等。

这些资源的隔离主要是为了确保不同租户在使用系统时,互相之间不会因为资源竞争而受到影响。

2. 组织权限的隔离

第二层隔离涉及组织权限的隔离,包括组织信息、用户账号、角色、权限配置、产品授权关系等。这些数据决定了谁能用什么功能,谁有操作哪些内容的权限。

组织权限隔离的目的是让每个租户拥有自己独立的组织架构和权限设置,不会因为其他租户的操作而发生冲突。

3. 业务数据的隔离

最后一层隔离涉及系统运行过程中产生的业务数据,如订单、发票、操作记录和数据报表等。通过精细的数据权限配置,这些信息可以在不同组织单元间实现完全隔离,从而保障业务信息的隐私性和安全性。

多租户架构主要解决第一层的隔离问题,即计算、存储和网络等资源的隔离。为了实现多租户隔离架构,我们需要先了解几种常见的多租户隔离模式。

竖井隔离模式

有些 SaaS 服务商选择竖井隔离模式,也就是每个租户都运行在独立的资源环境中。如图6-3所示。

有人会觉得,这不就是传统软件模式吗?为什么还是 SaaS?其实,如果这些独立资源具备标准化的租户身份识别、入驻流程、计费体系、部署和运营流程,那它仍然符合 SaaS 的定义,只不过是给每个客户都提供了一整套独立的基础设施。

优点

  • 满足强隔离需求:有些客户对系统和数据的安全性有极高要求,期望能在完全独立的环境中运行,避免与其他租户的应用实例或数据混合。
  • 计费逻辑简单:对 SaaS 服务商来说,资源使用计费可能很复杂,尤其是涉及计算、存储和网络资源的场景。但在竖井模式下,每个租户都是独立环境,计费模式相对来说会简单许多。
  • 降低故障影响面:因为每个客户的系统都是独立的,一个环境出问题不会影响其他客户的使用体验。

缺点

  • 规模化困难:每新增一个租户就要建立一套独立的环境,少量租户还能应付,但面对成千上万的租户,管理和运营这些环境的难度会成倍增加。
  • 成本高:每个租户单独的环境让机器成本上升,导致 SaaS 服务的盈利能力大打折扣。
  • 敏捷迭代受限:SaaS 的优势之一是快速迭代响应市场需求,但竖井隔离模式让这点变得不易操作,因为更新和管理每个租户的独立环境非常耗时、复杂。
  • 系统管理和监控复杂:在同一个环境中管理和监控基础设施相对简单,但每个租户都独立后,这种分散模式下的管理和监控会变得极具挑战性。

共享模式

相信很多 SaaS 服务商会优先选择共享模式,也就是多租户共享一套基础设施资源,这样能让 SaaS 软件服务更加高效、敏捷、低成本。如图6-4所示。

优势

  • 高效管理:在共享模式下,可以集中管理和运营所有租户,极大提升管理效率。同时,基础设施的配置管理和监控也更加简单。相比竖井模式,共享模式下的产品迭代更新速度更快。
  • 成本低:SaaS 服务商的成本中,基础设施占很大比例。在共享模式下,服务商可以根据租户的实际资源使用情况动态调整系统,极大提高基础设施的利用率,从而降低整体成本。

劣势

  • 租户相互影响:因为所有租户共享同一套资源,如果有租户大量占用资源,可能会影响其他租户的使用体验。为了解决这一问题,通常需要在技术架构上设计一些限制措施(如限流、降级、服务器隔离等),以控制影响范围。
  • 租户计费困难:在竖井模式下,很容易统计单个租户的资源消耗。而在共享模式中,由于所有租户共用资源,准确计算每个租户的使用成本会更加复杂,需要更多的精力和技术投入来实现合理的计费。

分域隔离模式

传统大企业往往更青睐私有化部署和个性化交付的传统模式,因为它们需要更强的管控能力和更高的安全性。而中小企业因为预算有限,需求通常也更标准化,因此更倾向于选择价格低、订购方便的 SaaS 产品。

为满足不同客户的需求,还有一种融合了竖井模式和共享模式的分域隔离模式。如图6-5所示。

在这种模式下,将资源细分为基础域和专用域:基础域使用共享模式,所有租户共享一套资源;专用域则采用竖井模式,每个租户拥有独立的资源环境。

大多数中小客户通常在基础域中使用 SaaS 产品,而只有少数具备强付费能力并有强隔离需求的大客户会选择在专用域中运行 SaaS 产品。

需要注意的是,为避免产生多个产品版本,SaaS 服务商需确保基础域和专用域的产品版本保持一致。

个性化需求尽可能通过 PaaS 平台来实现,让 ISV(独立软件开发商)参与建设。否则,一旦 SaaS 产品的标准化程度降低,多版本的维护将变得极其困难。

本文已收录于,我的技术网站:tangshiye.cn 里面有,算法Leetcode详解,面试八股文、BAT面试真题、简历模版、架构设计,等经验分享。