我听说过这两个词被用来描述在新机器上部署更新的概念,同时保持旧机器处于活跃状态,以便在出现问题时进行回滚。我还听说过它被用来描述在新服务和旧服务之间分享负载,为了进行回滚 — 有时会终止不活跃的旧补丁,有时则不会。
据我所知,这仅适用于云服务。
有人能帮忙解释一下这些术语吗?
我听说过这两个词被用来描述在新机器上部署更新的概念,同时保持旧机器处于活跃状态,以便在出现问题时进行回滚。我还听说过它被用来描述在新服务和旧服务之间分享负载,为了进行回滚 — 有时会终止不活跃的旧补丁,有时则不会。
据我所知,这仅适用于云服务。
有人能帮忙解释一下这些术语吗?
这是Jez Humble和David Farley在持续交付一书中描述的经典部署技术:
这个想法是有两个完全相同的生产环境,我们称之为蓝色和绿色...系统的用户被路由到绿色环境,即当前指定的生产环境。我们想要发布应用程序的新版本。所以我们将其部署到蓝色环境中...这不会以任何方式影响绿色环境的运行。我们可以对蓝色环境运行冒烟测试以检查其是否正常工作。当我们准备好时,切换到新版本就像简单地更改路由器配置以指向蓝色环境而不是绿色环境一样。蓝色环境因此成为生产环境。这种切换通常可以在不到一秒钟的时间内完成。如果出现问题,我们只需将路由器切换回绿色环境即可。
Humble和Farley接着提到了主要挑战:处理绿色版本和蓝色版本之间的数据库模式更改。
蓝绿部署的主要优点是在发布新版本时零或近零停机时间。而且蓝绿部署还支持金丝雀发布。
蓝绿部署和红黑部署代表相同的概念。
虽然前者是最常见的术语,但后者似乎主要在Netflix及其工具(如Spinnaker)中使用。
它们仅适用于云、虚拟化或容器化服务,也就是说,您的基础架构必须是可自动化的,才能理解这种方法。