1.4 什么不是混沌工程
如果你只是在商店里浏览本书,希望你已经从中得到了一些价值。更多的信息即将到来,所以不要把它放在一边!通常情况下,细节决定成败,在接下来的章节中,你将更深入地了解如何执行前面的四个步骤。我希望现在你可以清楚地看到混沌工程所提供的好处,以及实现它所涉及的大致内容。
但在我们继续之前,我想确保你也明白不要期望从本书中得到的内容。混沌工程不是银弹,不能自动修复你的系统、治愈癌症,或保证减肥成功。事实上,它甚至可能不适用于你的用例或项目。
一个常见的误解是,混沌工程是关于随机破坏事物的。我想“混沌”这个名字对此有些暗示,并且Chaos Monkey(https://netflix.github.io/chaosmonkey/)作为第一个在该领域赢得互联网声誉的工具,在很大程度上依赖于随机性。但是,尽管随机性可能是一个强大的工具,有时甚至与模糊测试重叠,你还是希望尽可能紧密地控制与之交互的变量。通常,注入故障很容易,困难的部分是要知道在哪里注入以及为什么注入。
混沌工程不仅仅是Chaos Monkey、Chaos Toolkit(https://chaostoolkit.org/)、PowerfulSeal(https://github.com/bloomberg/powerfulseal)或GitHub上众多可用的项目中的任何一个,这些只是使实现某些类型的实验更加容易的工具,真正困难的地方在于学习如何批判性地看待系统,并预测脆弱的点在哪里。
重要的是要明白,混沌工程不能取代其他测试方法,如单元测试或集成测试。相反,它是对它们的补充:就像先单独测试安全气囊,然后在碰撞测试期间再次将安全气囊与汽车的其余部分一起测试,混沌实验是在不同的层面上进行的,并在整体上测试系统。
本书不会为你提供有关如何修复系统的现成答案。相反,它将教你如何自行发现问题以及在何处寻找问题。每个系统都是不同的,尽管我们将共同的场景和陷阱结合在一起,但你需要深入了解系统的弱点才能提出有用的混沌实验。换句话说,你从混沌实验中获得的价值将取决于你的系统、你对系统的了解程度、想要对其进行测试的深度,以及建立可观测性的程度。
尽管混沌工程的独特之处在于它可以应用于生产系统,但这并不是它迎合的唯一场景。互联网上的很多内容似乎都围绕着“在生产环境中破坏”,很可能是因为这是你能做的最激进的事情,但同样,这并不是混沌工程的全部——甚至不是它的主要关注点。应用混沌工程原理并在其他环境中运行实验也可以带来很多价值。
最后,尽管有一些重名,但混沌工程学并非源于数学和物理学中的混沌理论。我知道:这让人烦恼。在家庭聚会上回答这个问题可能会很尴尬,所以最好做好准备。
消除了这些注意事项,让我们通过一个小案例研究来了解一下混沌工程是什么样的。