DevOps金丝雀发布

丝雀发布

金丝雀发布(canary release)的名字很是好听。我们都知道以前矿工在下井采矿之前会把一种名叫金丝雀的鸟儿投入或携带到矿井中,如果鸟儿能够从矿井中飞出就表示井下有氧气,矿工就可以安心下井采矿了。通过这个故事的讲述我们可能已经猜到金丝雀发布的含义了。是的,所谓金丝雀发布就是把应用程序的某个新版本部署到生产环境中的部分服务器中,从而快速得到反馈。就像通过金丝雀发现矿井是否有氧气一样,金丝雀发布可以快速而有效地发现软件新版本存在的问题。

 

以下是关于金丝雀发布的示意图:

DevOps金丝雀发布

 

在互联网公司经常流行一种说法叫做灰度发布,其实金丝雀和灰度发布的机理是一致的,即把应用程序的某个新版本部署到生产环境的部分服务器或部分用户群体中,从而得到快速反馈并降低可能的发布风险。您可以把金丝雀发布理解为灰度发布的初始级别。灰度发布可以把发布分成不同的阶段,至于划分为几个阶段或每个阶段包括多少用户由具体组织的情况而定。

比如BAT之一的腾讯公司为了验证其QQ或微信的新特性是否能够受到市场的青睐又不至于造成广大用户针对此新特性的负面评价,该公司往往采用灰度发布的做法,先把新特性按照不同的阶段或周期推送给其所谓的粉丝级用户群,在获得正面反馈后,再进入下一个预设阶段的推送,确保分批地把新特性推给更多目标用户。在确定新的软件特性在风险可控的情况下,再逐步部署到全部的服务器上,从而支持所有用户针对新特性的新体验。