【转载】蓝绿发布、滚动发布、灰度发布/金丝雀发布、AB Test 对比

转载自知乎:蓝绿发布、滚动发布、灰度发布/金丝雀发布、AB Test 对比【https://zhuanlan.zhihu.com/p/147567222】

v2-5557108bfe0fc61396e069149d1a1292_720w

发布类型

  1. 蓝绿发布
  2. 滚动发布
  3. 灰度发布/金丝雀发布
  4. AB Test

蓝绿发布

定义

蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本

特点

蓝绿部署无需停机,并且风险较小。

步骤

  1. 部署版本1的应用(一开始的状态),所有外部请求的流量都打到这个版本上。
  2. 部署版本2的应用,版本2的代码与版本1不同(新功能、Bug修复等)。
  3. 将流量从版本1切换到版本2。
  4. 如版本2测试正常,就删除版本1正在使用的资源(例如实例),从此正式用版本2。

注意事项

  1. 需要提前考虑数据库与应用部署同步迁移 /回滚的问题。
  2. 蓝绿部署需要有基础设施支持。
  3. 在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险。

滚动发布

  1. 滚动发布能够解决掉蓝绿部署时对硬件要求增倍的问题。
  2. 所谓滚动升级,就是在升级过程中,并不一下子启动所有新版本,是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成,这样的话,如果日常需要10台服务器,那么升级过程中也就只需要11台就行了。
  3. 但是滚动升级有一个问题,在开始滚动升级后,流量会直接流向已经启动起来的新版本,但是这个时候,新版本是不一定可用的,比如需要进一步的测试才能确认。那么在滚动升级期间,整个系统就处于非常不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题。

灰度发布/金丝雀发布

定义

灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。

步骤

  1. 在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据。
  2. 当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。
  3. 如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。

AB Test

  1. 我们会遇到很多情况需要我们评估各种不同的方案,以及应该采用哪些策略来测试我们的产品或广告。A/B testing就是一个帮我们选出更好的方案的办法。
  2. 当进行A/B测试时,通常会采用两个(或多个)组:A组和B组。A组是对照组,B组是实验组,B组在某些因素上与A组不同。
  3. 把用户随机地分到这两组,比较这两组的用户行为是否有显著的差异。如果有,那我们就会认为,导致这个行为差异的原因,是B组里的那些与A组不同的因素。
文章目录
  1. 1. 发布类型
  2. 2. 蓝绿发布
    1. 2.1. 定义
    2. 2.2. 特点
    3. 2.3. 步骤
    4. 2.4. 注意事项
  3. 3. 滚动发布
  4. 4. 灰度发布/金丝雀发布
    1. 4.1. 定义
    2. 4.2. 步骤
  5. 5. AB Test
评论