混沌工程目的不是在故意在生产环境里搞破坏。搞破坏很容易,难的是下面这几件事:减小爆炸半径,批判性地思考安全性,确定漏洞值不值得修复,决定是否应该做实验。

为什么做实验

对复杂系统来说,寻找做对的地方比寻找做错的地方信息量更大。故障往往来自系统内部的未知相互作用,靠预测很难提前发现。

混沌工程用实验去认识系统的真实属性:在受控条件下注入故障,观察系统怎么反应,把”我以为它会怎样”变成”它实际怎样”。知道了这些,团队才能用测试手段规避错误,让系统更有韧性。

冗余不是答案

想让系统更健壮,一味加冗余只会掩盖问题。冗余本身也在引入复杂度:多一套副本,就多一套同步、切换、失败处理的逻辑,这些都是新的故障点。

比如给订单服务加一台备用节点,听起来更稳了。但故障演练时可能发现:切换逻辑要 40 秒才完成,业务早就超时了。冗余只是把”故障”变成了”没被验证过的故障”。

先想清楚再动

混沌工程不是想做就做的实验。每一步都要回答:爆炸半径多大?会不会伤到真实用户?这个漏洞值得修吗?这次实验要验证什么假设?

这四件事想清楚了,再决定要不要在生产环境动手。