Netflix 如何使用 Kayenta 做 Canary 部署
本文是 Netflix 工程博客的一篇文章,简述了他们如何使用 Kayenta 做 Canary 部署。
- 基本概念介绍:上线切 1% 流量到 Canary 环境,出错就停止部署,一切正常就应用到所有生产环境的 instance 去。
- 一些额外的工作:
- 为了防止 long-running process 的影响,在 production cluster 外起 baseline cluster + canary cluster 用于对比。
- 系统自动分析 canary 的结果,基于httpcode, load avg, 错误,响应等指标。如果指标评估通过就自动应用,否则 abort 掉部署。
- 解决的痛点:Canary 部署后以前要人工观察日志,监控数据做出决定,一周只能做一两次。
- 实现:
- Metric Retrieval: 不实现,使用现有的监控设施,例如Prometheus
- Judgment:首先做数据校验剔除NODATA(监控瓦特了),然后处理NODATA(可以是标记NAN,或者报错,或者用替代指标),再接着对baseline和canary的指标对比,给出每一项指标的 High Pass Low 等评估结果,最后打分,生成 Report。
延伸思考:这项技术解决的痛点是无法 scale 部署,解决方法是将之前人工做的事情流程化,自动化。当就 Judgement 那块的特性而言,他用来做 Canary 评估太可惜了,完全可以用在生产环境大量服务的监控上。