第二十五篇:稳定性之灰度发布
第二十五篇:稳定性之灰度发布
随着用户规模逐渐增长、产品的更新频繁,新版的每次上线,各方都要承受极大的压力,一旦产品发布出现事故,可能影响的范围和损失都比较大,为了解决产品发布过程中的风险控制,要有部分的用户参与到新产品中,体验使用观测其真实反馈,如果没有用户的参与,直接面对全量用户,那么风险是可想而知的。
灰度发布
为了控制产品发布过程中的风险、故有了灰度发布,百度百科的解释是这样的:
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式,在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度;灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。
灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。
灰度发布是在线上同时存在新旧两个版本,根据不同策略,按需分配部分流量比例到新的版本,支持流量新旧切换、及切换流量比例,也可支持快速回滚,通过观测这部分用户使用新版本的状态状况数据,渐进式完成新版本的全量上线,最大限度地控制新版本发布带来的业务风险,降低故障带来的影响面。
灰度类型
灰度发布的类型,通常情况下可分为前端、客户端、服务端,灰度有个原则就是要能够保证用户请求的完整性,例如:要么该用户的全部请求有新版本提供服务,要么由旧版本提供服务,不可能一会旧版本一会新版本,原因是可能存数据依赖问题。
灰度策略
灰度策略是我们要选择哪些用户体验新版本,比较常用的就是按照人划分,可按照用户ID、用户IP、设备等其他标签多维度策略,来观测使用效果,还有其他的方式例如随机分配流量百分比、渠道等等。
可观测性
通过灰度策略,筛选出合适的用户体验新版本状态,通过可观测性观测各项SLI指标来评判SLO,以及用户满意度,决策是否扩大还是暂停(回滚)灰度策略。如果没有可观测性,如何得知新版本这部分用户的使用状况,那么也无法决策是否继续或暂停,要能够通过数据反馈来支持决策。
流量染色
根据流量协议设置对应的流量染色规则,对指定的流量进行染色标记,并在整个调用链中携带该标记,以便于对染色流量进行跟踪和路由,流量染色的方法可分为逻辑染色、物流染色两种,如下:
- 逻辑染色:该方式是通过携带灰度因子,通过层层调用传递的方式进行程序逻辑控制。
- 物理染色:该方式是按照机器的维度分流。
小结
灰度发布可以在灰度期很好进行发布产品过程中的风险控制,降低发布带来的风险,通过小流量的方式进行小范围验证,实现平滑过渡,因此我们要在适当的时候使用灰度发布,灰度发布是非常有用的,但是灰度发布也带来一定的复杂性和成本,这也是需要重视的,不能因实施灰度发布而带来其他稳定性问题。