专栏名称: 狗厂
目录
相关文章推荐
51好读  ›  专栏  ›  狗厂

Google和Netflix共同开源新的Canary分析工具Kayenta

狗厂  · 掘金  ·  · 2018-04-12 02:19

正文

编者按

Google和Netflix联合发布了全新的开源Canary分析工具Kayenta。Canary(金丝雀部署)是现代Devops和持续交付中重要的一环,指的是把少量(通常1%-3%)的流量导到含有新版本的canary部署上运行一段时间并和当前的生产环境比较,再决定是否将新版本部署到所有机器的过程。转载请注明出处和原文链接。
以下是项目代码:

github.com/spinnaker/k…

在网页端用类IDE的体验浏览和搜索 kayenta 的源代码

经常被查看的文件:

Latest analyzed version: on

为了成规模的实现持续交付,你不仅需要快速地发布软件更新,更需要能安全地发布。今天,Google和Netflix很高兴的发布Kayenta,一款开源的自动化Canary分析服务,该服务能让团队降低高速发布新部署时的相关风险。

由Google和Netflix联合开发的Kayenta是由Netflix内部的Canary系统进化而来,然后重新定义得完全开放,可扩展而且可以处理更多高级的用户案例。它可以给与企业团队快速推送更改到生产环境的信息,通过减少易出错又耗时耗力的人工或者临时的Canary分析。

这允许团队能够轻易的在Spinnaker流水线内搭建起自动的canary分析步骤。Kayenta从源头取回用户设置的数据,运行统计分析再为这次canary提供一个聚合的分数。基于这个分数和设定的成功率限制,Kayenta可以自动接收或者拒绝这次canary,或者出发人工审查逻辑。

“自动化的canary分析是Netflix生产部署重要的一环,我们很兴奋能够发布Kayenta。我们和Google在Kayenta上的合作产生了一种灵活的架构,这个架构会帮助实现在一系列的部署场景下使用自动化的canary分析,这些场景包括应用,配置和数据的更改。Spinnaker和Kayenta的整合让团队可以专注于流水线和部署而不需要用另一个工具做canary分析。年底之前,我们预计Kayenta会每天做出数千个canary判断。Spinnaker和Kayenta都是快速,高可靠又易用的工具,帮助在减少部署风险同时实现快速大规模部署。”
— Greg Burrell, Senior Reliability Engineer at Netflix

Kayenta的最终分析报告如下图所示:

大规模持续交付的挑战
Canary分析是减少生产环境中更新对终端用户影响的风险的好方法。基本的思路是把很小的一部分生产环境流量,例如1%,同时导到含有最新更新的部署的服务器(这也就是所谓的canary)以及与目前生产环境代码和配置一样的服务器(基准参考)上去。生产环境本身没有任何更改。典型地配置是canary和基准配置分别分配三台服务器,生产环境分配多台服务器。建立基准参考服务器是为了减少启动效应从而降低基准服务器和canary服务器间的系统误差。之后系统会比较canary服务器和基准服务器之间关键指标的差别。要继续部署的话需要canary服务器的性能不差于基准服务器的性能。

Canary分析过程通常以人工的,临时的或者统计学上错误的方式进行的。比如说,一个团队成员会人工的检查canary和生产环境的日志和显示多项指标的图表(比如CPU使用,内存使用,错误率,每个请求的CPU使用),来决定是否继续部署新的修改。人工或者临时的canary分析会造成下列额外的挑战:

  • 速度和规模瓶颈:对于Google或者Netflix这样企业,每天都要在多个部署之间做多个性能比较,手工的canary分析实际上不可行。即使对于其他的企业,手工的canary分析也无法跟上持续交付的速度。为每个canary发布都配置仪表图需要大量人力,手工的比较canary和基准之间的几百个指标也是费事费神。







请到「今天看啥」查看全文