我有成千上万个SQL Server数据库(每个客户端一个)。当我们决定推动生产时,我们大部分时间都在数据库中更改Web API和Web应用程序。
问题是部署所有内容,尤其是数据库所需的时间。我们使用的是Code First Migration和MVC .NET和SQL Server,所有这些都带有最新版本。这是SaaS。代码首先迁移过程能够一对一地更新数据库。
API和Web应用程序在几秒钟内非常快速地部署。但是,数据库都在大约30分钟内更新。在此期间,一些用户会出现错误,无法使用该软件,因为API试图针对未更新的数据库。更糟糕的是,如果在数据库更新期间,某些东西会失败并停止,则未更新的用户被卡住了,直到我们解决问题并更新数据库。
任何想法如何解决这个问题并使客户开心?
ps:Web应用程序无法访问数据库,而仅访问API。
这个问题基于意见。维护窗口方法最简单。如果您想实时更新,另一种方法是:
- 在数据库中保留一个版本号
- 允许并排运行多个版本的Web API
- 通过查看数据库中的版本 中选择哪个版本的API
- 确定Web API的公共接口是否稳定。如果没有
完成此操作的最可维护的方法可能是拥有至少3个服务器:
- 一个托管旧版本的后端服务器
- 一个托管新版本的后端服务器
- 基于当前版本将用户路由到适当后端服务器的前端服务器。
路由只能在登录时进行,或者您可以做一些更奇特的事情,例如在检测到升级时重定向登录用户。显然,这些都不涉及在该客户端数据库的实际升级中一个特定客户端发生的情况。您仍然需要单独解决。