@Rays
2018-04-12T19:23:22.000000Z
字数 1244
阅读 1978
架构&设计
摘要: Kayenta是一种开源的自动金丝雀分析工具,用于评估新版本软件产品的准备良好程度。
作者: Abel Avram
正文:
Kayenta是一种开源的自动金丝雀分析工具,用于评估新版本软件产品的准备良好程度。作为一种Netflix内部开发的工具,Kayenta在Google的帮助下已集成到Spinnaker,实现了跨多个云执行自动金丝雀发布。要分析新软件版本是否就绪,其中可以包含代码更改和(或)配置调整。
金丝雀发布是一种用于降低新版本软件部署到生产环境中风险的技术。其中,新版本软件被称为“金丝雀”,面向一个小范围的用户子集部署,并与稳定运行版本一并运行。用户流量将分别分割给这两个版本,使得部分用户输入请求转向金丝雀。
在对一个金丝雀版本进行分析时,Kayenta需要试探该版本,并将试探结果与生产基线给出的结果相对比。理论上讲,Kayenta可以将金丝雀与实际生产系统做对比。但是由于生产系统已经运行了一段时期,这种做法会给出一个在统计上存在偏向性的结果。在分析中创建一个全新的基线集群,这确保了所生成的度量免受任何长期运行过程的影响。
Spinnaker在供用户访问的生产系统之外,同时运行一个金丝雀集群和一个新的基线集群。通常每个集群会包括三个实例,但这并非一个固定不变的设置。随后,来自于一小部分(大约1%)实际客户的请求将被导向给这些集群,系统将收集一系列的性能和功能度量并做日志,存储到一个时序数据库,之后做自动对比,进而查看金丝雀与基线的对比情况。该称作“判定”(judgement)的过程给出一个介于0到100之间的整体分值。判定步骤可多次执行,而非仅做一次。
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