我正在开发一款基于云的应用程序,它安装在 Ubuntu 下,正如您所期望的那样。例如,服务器安装如下:
apt-get install snapserver
目前,我们的项目有近 20 个包裹。
我们还没有运行的集群,但我们认为在某个时候我们会有许多计算机运行该软件,一些计算机作为前端,一些计算机作为后端。
我的问题是:您通常如何更新实时集群?我担心的是,新代码可能会在数据库中生成与旧代码不兼容的新条目。如果发生这种情况,并且客户端访问仍运行旧版本的服务器,则最终可能会崩溃。
在这种情况下最佳做法是什么?
答案1
这里可以采用一种事务性部署流程。本质上,您要做的就是:
- 启动第二个集群
- 将当前生产数据复制到新的数据库服务器(确保此数据库使用当前数据进行更新)
- 启动第二个申请流程
- 运行系统测试
- 如果系统测试通过,则终止旧集群
- 如果系统测试失败,返回开发,关闭新设置的集群
当您拥有 VM 容器提供商(例如 VMware、AWS、Heroku、OpenStack 等)时,执行此类操作会更容易。