将单租户迁移到多租户应用程序

时间:2013-12-06 07:51:21

标签: multi-tenant

我们正在将单租户应用程序升级为多租户(每个客户端的单独数据库)SaaS应用程序。我的责任是设计租户配置部分。我在考虑以下步骤。

  1. 虽然我们的管理员将安装我们的软件,但应始终创建一个数据库。此步骤的参数是管理员仅在至少租户出现时才安装软件。因此,在我们的软件安装过程中创建单个数据库应该是有意义的。

  2. 公共元数据将存储在一个公共位置。我们正在考虑使用ZooKeepar来存储公共元数据。

  3. 每位租户都会获得一个子域名。例如www..samplaTenent.com。此tenant_id将从每个请求中的URL中提取,并将用于标识特定租户和相应的数据库。

  4. 如果需要配置更多租户,管理员将通过用户界面创建新的数据库实例。

  5. 使用的技术:

    1. Java 6
    2. Struts框架
    3. MS SQL
    4. 现在,我想就拟议的解决方案获得专家意见。我们可以通过其他方式构建健壮,安全且可扩展的SaaS应用程序吗?

      感谢。

1 个答案:

答案 0 :(得分:0)

恕我直言,我建议您应该有一个兄弟代码库,可以处理多租户方面,包括db的配置,每个租户的设置等。我不知道你现在拥有的代码库。因此,您可以按如下方式进行配置部分, 1.通过获取所有必备信息来配置新租户。您可以自动生成此租户的URL,或允许租户选择后者,并且必须对URL和租户组合进行验证。 2.在此步骤完成时,您可以在服务器上放置一些脚本来克隆主代码库并推出新的特定于租户的数据库。事情是自动化的。 3.下一步是将租户数据库和应用程序详细信息存储在您的公共或共享数据库中,以便在租户登录时,您可以将其重定向到他的URL。如果要从主应用程序处理所有租户及其用户身份验证,则需要db详细信息。 4.拥有单一代码库的主要优势在于定制和配置可以在一个地方,易于代码维护和错误修复或增强。虽然这可能不适用于所有场景,但从长远来看,这是我觉得更合适的选择。

请分享您的想法或发布您可能对多租户提出的其他疑问。