2017-01-09 35 views
1

在我工作的公司,我们为数据库隔离的多个组织开发和托管CRM系统 - 即我们的客户不共享1个类似于Facebook的大型数据库,每个客户端都有独立的数据库,但是同样的CRM软件。所有其他系统方面(如缓存)都是特定于组织的。多个组织的系统设计

我们正在将服务器迁移到AWS上,这给了我们一个思考基础架构的机会。

我们的基础系统是使用CodeIgniter框架编写的,所以我们在考虑不使用同一个CRM的多个实例,而是根据主机名/用户帐户创建单个实例并附加相关的数据库凭据(此方法CRM将通过专用的URL访问)。例如。如果用户A为公司B工作,我们将连接到公司B的数据库而不是公司C.这个例子也有助于我们的版本控制。

我只是想知道其他人是否有过类似的经历,以及总体感觉是保持实例完全隔离还是迁移到真正的“软件即服务”单实例方法?

回答

0

它实际上取决于数据库的大小和流量。如果你有很多流量,单独的数据库会更好,因为如果他们需要更多的资源,它可以轻松地将它们移动到自己的服务器实例上,而且它可以轻松管理。如果流量不大,则可以使用一个数据库,但如果您需要针对特定​​公司的具体情况,则这样做风险很大。明智的做法是,单个实例更容易维护,因为您不必单独为每个实例推出更改,并且如果您的服务器达到容量,只需使用负载平衡器并旋转同一个webserver的更多实例()记住DB应该在单独的服务器上。

+0

数据库大小相对较小,每个组织5 GB。我很可能会查看额外的用户身份验证层,该层映射到组织,然后加载相关的数据库凭据。然后让所有人通过https:// crm。[x] .com访问。 - 我看过负载均衡器,拥有单个域名要直截了当。 – aldocx

+0

如果您拥有专用的URL,则负载平衡可能会变得复杂,但如果您需要它,仍然可能。至于解决方案本身,这与我们为多客户端项目所做的相同:一个应用程序和专用数据库,如果所有客户端的核心逻辑相同,则只需按用户组处理数据库连接。 – Auris

0

此主题的作者已接受提案作为答案。不过,我建议您阅读multi-tenant architecture,这将引导您更多。在这里,您可以将个别公司关联为租户。

0

有在选择多tencancy或单租户架构,其中包括一些重要的注意事项:

  • 安全 - 你能有效地隔离数据,访问,权限等多租户环境?
  • 基础设施成本 - 您是否能够有效地利用单一租户的服务器/平台容量?在AWS上,缩放可以帮助解决这个问题。
  • 许可费用 - 在单一租借环境中是否存在重要的额外许可证费用(通常更多的服务器意味着更多的许可证)?
  • 实施和维护的成本/成本 - 单租户解决方案是否需要更多精力来管理部署和维护基础架构?