更新数据库,api和Web应用程序时的版本控制问题

时间:2016-12-20 15:03:23

标签: c# .net sql-server asp.net-web-api deployment

我有数千个SQL Server数据库(每个客户端一个)。当我们决定推动生产时,我们大部分时间都会在数据库,Web API和Web应用程序中进行更改。

问题是部署所有内容所需的时间,尤其是数据库。我们正在使用Code First迁移和MVC .NET和SQL Server,所有这些都使用最新版本。这是一个SaaS。代码第一个迁移过程能够逐个更新数据库。

API和Web应用程序可在几秒钟内快速部署。但是,数据库在大约30分钟内全部更新。在此期间,一些用户遇到错误,无法使用该软件,因为API试图以非更新的数据库为目标。更糟糕的是,如果在数据库更新期间出现故障并停止,则未更新的用户将被阻塞,直到我们解决问题并更新其余数据库为止。

知道如何解决这个问题并让客户满意吗?

PS:Web应用程序无法访问数据库,只能访问API。

1 个答案:

答案 0 :(得分:1)

这个问题有点基于意见。维护窗口方法最简单。如果你想进行实时更新,另一种方法是:

  1. 在数据库中保留版本号
  2. 允许并行运行多个版本的Web API
  3. 通过查看数据库中的版本
  4. 选择要使用的API版本
  5. 确定Web API的公共接口是否稳定。如果不是,也找到一种方法允许并排运行多个网站,并根据数据库中的版本选择哪一个
  6. 实现这一目标最可维护的方法可能是拥有至少3台服务器:

    1. 一个托管旧版本的后端服务器
    2. 托管新版本的一个后端服务器
    3. 前端服务器,根据当前版本将用户路由到适当的后端服务器。
    4. 路由只能在登录时进行,或者您可以做一些更奇特的事情,例如在检测到升级时重定向登录用户。显然,这些都不涉及在客户端数据库的实际升级过程中对一个特定客户端发生的情况。你仍然需要单独解决这个问题。