目前有各种各样的技术来将新应用部署到生产环境,所以权衡对系统和终端用户的影响降至最少,选择正确的方式是非常重要的。
本文将着重讨论如下部署策略:
重建部署:版本A下线后版本B上线
滚动部署(滚动更新或者增量发布):版本B缓慢更新并替代版本A
蓝绿部署:版本B并行与版本A发布,然后流量切换到版本B
金丝雀部署:版本B向一部分用户发布,然后完全放开
A/B部署布:版本B只向特定条件的用户发布
影子部署:版本B接受真实的流量请求,但是不产生响应
我们来看一下每个策略最适合哪种用户使用场景。为了简化,我们使用Kubernetes,并用Minikube进行例子演示。每个策略的配置例子和详细步骤都可以在这个Git仓库[1]上找到。
重建策略是一个冗余的方式,它包含下线版本A,然后部署版本B。这个方式意味着服务的宕机时间依赖于应用下线和启动耗时。
便于设置
应用状态完整更新
缺点:
对用户影响很大,预期的宕机时间取决于下线时间和应用启动耗时