蓝绿
主要思路是在新版本在另一套独立的资源上上线,新版本起来后将所有流量从老版本切换到新版本上来。当新版本工作正常,则删除老版本,当新版本工作有问题,则快速能切回到老版本。因此蓝绿发布看上是一种热部署的方式,目的是减少发布过程中的服务停止时间。
可以看到因为两个版本都是可用,其升级切换和回退速度非常快。为了达到这种快速切换付出的代价是搞冗余的资源,即2倍的原有资源,分别部署新老版本。此外一个问题是全量的切流量,如果新版本有问题,则所有的用户将受影响。
ABTesting
场景比较明确,就是同时线上两个版本接收流量,比较哪个版本更被访问者接受。
当一个版本A在线处被使用,上一个新的灰度版本B,选择一部分试验客户,通过评价用户访问来验证不同版本在可用性、受欢迎程序等实际表现上。类似于互联网公司同一个产品交给两个AB团队做,最后评价留下一个干掉一个。
所以ABTesting里面比较重要的环境是Test前的设计和Test后的评估。即要规划好怎么开始测试,是随机的分一部分流量到灰度版本B上,还是把特定的访问者,如来自某个区域的,某种特征的用户导流到灰度版本上。尤其是后者的决策过程可能是一个非常复杂或者业务特点非常强的过程,怎么能对的毙掉一个版本,留下另外一个版本,所以一般灰度发布都有一个平台在支撑,除了流程上的支撑外,收集数据来支持决策是非常重要的一方面。
金丝雀发布(灰度发布)
从形态上看ABTest和金丝雀基本上没有差别,都是两个版本同时在线,引部分流量到一个灰度版本上,但ABTest更侧重于有目的比较AB两个版本的差异,并进行决策。
灰度发布是指在黑白之间,能够平滑过度的一种发布方式 。类度发布是在原有版本可用的的情况下,同是部署一个新版本应用作为“金丝雀”(金丝雀对瓦斯极敏感,矿井工人携带金丝雀,以便及时发现危险)。