现在对于稳定性的要求越来越高,同时在维护的应用中有一个正在进行迁移,需要采取一些措施来实现平稳升级和迁移。采用灰度发布是一个可行的方案。
什么是灰度发布
百度百科上的解释是这样的
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
从上面的解释,我们不难看出,灰度发布包括三个要点:
分别部署A,B两个版本
选择测试用户并逐渐切流
将测试用户切到B版本,不能影响到政策用户对A版本的使用
灰度发布主要的作用也显而易见:
降低发布带来的影响。即使在日常和预发环境进行充分测试,但也没人能保证线上一定是好的。测试环境和线上毕竟不是完全一样,测试也不可能覆盖所有地方
通过新老版本对比,验证新版本带来的效果。
怎么做灰度发布
在开始介绍灰度发布之前,我们先看一下没有灰度的发布流程是怎么样的:
直接替换部署
如果变更是兼容的:
通常的发布方式是底层服务先进行发布,然后上层应用跟着进行发布。前端CDN比较特殊,会在web层之前进行非覆盖式发布(CDN 本质是一个OSS文件,每次发布CDN版本+1,并保留之前的版本)。web层带着最新的CDN版本在最后发布