【发布时间】: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 使用不同的配置。
但是,该应用程序(如现在所写的那样)只能为单个客户帐户提供服务,而我需要我们的云版本来为众多帐户提供服务(希望很多;)……每个帐户都有自己的私有数据集。
问题:我应该在这里采用以下哪种策略?
更改应用程序,使其支持多个帐户。这意味着数据模型(在数据层中添加 Account 实体,将其绑定到所有内容类型等)和业务逻辑中的更改。
为每个帐户在云上创建自己的站点(网站 + 数据库 + 文件存储服务)。这意味着将同一应用程序多次部署到不同的 Azure 服务。
很明显,这里第一种方法所需的开发量非常大,系统稳定性的风险也很大,而第二种方法需要的工作量要少得多。
但是,我不清楚如何管理一组许多相同的服务(应用程序),每个服务(应用程序)服务于不同的客户帐户。我已经开始在这里寻找一些可以帮助我的工具(例如Red Gate),并且希望听到更多。
另一个问题是成本 - 这样的解决方案是否使用许多云服务而不是仅使用少数几个,比更标准的“一个应用程序用于所有帐户”方法的成本更高。
谢谢,
【问题讨论】:
标签: asp.net-mvc azure multi-tenant multi-instance-deployment