【发布模式】蓝绿部署、滚动部署、金丝雀发布(灰度发布)、AB测试

引用

金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

蓝绿部署

蓝绿部署的目的是减少发布时的中断时间、能够快速撤回发布。

  • 蓝绿部署中,一共有两套系统:一套是正在提供服务系统,标记为“绿色”;另一套是准备发布的系统,标记为“蓝色”。两套系统都是功能完善的,并且正在运行的系统,只是系统版本和对外服务情况不同。

  • 两套系统在运行,正在对外提供服务的老系统是绿色系统,而版本迭代会部署在蓝色系统。

  • 蓝色系统不对外服务,经过反复的测试、修改、验证,确定达到上线标准之后,直接将用户流量切换到蓝色系统。

  • 当确信对外提供服务的蓝色系统工作正常,不对外提供服务的绿色系统已经不再需要的时候,蓝色系统正式成为对外提供服务系统,成为新的绿色系统。 原先的绿色系统可以销毁,将资源释放出来,用于部署下一个蓝色系统。

滚动部署

  • 逐个摘除发布主机的负载,然后更新该服务器版本,将更新好的服务器加入负载,继续下一台服务器…

金丝雀发布(国内称为灰度发布)

  • 金丝雀发布(Canary)也是一种发布策略,和国内常说的灰度发布是同一类策略。

  • 先更新发布集群中个别主机,然后观察验证。确认没有异常之后,再将剩余的所有服务器更新。

AB测试

  • A/B测试是效果测试,同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分(它们上线时可能采用了蓝绿部署的方式)。

  • A/B测试关注的是不同版本的服务的实际效果,譬如说转化率、订单情况等。

  • A/B测试时,线上同时运行多个版本的服务,这些服务通常会有一些体验上的差异,譬如说页面样式、颜色、操作流程不同。相关人员通过分析各个版本服务的实际效果,选出效果最好的版本。

功能开关发布

  • 前面的发布都是属于代码层面的版本迭代,而功能开关发布,则通过配置功能开关,完成新版本代码逻辑的实现

  • 功能开关发布可以和蓝绿部署、滚动部署、金丝雀发布(灰度发布)、AB测试的配合

影子测试

  • 将生产的流量请求复制引入到测试环境,正在测试环境,模拟生产的实际业务请求。

  • 技术复杂度较高,对用户信息安全、生产数据迁移\脱敏等要求较高。

各种发布机制对比

引入下大神的图…
【发布模式】蓝绿部署、滚动部署、金丝雀发布(灰度发布)、AB测试