Netflix的资深软件工程师Michael Graff表示,Kayenta集结了多年Netflix产品快速交付的经验与教训,而现在Kayenta是Netflix交付产品的关键部分,能有效降低改变生产环境所带来的风险。
Netflix与Google共同发布开源的自动化金丝雀分析(Automated Canary Analysis,ACA)工具Kayenta,该服务能帮助开发团队降低快速部署可能发生的风险,以应对现今各种规模以及持续交付的工作。
Netflix的资深软件工程师Michael Graff表示,Kayenta集结了多年Netflix产品快速交付的经验与教训,而现在Kayenta是Netflix交付产品的关键部分,能有效降低改变生产环境所带来的风险。
由于鸟类金丝雀对甲烷以及一氧化碳很敏感,在过去科技较不发达的时代,矿工会带着金丝雀进矿坑,通过金丝雀对空气的反应,判断是否存在危险气体。而对软件工程来说,发布金丝雀版本是一种测试策略,能降低将新版本部署到正式产品环境的风险。
常见做法便是让大部分用户使用稳定正式版,而对小部分用户部署金丝雀版本,并通过分析两个版本产生的数据,来了解新版与旧版的差异。而Kayenta便在其中扮演自动化分析的角色。 Netflix与Google合作后,Kayenta被集成到了开源多云持续交付平台Spinnaker中,现在还能跨多云环境执行自动化的金丝雀测试。
为分析金丝雀版本,Kayenta会把金丝雀版本与产品基准(Production Baseline)相比。理论上应该是拿正式环境的产品来比较,但是由于正式产品已运行一段时间,会产生统计偏斜的问题,因此分析团队需要产生新的产品基准来比较,才能确保后续产生的指标没有偏差。
Spinnaker可以同时执行金丝雀版本与一群产品基准集群,这些集群通常每个都包含2到3个运算实体,而约1%少数实际用户的服务请求,会被导引至这些集群上,并根据时间纪录性能以及功能指标,Kayenta能自动将基准从及与金丝雀版本比对判断,让开发团队了解金丝雀版本与正式版本的细节差异。
Kayenta已集成许多监控工具,包括Stackdriver、Prometheus、Datadog和Netflix Atlas等。当然也能与其他工具整合使用,因为Kayenta为可插拔设计,包括指标来源、判断系统以及结果存储都是。而且因为与Spinnaker集成的关系,Kayenta还可用于在AWS、GCP、Azure、Openstack、Kubernetes或混合环境等,支持分析和部署金丝雀版本的平台。
Michael Graff提到,Netflix正将整个金丝雀测试系统转移至Kayenta,所有工作将在数个月内完成,目前Kayenta每天执行200个的判断,占整体负载30%。他指出,由于受高度信任的部署,而大幅提升开发人员的工作效率。