1

混沌工程实践正变得非常广泛使用。一个常见的例子是 Netflix 自己的Chaos Monkey。但是,Chaos Monkey 经常针对随机目标临时运行。我很好奇混沌实验如何在典型的CI/CD 管道中发挥作用,以增强特定服务的弹性。

  • 由于混沌实验(通常)需要一个功能齐全的环境,它们什么时候运行?它会与测试并行运行,还是在下游运行?
  • 你会在每次提交时进行混沌实验,还是只做一些?
  • 混沌实验可以运行多长时间?例如,60 分钟的 CPU 峰值可能会干扰“快速失败”方法。
  • 混沌实验会让管道失败吗?什么会构成“失败”?
4

1 回答 1

1

我们的混沌工程工作才刚刚开始,但我会就您的问题提供一些想法。

至少有三类不同的实验:

  • 我们期望底层基础设施自动处理的实例/容器终止。
  • 更高级别但相当局部的故障,例如缓慢或不可用的依赖项。
  • 数据中心或区域停机等大规模故障。

对于构建管道,最佳点将在中间(即更高级别但本地化的故障),因为通常软件本身在响应故障方面发挥作用。例如,软件可能包括一个断路器,它会跳闸、节流、自动故障转移等。如果这些是软件功能,那么它们可以工作也可以不工作,构建应该发现这一点。

就故障恢复能力是系统要求而言,是的,失败的实验将使管道失败。例如,假设 build 392 有一个正常工作的断路器,而 build 393 没有。这将是一个失败,因为构建从满足要求变为不满足要求。

于 2017-05-05T20:37:10.397 回答