金丝雀自动化分析工具 Kayenta

Google and Netflix announced the launch of Kayenta, an open-source Automated Canary Analysis(ACA) tool.

May 27, 2018 - 1 minute read -
CI/CD canary

canary deployment

金丝雀实践

金丝雀部署的基本想法是路由少量生产环境的流量,例如 1%,到两个新部署的应用环境中。 其中一个部署的是新版本应用,称之为金丝雀(canary),另一个部署的是与线上有相同版本和配置的应用, 称之为基线 (baseline)。

一般我们给 baseline 和 canary 都是三个新的 server 实例。

创建新的 baseline 可以最小化初始成本和限制系统的变量(差异)部分,保持 baseline 和 canary 的一致性。

然后对比 baseline 和 canary 之间,关键的性能和功能指标。来决定当前部署的成功性,决定是否要继续接下来的部署。

金丝雀分析,习惯上常为人工的或是专门的、统计的不正确指标。

举例来说:对于 baseline 和 canary 之间的 server 实例,需要人为地在监控/日志系统中,检查一系列相关的指标(CPU usage, memory usage, error rate, CPU usage per request),来为下一步的部署做决定。

Kayenta 实践

人工或是专有的指标分析会带来下面的风险和挑战。

  • 速度和扩展性瓶颈:人工分析慢,尤其时在指标繁多,复杂度高和大规模的情况下
  • 依赖人治: 人难免犯错
  • 做出错误决定的风险:比较的是新部署的应用,短时间内的指标/考量,一些隐晦问题难发现

为解决该问题,Netflix 和 Google 合作开发了一款自动化的金丝雀分析工具 Kayenta

kayenta 的优势:

  • 开源:避免了使用商用产品的信任度(提供敏感指标)和厂商锁定的情况
  • 支持混合云和多云:方便集成到 Spinnaker (Netfix 的部署工具)
  • 可扩展性:支持多样化的指标/数据源/环境改变等
  • 易上手:不需要自定义脚本或是人为的获取/合并指标到分析系统中
  • 灵活:支持高级案例,例如实时的边界或参数调整
  • 洞察力:支持复盘

alter text

集成 spinnaker

kayenta 于 spinnaker 集成

Metric Comparison

Reports

更多阅读