我在Windows Azure中进行了以下设置:
当一个构建在测试中得到验证并准备好投入生产时,我们就会启动一个" staging"在生产托管服务中进行部署,并进行快速冒烟测试以确保新构建不会完全破坏。使用将部署到生产的确切位部署临时实例,因此它与生产数据库进行通信。当分段受祝福时,我们点击了'#14; VIP Swap"按钮,构建在生产中生效。一切都很好。
数据库模型更改时会出现问题。我有Code First Migrations完美运行。我可以添加新的迁移,使用包管理器控制台在本地应用它们,然后在我推送新版本进行测试时生成SQL脚本以升级测试数据库。问题是,使用Code First Migrations以及暂存/生产部署的最佳做法是什么?当我使用模型更改将新构建部署到分段时,它期望找到与其模型匹配的数据库。但是,如果我将模型更改应用于生产数据库,生产实例会抱怨,因为它的模型不匹配。
我刚刚跳过了分期烟雾测试。我上传到暂存,然后更新生产数据库并点击" VIP Swap"按钮几乎同时。然后对生产进行烟雾测试。如果某些事情严重受损,"交换VIP"返回并恢复数据库更改。
有更好的方法可以做到这一点,还是那么多呢?
谢谢!
答案 0 :(得分:0)
我不确定什么是最佳做法,因为我找不到任何东西,似乎用户正在使用最适合他们项目的东西并为他们工作。在一种情况下,解决方案类似于您所描述的计划,其中生产数据库为空,而暂存数据库首先使用EF代码创建并应用迁移。测试完成后,脚本将被转移到另一个数据库,该数据库后来与生产连接。
答案 1 :(得分:0)
我一直致力于Azure,EF等以及与您类似的主题。我不知道您的方案目前的最佳做法是什么。但是,我认为使用TFS和/或Github的持续集成工具是有意义的,以便最大限度地降低部署风险。我希望以下文章能为您提供一个观点。
祝你好运