How Complex Systems Fail
本文是 Chicago 大学的人写的关于 Failure 的小论文。
- 复杂系统天生就是高风险的。
- 复杂系统设计上花了大量的功夫抵御故障。
- 灾难往往源于多点同时失效。
- 复杂系统总是潜伏着各种混合的故障
- 复杂系统可以被降级运行
- 灾难总是藏在角落。
- 事故后的分析其实没有一个 Root Cause,它肯定是多个地方同时失效连成串。
- 事后评估总觉得故障其实很容易避免,这种事后诸葛亮要不得。
- 人啊,即制造故障,也抵御故障。
- 程序员们都在赌事故不会发生(尽管时候看起来这些事故完全无法避免
- 系统模糊的一些边界行为只有在事故后才会被解决(这些模糊的地方其实本来就没人说清楚过
- 程序员们是复杂系统的一颗螺丝钉
- 复杂系统中的专家,过段时间就会需要另外一批(因为技术也在升级
- 变更会引入新的故障。
- 事后补救往往增加了系统复杂度,并引入了潜藏的风险。
- 安全必须是系统必须满足的特征,而非要去实现的组件。
- 人类会让系统越来越安全
- 不产生故障的操作往往需要有应对很多故障的经验