Green Blue Deployment

自动部署中的一种技术,通过保持一个Blue版本的Deployment,来确保Green版的发布失败后可以进行回滚,类似于建立快照,在Caas(Container as a service)中,通过健康检查(http/tcp)确保每个节点都正常部署到了Green状态,如果发生了异常,则所有节点回滚到Blue状态,主要是因为微服务架构下,service通常会进行冗余部署,以达到高可用性(一个节点挂了,有stand-by node),因此版本更新时,通常是要保证所有节点正常部署的。

原理:
Green-Blue-Deployment

如图,为了保证服务的downtime最小化,通常建立一个单独的Green版本进行测试,当全部测试通过后,将路由转移到Green版本中,此时Blue版本的空闲了出来。
优势:
1)发生故障后,可以快速回滚,仅仅通过将路由转移到Blue版本即可,
此时可能会有丢失Transaction的问题,一种方法是,当Green版本工作时,也会将Transaction同步给Blue版本,以保证一个backup; 另一种方法是,当部署没有完全cut-over的时候,让application处于read-only的状态,此时不会有transaction,当完成后,置于read-write状态
2)永远都有一个standby在工作,当发生灾难时,可以快速恢复
两个环境必须尽可能的独立