从 Nitro 到 Junction:大规模在生产环境中进行测试

主要观点:

  • 2012 年重建 EC2 核心虚拟化栈,到 2016 年团队编写大量 C 代码,经验表明预生产测试需结合真实生产流量验证,此理念成为 AWS Nitro 可靠性基础。
  • 离开 AWS 后发现 Kubernetes 中这种方法难以获取,于是共同创立 Junction 以提供生产优先测试的网络能力。
  • 介绍 AWS Nitro 及其对 EC2 虚拟化模型的重新设计,传统集成测试存在覆盖范围、不稳定和重写陷阱等限制,2015 年 Nitro 网络虚拟化层的一次更新在生产中出现问题凸显测试盲点的真实成本。
  • 详细阐述 Nitro 的部署管道,包括合成监控、单箱测试、单可用区部署和分阶段全球部署等四个阶段,以确保安全的生产验证,强调生产测试需有适当保障。
  • 指出集成测试有局限性,生产测试在有保障的情况下并非鲁莽行为,Junction 提供轻量级控制平面和客户端 SDK 使渐进式交付简单,让生产优先测试触手可及。

关键信息:

  • 2012 年面临重建 EC2 核心虚拟化栈挑战,2016 年团队编写大量代码。
  • AWS Nitro 是 EC2 虚拟化模型的重新设计,将虚拟化责任转移到专用硬件卡。
  • 传统集成测试存在覆盖范围窄、不稳定、重写陷阱等问题。
  • 2015 年 Nitro 网络虚拟化层更新在生产中出现问题,凸显测试盲点成本。
  • Nitro 的部署管道包括合成监控、单箱测试、单可用区部署和分阶段全球部署等阶段。
  • Junction 提供轻量级工具实现生产优先测试,与 Argo Rollouts 配合使任何团队都能进行生产优先测试。

重要细节:

  • 每个主机在 Nitro 之前在主 CPU 上运行虚拟化软件存在浪费计算和内存等问题。
  • 集成测试在系统规模大时与生产差距大,可能通过所有测试但仍在生产中出错。
  • EC2 随着组织和工程师数量增长,集成测试成为摩擦点,最终采用团队特定集成测试。
  • 2015 年 Nitro 网络虚拟化层更新在特定条件下导致网络故障,通过金丝雀部署控制影响范围。
  • Nitro 的部署管道中各阶段的具体部署方式、观察时间和验证步骤。
  • Junction 提供的工具无需复杂配置即可实现生产优先测试。
阅读 24
0 条评论