将新版本发布到 Azure app/services 的最佳方式?

The best way to publish new version to Azure app/services?

假设我有 1 个调用 1 个 azure api 服务的 azure 应用程序。现在我需要将两个应用程序更新到更新版本,在最大范围内,即数据库不兼容,api 对现有方法签名进行了更改,这些签名也不与旧版本调用兼容。我使用 visual studio 的发布配置文件直接更新。我一直面临的问题是,在发布过程中,虽然只有几秒钟的时间,但仍有活跃的最终用户在网络应用程序上做事并进行 api 调用。我亲眼见过这种情况下的结果不稳定、不可预测,并且保存的数据可能只是损坏的数据。 那么有没有更好的方法来实现某种对最终用户绝对没有副作用的 'flash update'?谢谢

您应该查看不同的部署策略。首先更新数据库,可能接受空值,在当前数据库旁边部署一个新的 API。验证它。将流量从当前流量切换到新流量。网站也一样。这是一种蓝绿色部署策略,需要更多的努力,但可以解决停机或错误问题。 https://www.martinfowler.com/bliki/BlueGreenDeployment.html

对于 Web 应用程序,您应该使用部署槽,将新版本部署到暂存槽,准备就绪后,只需将站点 URL 指向新槽即可。这根本不需要任何时间。

对于数据库,我认为您应该冻结更新,进行备份并让用户以只读模式工作,一旦完成所有数据库迁移和更改,将应用程序指向新数据库即可.