支持多租户


10

将单租户应用程序转换为多租户应用程序时会遇到哪些典型挑战?安全性和数据隔离使我感到最重要。还有什么?

我是从事相当大的自动化工作的架构师之一,从历史上看,这只是我们公司在使用它。我们希望其他人也可以使用它。每次我们谈论“使其成为多租户”时,讨论都围绕使一个租户的用户远离另一租户拥有的数据,并确保拥有一个租户的用户不能(有意或无意)对另一租户产生影响租户的环境。我想知道的是,安全/数据隔离是否真的是这里唯一的主要问题,还是我们只是没有在考虑其他一些主要问题。


最简单的解决方案?整个系统的一个新实例,包括从头开始是空的硬件(每个租户一个新系统)。如果系统和数据非常有价值,那么这可能是一个不错的选择。如果您不喜欢每个实例的新硬件,请使用虚拟化。它可能不是最有效,但肯定会省去很多麻烦。
SF。

从设计的角度来看,这可能是最简单的,但是从管理的角度来看,似乎并非如此。至少我们的系统管理员对此提议并不十分满意。(是的,我们正在使用VM。)通过更多实例进行管理(监视,部署等)。实际上,我们正在寻找使这种方法更易于管理的方法,以便在此处实现某种物理隔离,但是从表面上看,方法似乎将开发人员的简单性换成了管理员的简单性...?

Answers:


11

除了孤立数据之外,您可能还会遇到以下问题

  1. 可用性-一个租户,他们只能自己进行DoS,但是即使数据被正确隔离,租户仍会耗尽资源。
  2. 日志记录-所有日志消息均假定为一个租户。除非您为每个租户分配孤岛日志,否则日志消息可能会变得用处不大。
  3. 并发性-单个租户应用程序可能在中等负载下运行,或者争用一些锁的高争用可能会有效地序列化某些操作。如果每个租户的锁倍增,您可能会开始看到以前从未发生过的操作交错。极不可能出现的比赛条件现在可能会出现。
  4. 资源争用的新来源-在以前可能有n个套接字和m个文件句柄的位置,现在将每个租户相乘。
  5. 可配置性/向后兼容性的折衷-在您推出替换组件之前可以过时的组件之前,现在可能有一个租户要求一个组件,而一个租户要求其替换的旧组件无限期地存在。
  6. 传票目标-当前,您是与公司相关问题的传票目标。对于多租户,即使您不是法律诉讼的当事方,您也可能必须响应传票请求。

其中一些假设您正在同一地址空间(计算机或群集)中运行所有租户。如果每个租户都在其硬件上运行您的软件,则可以对上述内容进行模拟并添加:

  1. 难以访问机器进行调试。
  2. 对较旧版本的支持请求。
  3. 请求允许第三方承包商进行配置。
  4. 对其运行的硬件的控制较少。
  5. 对其运行的操作系统的补丁/更新周期的控制较少。

1

我认为多租户中最大的问题是定制。如果要向企业出售业务应用程序,通常会发生这种情况。它的范围从简单到每个客户都希望拥有自己的皮肤的能力到配置其他字段,规则,表单和报告的能力。您需要支持的定制级别在体系结构中至关重要。


1

Mike的回答非常好,由于其中的简短程度,那里的许多要点几乎掩盖了它们的复杂性,因此请牢记这些。

我要补充的一点是,您应该具有用于​​创建(以及以后管理)新租户的良好管理工具。根据您所使用的物理体系结构,这可能并非易事,并且经常被忽略。仅当有大量租户时,软件即服务产品的好处才会真正发挥作用,因此应为此付出相当大的努力。

扩展斯里拉姆的答案;严格禁止按租户自定义,租户可能要更改的所有内容都应该是可配置的。例如,如果您的解决方案不能满足至少几个关键领域中动态添加数据字段的需求,那么您可能会被大量的自定义请求所困扰。这是为数不多的情况下,一点点额外的复杂性的前期不实际还清一个(让我们说这违背了YAGNI,或至少,这一级别的配置几乎是一个关键要求,所以你要去需要它)。


为什么“禁止”定制?这在技术上当然是可以实现的。存在许多不同的模式,这些模式将允许多个租户重用核心系统,同时仍为单个租户提供定制的作品。如果客户愿意为您的定制付款,那么考虑考虑是合理的。因此,许多多租户产品都有针对每个客户端的自定义设置。遵循YAGNI IMO的精神是允许可扩展性,而不是默认使所有内容都可配置。
RationalGeek

1
好吧,我通常指的是软件即服务的实现(来自“多租户”)。当然,这在技术上是可以实现的,但这与SaaS的基本原理背道而驰。从财务角度看,您可以通过共享实施以及可能为许多租户使用的基础结构来降低成本。这使您可以以较低的价格提供产品,从而赶上了市场的“长尾巴”(大量人只愿意支付少量)。您可以维护一个系统的5个分支,但不能维护15000,这就是SaaS的目标。
Daniel B

在企业级别,我经常看到SaaS供应商愿意为他们的代码进行重大定制以吸引客户。当客户为服务支付6或7个数字时,这可能是一种合理的商业模式。
RationalGeek

是的,在那种情况下,我想是的。我见过的大多数更改都是作为新的可配置功能实现的,这些功能默认情况下已为现有客户端关闭。我认为问题在于,前3个或4个客户每人都将受到特殊待遇,因为该解决方案尚未开始。该解决方案最终过于具体,并创建了一种“好,我们就来破解”的文化。但是,是的,我同意您对大客户的评论。
Daniel B

这是你们围绕可定制性做出的有益区分。我认为相同的概念也可能适用于可管理性。我们的多租户可能针对的是相对较少的大型客户,而不是长尾客户。如果多租户的主要目的是捕获长尾,那么对于我们来说,它甚至可能不是正确的方法。感谢您的思考。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.