专业书籍精读 · Chaos Engineering · 第 6 章

微软:实验的变化与优先级

Chaos Engineering: System Resiliency in Practice · Ch 6 · Microsoft · 2020

EN →

这一章讲什么?

前两章讲的是「怎么演一场」——Slack 给老系统写剧本,Google 把演练放大到整个公司。这一章退后一步,问一个更基本的问题:该先摇哪一个?

一个稍复杂的线上系统,可能出错的地方多到数不完;而你一年只做得好几十次实验。这几十次该花在哪?

打个比方:体检该先查哪一项

医院能查的项目有上千种,你只有一个上午。

聪明的做法不是随机抽几项,也不是把最贵的仪器都用一遍,而是看两件事:这个毛病在你这个年纪有多可能发生,以及万一真有,后果有多重。心脏和血压排前面,热带寄生虫排后面——不是后者不要紧,是它在你身上概率太低。混沌实验的排序用的是同一把尺子。

旧世界为什么难

很多团队做混沌的第一步是装个工具,然后把工具会做的事当清单:它能随机关机器,于是就一直关机器。

关了两百次,每次都没事。这令人安心,但也可能只说明:你早就知道会没事。而真能把系统打倒的那几件事,一次都没摇过。

更尴尬的是另一半:真要列个完整清单,又列不完。依赖有二三十个,每个出问题的方式又有好几种,相乘就是几千几万种。

核心机制直觉:三件事

带来了什么 / 该怎么选

好处是把有限的次数花在真会有收获的地方。还有一条很省力的规矩:结果你已经知道的实验,不要做。清楚它一摇就出事,那就别摇,直接去修——摇它只是给自己安排一次真事故。诚实说一句代价:排序靠的是对概率和影响的估计,而估计会错,排在后面的故障照样会找上门。

一句话记住

能出错的地方无穷多,你的实验次数有限——所以混沌工程的真功夫不在怎么注入,而在把「先摇哪个」排对:从依赖清单出发,优先那些「变慢」和「给错数据」的形态,用「多可能 × 多疼」排序,并且跳过你已经知道答案的那些。

想进到具体机制、量级和示意图? → 切到精读版