在我工作的公司,我们为数据库隔离的多个组织开发和托管CRM系统 - 即我们的客户不共享1个类似于Facebook的大型数据库,每个客户端都有独立的数据库,但是同样的CRM软件。所有其他系统方面(如缓存)都是特定于组织的。多个组织的系统设计
我们正在将服务器迁移到AWS上,这给了我们一个思考基础架构的机会。
我们的基础系统是使用CodeIgniter框架编写的,所以我们在考虑不使用同一个CRM的多个实例,而是根据主机名/用户帐户创建单个实例并附加相关的数据库凭据(此方法CRM将通过专用的URL访问)。例如。如果用户A为公司B工作,我们将连接到公司B的数据库而不是公司C.这个例子也有助于我们的版本控制。
我只是想知道其他人是否有过类似的经历,以及总体感觉是保持实例完全隔离还是迁移到真正的“软件即服务”单实例方法?
数据库大小相对较小,每个组织5 GB。我很可能会查看额外的用户身份验证层,该层映射到组织,然后加载相关的数据库凭据。然后让所有人通过https:// crm。[x] .com访问。 - 我看过负载均衡器,拥有单个域名要直截了当。 – aldocx
如果您拥有专用的URL,则负载平衡可能会变得复杂,但如果您需要它,仍然可能。至于解决方案本身,这与我们为多客户端项目所做的相同:一个应用程序和专用数据库,如果所有客户端的核心逻辑相同,则只需按用户组处理数据库连接。 – Auris