无论多么复杂的软件最终都是人写出来的。
任何对分布式系统和复杂度管理的讨论最终都必须承认 人在我们设计和运行的系统中 的角色。人是我们创造出来的复杂系统中不可分割的一部分,而且很大程度上我们要对他 们的多样性(variability )和适应性(resilience )负责(或对他们缺乏这两种特性负 责)。
作为复杂系统的设计者、建造者和运营者,我们受一种厌恶风险(risk-averse)文化 的影响,不管我们是否意识到这一点。在试图(在进程、产品或大型系统中)避免故障的过 程中,为了使自己能够有更多“把控”(control),我们倾向于粗细不分地列出需求( exhaustive requirements)和创建紧耦合(tight couplings),但这种方式经常 更容易导致故障,或者产生更脆弱的系统。
当系统发生故障时,我们的方式是责备(blame)。我们粗鲁地寻找所谓的故障“原因” —— 实际上,相比于寻找真正原因以避免将来再出现类似问题,这种所谓的寻找故障“原因”的 过程经常只是一个减轻负罪感和寻求内心平静的活动。这类活动通常会导致人们继续加强对 系统的“把控”,而结果是最终的系统更加脆弱。
这里的现实是:大部分大故障都是一连串小故障叠加的结果,最终触发了某个事件(most large failures are the result of a string of micro-failures leading up to the final event)。这些故障并没有根本原因(There is no root cause)。我们最好不 要再去试图寻找根本原因了,这样做只是在攀登文化期望(cultural expectations)和强 大且根深蒂固的心理本能(psychological instincts)的悬崖峭壁。
20 世纪 80 年代奏效的流程和方法论,到了 90 年代已略显落后,现在更是完全不适用了 。我们正在探索新的领地和模型,以构建、部署和维护软件 —— 以及开发软件的组织自身( organizations themselves) 。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。