第 21 章 结论 结论
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
复原力 是由人创造的。编写功能的工程师、操作和维护系统的人员,甚至为系统分配资源的管理层,都是复杂系统的一部分。我们每个人都在创造复原力的过程中发挥着作用,利用我们的经验并集中关注系统的这一特性。
工具可以提供帮助。混沌工程是我们可以用来提高系统复原力的工具。作为本行业的从业者,我们的成功并不取决于消除系统的复杂性,而是取决于学会与复杂性共存、驾驭复杂性,并在潜在复杂性的基础上优化其他关键业务属性。
当 我们说明工具和工具周围的人之间的区别时,我们将工具称为 "线下"。而将工具落实到位的人员和组织则是 "线上"。作为软件专业人员,我们经常关注的是 "线下 "发生的事情。我们更容易发现问题所在,也更容易指责这些问题。如果能将问题归结为一行代码,然后修复这一行代码,我们就会在心理上感到满足。但我们必须抵制这种诱惑。
在本书中,我们深入探讨了线下和线上的工作。我们阐述了这些工作如何有助于构建更好的系统。我们对人员、组织、人际互动、工具、自动化、架构、创新和数字化转型都进行了探讨。我们认为,人与技术共同构成了一个 "社会技术 "系统,如果不探索硬币的两面,并将它们的互动方式纳入背景,就无法完全理解这个系统。
这可能会产生一些意想不到的副作用。例如,我们并不总能通过编写更多代码来提高系统的可靠性。通常情况下,提高系统鲁棒性的最佳策略是围绕如何应对危险建立更好的一致性。对齐是无法工程化的,至少无法像软件那样工程化。
延斯-拉斯穆森(Jens Rasmussen)经过数十年的研究,从社会学、决策理论、组织社会学和心理学,到人为因素和工程学,他写道:"我们的研究结果表明,系统的协调性是一个非常重要的因素:
,改善风险管理最有希望的一般方法似乎是明确确定安全运行的界限,同时努力让参与者看到这些界限,并让他们有机会学习如何应对这些界限。除了提高安全性外,使边界清晰可见还可以提高系统的有效性,因为在已知边界附近运行可能比要求过大的余量更安全,因为后者在压力下可能会以不可预测的方式恶化。1
这一结论的结果是,与寻找 "根本原因 "或执行规则相比,事件审查和弹性属性的情境化更加务实和可行。
事实上,强制执行提高可靠性的规则可能会误入歧途。例如
-
从直觉上讲,为系统增加冗余会使其更加安全。不幸的是,经验告诉我们,这种直觉是不正确的。冗余本身并不能使系统更安全,在很多情况下,冗余反而会使系统更容易失效。请看挑战者号航天飞机固体火箭助推器上的冗余 O 形环。由于有了辅助 O 形环,工程师们在固体火箭助推器上的工作随着时间的推移使主 O 形环的失效正常化,从而使挑战者号在超出规格的情况下运行,最终导致了 1986 年的灾难性故障。2
-
从直觉上讲,消除系统的复杂性会使其更加安全,这是有道理的。不幸的是,经验告诉我们,这种直觉是不正确的。在构建系统的过程中,我们可以对各种事情进行优化。我们可以优化的一个特性就是安全性。为了做到这一点,我们必须构建一些东西。如果从一个稳定的系统中去除复杂性,就有可能去除使系统安全的功能。
-
从直觉上讲,高效运行一个系统会使其更安全,这是有道理的。不幸的是,经验告诉我们,这种直觉是错误的。高效的系统是脆弱的。允许低效是件好事。低效率允许系统吸收冲击,允许人们做出决策,以补救无人计划的故障。
构建安全系统的直观但不正确的规则不胜枚举。这是一个很长的清单。遗憾的是,我们并没有很多可以普遍适用的通用规则。 ...