2017-05-05 41 views
0

Chaos engineering实践正在变得非常广泛的使用。一个常见的例子是Netflix自己的Chaos Monkey。但是,混沌猴往往是针对随机目标进行特别设置的。我很好奇混沌实验如何在典型的CI/CD pipeline中工作以增强特定服务的弹性。混沌工程如何看起来像流水线的一部分?

  • 由于混沌实验(通常)需要一个功能齐全的环境,它们何时会运行?它会平行于测试还是下游?
  • 您是否会对每次提交都运行一次混沌实验,或者只是一些?
  • 将允许混沌实验运行多久?例如,60分钟的CPU峰值可能会干扰“快速失败”的方法。
  • 混沌实验是否会失败?什么会构成“失败”?

回答

1

我们刚刚开始了我们的混沌工程,但我会提供一些关于您的问题的想法。

至少有三个不同类别的实验:

  • 实例/容器杀死我们预计底层基础架构自动处理。
  • 更高级别但相当本地化的失败,例如缓慢或不可用的依赖关系。
  • 大规模故障,如数据中心或地区下降。

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

就故障恢复能力是系统需求而言,是的,一个失败的实验会失败。假设构建392有一个正确工作的断路器,而构建393则没有。这将是一个失败,因为构建从满足要求到不。