BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Kayenta:来自Netflix和Google的开源金丝雀分析工具

| 作者 Abel Avram 关注 11 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2018年4月19日. 估计阅读时间: 3 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

Kayenta是一种开源的自动金丝雀分析工具,用于评估新版本软件产品的准备良好程度。作为一种Netflix内部开发的工具,Kayenta在Google的帮助下已集成到Spinnaker,实现了跨多个云执行自动金丝雀发布。要分析新软件版本是否就绪,其中可以包含代码更改和(或)配置调整。

金丝雀发布是一种用于降低新版本软件部署到生产环境中风险的技术。其中,新版本软件被称为“金丝雀”,面向一个小范围的用户子集部署,并与稳定运行版本一并运行。用户流量将分别分割给这两个版本,使得部分用户输入请求转向金丝雀。

在对一个金丝雀版本进行分析时,Kayenta需要试探该版本,并将试探结果与生产基线给出的结果相对比。理论上讲,Kayenta可以将金丝雀与实际生产系统做对比。但是由于生产系统已经运行了一段时期,这种做法会给出一个在统计上存在偏向性的结果。在分析中创建一个全新的基线集群,这确保了所生成的度量免受任何长期运行过程的影响。

Spinnaker在供用户访问的生产系统之外,同时运行一个金丝雀集群和一个新的基线集群。通常每个集群会包括三个实例,但这并非一个固定不变的设置。随后,来自于一小部分(大约1%)实际客户的请求将被导向给这些集群,系统将收集一系列的性能和功能度量并做日志,存储到一个时序数据库,之后做自动对比,进而查看金丝雀与基线的对比情况。该称作“判定”(judgement)的过程给出一个介于0到100之间的整体分值。判定步骤可多次执行,而非仅做一次。

Netflix Kayenta traffic routing
Netflix的金丝雀发布过程(图片来自Netflix技术博客

 

判定的分数划分为三等,即成功(金丝雀可被提升为部署)、临界(可能需要人为介入去确定需要对版本做什么),以及失败(停止整个流水线并回滚,进入其中的流量被导向回生产系统)。

Kayenta已集成了Stackdriver、Prometheus、Datadog和Netflix Atlas等多种监控工具。因为整个系统采用了插件式设计,Kayenta也支持使用其它一些工具,包括度量源、判定系统和结果存储。

与Spinnaker的集成,使得Kayenta可在AWS、GCP、Azure、Openstack、Kubernetes等受支持平台以及一些混合系统上分析并部署金丝雀。

Netflix正在将其整个金丝雀部署系统迁移到Kayenta。按Netflix的说法,迁移有望在未来数月内完成。Kayenta当前每日约运行200次判定,涉及约全部负载的30%。Netflix补充介绍,“通过在部署中为工程人员提供更高度的信任,Kayenta增加了开发人员的生产力。”

查看英文原文: Kayenta: An Open Source Canary Analysis Tool from Netflix and Google

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT