【问题标题】:Correct approach for deploying a content management Web Application for different accounts on Azure platform在 Azure 平台上为不同帐户部署内容管理 Web 应用程序的正确方法
【发布时间】:2014-03-31 13:33:19
【问题描述】:

我开发了一个商业Asp.Net MVC Web 应用程序。该应用程序是标准的,在 IIS Web 服务器上运行并利用 SQL Server 数据库。我们的商业模式是,我们在客户的 Intranet 或数据中心现场部署我们的应用程序。也就是说,对于每个这样的客户(帐户),我们都会提供完整的设置,通常安装在专用的独立服务器中。每个此类帐户都有自己的私有内容、用户、配置等。

我们希望在 WWW(公共互联网)上扩展和提供我们的服务。经过一番研究,我选择了Microsoft’s Azure cloud platform 来托管我们的应用程序。通过一些小的努力(主要是教应用程序使用 blob 与 Azure 的文件存储一起工作),我已经成功地使用三种云服务完全部署到云:网站、数据库和文件存储。

请注意,我为两种部署类型(Intranet 和 Cloud)使用了相同的代码库,通过对 Debug、Release - Intranet、Staging - Azure、Production - Azure 使用不同的配置。

但是,该应用程序(如现在所写的那样)只能为单个客户帐户提供服务,而我需要我们的云版本来为众多帐户提供服务(希望很多;)……每个帐户都有自己的私有数据集。

问题:我应该在这里采用以下哪种策略?

  1. 更改应用程序,使其支持多个帐户。这意味着数据模型(在数据层中添加 Account 实体,将其绑定到所有内容类型等)和业务逻辑中的更改。

  2. 为每个帐户在云上创建自己的站点(网站 + 数据库 + 文件存储服务)。这意味着将同一应用程序多次部署到不同的 Azure 服务。

很明显,这里第一种方法所需的开发量非常大,系统稳定性的风险也很大,而第二种方法需要的工作量要少得多。

但是,我不清楚如何管理一组许多相同的服务(应用程序),每个服务(应用程序)服务于不同的客户帐户。我已经开始在这里寻找一些可以帮助我的工具(例如Red Gate),并且希望听到更多。

另一个问题是成本 - 这样的解决方案是否使用许多云服务而不是仅使用少数几个,比更标准的“一个应用程序用于所有帐户”方法的成本更高。

谢谢,

【问题讨论】:

    标签: asp.net-mvc azure multi-tenant multi-instance-deployment


    【解决方案1】:

    我会推荐 (1)。就开发工作而言,它的短期成本较高,但长期而言会更好,原因有两个:

    1. 更便宜。通过添加更多的云服务,成本会上升很多。我想你可以把这笔费用转嫁给你的客户吗?

    2. 跨多个客户端管理版本确实变得更加困难。

    我想说您可以花时间重构您知道的现有代码 - 或者 - 您可以学习如何针对 Azure 进行开发操作以管理版本。重构你所知道的东西可能比学习新东西更容易。

    请注意,有许多出色的 SDK 可用于自动化部署、扩展云服务等。

    【讨论】:

      【解决方案2】:

      找到一些关于这个问题的好读物:

      MSDN: Developing Multi-tenant Applications for the Cloud, 3rd Edition

      很好地比较了两种方法:

      • 单实例,多租户(我的第一个选项)
      • 多实例,单租户(我的第二个选项)

      看起来我将采用多租户方法。所有的事情都认为它看起来需要更少的开发工作,并且需要更少的维护工作。此外,我的专长在于应用程序开发,而不是系统管理(这是真正实施多实例解决方案所必需的)。

      其他原因:需要在帐户(租户)之间共享一些内容,而这在使用单个数据库时会更容易实现。此外,还有可以利用此解决方案的产品的未来计划。

      数据分离将完成(高级):

      • 文件存储(blob):为每个租户(帐户)使用单独的容器。

      • 数据库:使用租户唯一键将内容与租户关联

      • Cahce:使用租户唯一键为缓存的数据项生成缓存键。

      可扩展性:使用一个实例来简单地扩展其功能甚至将网站移动到专用虚拟机更容易。未来还可以将系统增强为多实例、多租户结构,为大租户创建新的独立实例。

      【讨论】:

        猜你喜欢
        • 2017-06-23
        • 1970-01-01
        • 2017-09-19
        • 2016-08-24
        • 2020-05-05
        • 2016-06-01
        • 2018-10-15
        • 2021-02-07
        • 2015-02-19
        相关资源
        最近更新 更多