我们有一个由.NET前端和SQL后端组成的Web应用程序。 我们还有一个使用WebAPI连接到.NET前端的移动应用程序。 目前,我们在美国的一台物理服务器上托pipe应用程序。 我们有来自世界各地的多个客户端,从Web浏览器和移动设备login到应用程序。
我们有不less客户要求两种情况:
“应用程序可以在美国以外的国家托pipe”(为了安全/国家安全局的担忧)
“我们可以自己托pipe应用程序吗?”(对于大型企业客户)
我们使用Github的前端代码进行变更pipe理。 部署网站代码相当简单,因为我们已经构build了一个同步实用程序,允许我们从Git存储库更新生产服务器。 但是,从我们的testing服务器更新SQL生产服务器更多的是手动任务(模式,存储过程等)。 我知道那里有软件(redgate等),可以用SQL做类似的变更pipe理,但这不是我的问题。
大多数公司如何处理来自多个地理位置的应用程序托pipe,考虑到一些客户希望能够将其数据独自托pipe在一个位置(出于安全原因),而其他客户则希望将其数据托pipe在一个,更多或所有位置共享,以允许连接到最近的服务器。 作为一个额外的细节,我们将FREQUENT变更为代码(每日),因此将代码和SQL更改推送到多个隔离的主机环境,并确保所有内容都同步,这是一个令人头疼的问题。
如上所述,我们目前在一个数据场中的物理服务器上进行托pipe。 使用AWS,Azure等来完成这个任务会更容易吗?
我认为你真的在这里面临两个问题:
您希望您的应用程序位于多个位置,这是云提供程序(如Azure或AWS)可以提供帮助的地方,您可以在多个区域进行部署,而无需在该位置存在。 您可以使用内置的负载平衡工具在单个区域中实现故障转移,也可以使用Azurestream量pipe理器等工具跨越多个区域。 您可以根据stream量和负载平衡configuration文件将用户分配到单个区域或多个区域。
你的第二个问题是能够部署你的应用程序,特别是你将在多个地区有很多实例的地方。 这不是一个真正的云问题,而是一个工具和stream程问题。 如果您要扩展到多个地区和多个地区的多个实例,那么在您的stream程的任何部分手动部署都不会再削减。 您需要能够安全快速地部署到所有地区(或某些地区),并且知道它们都将是相同的,特别是在负载平衡的情况下。 要实现这一目标,唯一的方法就是看看您的stream程,以消除复杂性,或使用工具为您处理。 有一些手动SQL部署的解决scheme,你提到Redgate,但也有其他的,Visual Studio甚至有一个数据库版本控制工具。