构建多租户SaaS系统
Tod Golding
本书对传统软件模型与共享基础设施模型进行了对比,从业务角度重新定义多租户SaaS的内涵、优势与边界。
介绍
当我最初开始深入研究软件即服务(SaaS)领域时,本以为会找到大量现成的最佳实践指南。毕竟SaaS绝非一个新概念,已有众多成功的SaaS公司案例,且业界普遍认为SaaS正逐渐成为许多企业首选的交付模式。在我看来,这意味着我主要需要吸收并应用一套现有的模式和策略。而事实上事情并未按此发展,越是深入研究客户的解决方案,就越发意识到在设计、构建和运营SaaS环境时有很多不明确的地方。
缺乏标准为如何定义SaaS留下了大量空间。许多公司在开启SaaS转型之旅时,对采用SaaS交付模式的含义持有截然不同且不一致的看法。这本身并没有什么问题,对SaaS的定义存在不同看法是正常的。当需要与客户合作时,你不能随心所欲地告诉客户去构建系统。创建一个清晰的SaaS原则和策略分类体系,涵盖多个领域、工作负载、客户类型,从许多方面来说,这意味着有意识地摆脱对SaaS解决方案的宽泛定义,转而定义一套更具体的指导原则,以帮助组织规划未来发展路径。
在这过程中,我将建立一个清晰的SaaS环境核心要素分类体系,定义一套适用于SaaS的术语体系,以便我们以更普适的方式对SaaS架构的各个组成部分进行分类和描述。探讨SaaS特有的架构机制,包括租户隔离、入驻流程、分层架构、身份管理、指标监控、计费系统及数据分区等。对于每个领域,我们将通过具体案例进行分析。
对于每个领域,我们将探讨其在不同场景中的具体应用示例。本书若不探讨SaaS的运营要素将是不完整的。正如您将发现的,SaaS环境的架构直接受核心运营业务目标(敏捷性、创新性、成本效率)的影响。我们将贯穿全书探讨这一强关联性,阐述影响SaaS环境架构布局的运营考量因素。总体而言,我认为本书为SaaS架构讨论提供了一个良好的起点。它旨在清晰阐述如何定义SaaS的内涵,突出核心原则、构造和策略,这些要素将指导您构建最佳实践的SaaS架构。
总体而言,我认为本书是探讨SaaS架构的良好起点。它旨在清晰阐述如何定义SaaS的内涵,核心原则、架构要素及策略,这些要素将指导您构建最佳实践的SaaS架构
演变
早期的多租户解决方案对SaaS的理解非常简单,通常采用一种模型,即客户共享一个计算集群,并将每个客户的数据存储在单独的数据库中。今天仍有许多系统采用这种模型——尤其是在团队自行托管和管理SaaS基础设施的环境中。如今,云计算的出现为SaaS带来了全新的可能性。云计算提供的托管服务、动态扩展能力和按需付费特性,为SaaS团队提供了与需求自然契合的工具和机制。组织可以借助云计算的优势,提升其SaaS环境在成本、运营效率和敏捷性方面的表现。在某些情况下,云计算的吸引力如此之大,以至于一些公司将“在云端”等同于“SaaS”(实际上并非如此)。
可以想象,云计算的出现为SaaS开辟了一个全新的领域。它能够简化多租户环境的开发流程,使SaaS团队能够将更多运营复杂性转移到云端,从而减少了摩擦和开销。所有这些引发了SaaS的井喷式增长。这同时也催生了对如何在多租户架构中应用这些云架构的深入洞察和指导的迫切需求。这些因素的交汇——对更广泛、更深入的架构指导的需求、SaaS采用的整体势头以及云计算的影响——推动了对SaaS解决方案设计、构建和运营方式的清晰理解的需求。SaaS最佳实践的领域仍是一个动态变化的状态。SaaS企业的快速演进与新兴技术的出现,持续引入可能影响未来指导的新策略、机制和架构。可以合理推测,SaaS最佳实践与策略将随着技术格局的变迁而持续演变。
这本书适合谁?
本书旨在为从事SaaS解决方案创建、迁移或优化的开发人员、架构师和运维团队提供指导。您可能是刚接触SaaS的新手,正在寻找入门所需的基础概念;也可能是已深入SaaS领域,希望将本书阐述的原则应用于现有解决方案以提升其性能。您会注意到我将运维团队也纳入了这份清单。尽管本书的许多内容将更侧重于开发人员和架构师,但运维团队同样需要深度参与塑造权衡取舍和策略,以定义您的SaaS体验的架构。同样,开发者和架构师也需要更深入地参与运营体验。即使您具备SaaS经验,仍强烈建议您从基础概念开始学习。早期阶段确立的理念将挑战传统SaaS概念,引入影响SaaS环境设计与构建每个环节的术语和思维模式。书中后半部分的示例将展示这些设计选择与模式的具体实现与应用。
另外,内容对SaaS领导者和利益相关者也具有价值。尽管他们可能对技术细节不太感兴趣,但他们很可能会借助本书的基础内容来完善和明确自己的SaaS愿景。采用SaaS时需考虑文化、指标及团队动态等因素,而SaaS战略的成功将高度依赖于领导者是否植根于共同的核心价值观。这往往是构建顶尖SaaS业务时最易被忽视的关键环节。出于相同原因,您可以想象产品所有者及其他与SaaS愿景相关的人员,如何通过深入掌握这些核心SaaS原则来获取价值。
本书未涵盖的内容
SaaS是一个涵盖广泛的主题,当你查看本书的目录时,你会发现本书探讨了设计、开发和实施的多个角度——包括商业主题。虽然这些商业要素是SaaS故事的核心部分,但你会发现我刻意避免深入探讨商业领域的具体细节。关于SaaS销售、营销、市场进入策略、商业模式、指标等主题,已有大量专著进行深入探讨。在我看来,这些主题具有独立性,且更普遍地适用于SaaS领域。尽管我对这些领域有一定了解,但我认为它们更适合作为独立主题进行探讨。我当然建议企业在构建稳健的SaaS业务时,应系统掌握SaaS核心概念,只是本文不会对此展开阐述。
值得注意的是,本书并未试图涵盖SaaS的所有内容。当人们提到SaaS时,往往会联想到许多面向消费者的商业解决方案(B2C)。尽管这些方案对普通人而言更为熟悉,但它们的设计与构建模式对大多数人而言并不典型。大多数SaaS开发者并不试图支持数百万用户。通常,B2C环境会采用其独特的設計策略,这些策略往往针对特定的扩展挑战进行优化。相比之下,支持数百至数千家企业的B2B SaaS公司,在设计和架构其多租户环境时,可能会采取不同的方法。我认为B2C领域很有趣,且B2C的概念与我将探讨的核心原则有大量重叠。同时,我也需承认B2B与B2C策略在某些领域可能存在显著差异。例如,在B2B环境中为租户提供专用基础设施是一个完全可行的选项。但在大多数B2C环境中,这种做法可能难以实现。