将单租户应用程序转换为多租户应用程序时会遇到哪些典型挑战?安全性和数据隔离使我感到最重要。还有什么?
我是从事相当大的自动化工作的架构师之一,从历史上看,这只是我们公司在使用它。我们希望其他人也可以使用它。每次我们谈论“使其成为多租户”时,讨论都围绕使一个租户的用户远离另一租户拥有的数据,并确保拥有一个租户的用户不能(有意或无意)对另一租户产生影响租户的环境。我想知道的是,安全/数据隔离是否真的是这里唯一的主要问题,还是我们只是没有在考虑其他一些主要问题。
将单租户应用程序转换为多租户应用程序时会遇到哪些典型挑战?安全性和数据隔离使我感到最重要。还有什么?
我是从事相当大的自动化工作的架构师之一,从历史上看,这只是我们公司在使用它。我们希望其他人也可以使用它。每次我们谈论“使其成为多租户”时,讨论都围绕使一个租户的用户远离另一租户拥有的数据,并确保拥有一个租户的用户不能(有意或无意)对另一租户产生影响租户的环境。我想知道的是,安全/数据隔离是否真的是这里唯一的主要问题,还是我们只是没有在考虑其他一些主要问题。
Answers:
除了孤立数据之外,您可能还会遇到以下问题
其中一些假设您正在同一地址空间(计算机或群集)中运行所有租户。如果每个租户都在其硬件上运行您的软件,则可以对上述内容进行模拟并添加:
Mike的回答非常好,由于其中的简短程度,那里的许多要点几乎掩盖了它们的复杂性,因此请牢记这些。
我要补充的一点是,您应该具有用于创建(以及以后管理)新租户的良好管理工具。根据您所使用的物理体系结构,这可能并非易事,并且经常被忽略。仅当有大量租户时,软件即服务产品的好处才会真正发挥作用,因此应为此付出相当大的努力。
扩展斯里拉姆的答案;严格禁止按租户自定义,租户可能要更改的所有内容都应该是可配置的。例如,如果您的解决方案不能满足至少几个关键领域中动态添加数据字段的需求,那么您可能会被大量的自定义请求所困扰。这是为数不多的情况下,一点点额外的复杂性的前期不实际还清一个(让我们说这违背了YAGNI,或至少,这一级别的配置几乎是一个关键要求,所以你是要去需要它)。