複雑なシステムはなぜ失敗するのか:単一の原因ではなく複合的な欠陥が引き起こす大事故

How Complex Systems Fail

複雑なシステム(交通、医療、電力など)は本質的に危険を内包し、多重の防御層で守られている。しかし、大事故は単一の故障ではなく、小さな欠陥が連鎖して発生する。システムは常に劣化した状態で稼働しており、事故後の「根本原因」の特定は根本的に誤りで、後知恵バイアスが分析を歪める。安全はシステム全体の創発特性であり、人々の継続的な適応によって作り出される。

事故後の「根本原因」への帰属は、技術的な理解ではなく、特定の局所的な力や出来事を非難する社会的・文化的欲求を反映している。
  1. tptacek

    私はこの文書がどれほど重要かについて、いつも同じことを繰り返している。複雑なシステムが実際に故障するのを長期間経験するまでは、その価値を理解するのは難しい。

    この文書で最もよく引用される含意や主旨は、「根本原因分析」は、少なくとも複雑なシステムにおいては、愚か者の試みだということだ。何かが、例えば分散ロックシステムでうまくいかなくなり、デプロイメントシステム全体が準安定な障害状態に入る。当然、「根本原因」はロックシステムの回復力にあるように思える。しかし定義上、準安定な障害とは、誘因となる条件が解決された後も持続するものである。これで「根本原因」が2つになる。ロックの障害と、デプロイメントシステムの障害の準安定性だ。さらに探せば、もっと見つかるだろう。

    しかし、私にとってこの文書で最も頭を殴られるのは、どんな複雑なシステムでも、ランダムなことが常に失敗しているというさらなる観察だ。「複雑なシステムは劣化モードで動作する」。回復力のあるコンポーネントは良いが、全体を指揮するプロセスの回復力こそが、物事が爆発するかどうかを決定する。

    すべての実践者の行動は賭けである。これをどこかにインクで書いておくべきだ。

  2. anonymars

    「システムは、多くの冗長性と、多くの欠陥にもかかわらず人々が機能させることができるために、機能し続ける。事故後のレビューでは、ほぼ常に、システムが大惨事を生みかねない過去の『プロト事故』の履歴を持っていたことが指摘される。これらの劣化した状態が顕在事故の前に認識されるべきだったという議論は、通常、システム性能に関する素朴な概念に基づいている。システム運用は動的であり、コンポーネント(組織的、人的、技術的)が故障し、継続的に交換されている。」

    これは、アドミラル・クラウドバーグのナショナル空港衝突事故の記事を非常に彷彿とさせる:

    「複雑なシステムを見て、それが正確にどのように故障するかを高い精度で予測できる人間はいない。しかし、十分なデータがあれば、労働安全分野でハインリッヒの法則として知られているものによって予測が可能になる。それは、重大な事故1件につき約300件の『ヒヤリハット』があるというものだ。あるいは、この法則の最新版によれば、死亡事故1件につき約3,000件のヒヤリハットと約30,000件の『リスク行動』が伴う。[39] 統計的に、数百から数千のリスク行動とヒヤリハットが最初の死亡事故の前に発生する可能性が高く、命が失われる前にリスクを特定する機会を提供する。」

    https://admiralcloudberg.medium.com/reaping-the-whirlwind-in...

  3. jedberg

    > 故障のない運用には、故障の経験が必要である。

    これが、私たちがカオスエンジニアリングを創設した理由です。絶えず故障を強制することで、常にその故障に備えたシステムを構築するようになり、特定の故障モードにおけるさまざまなシステムの転換点がどこにあるかについて優れたデータが得られました。

  4. ChrisMarshallNY

    この[素晴らしい]論文を見るたびに、最初のセクションの最初の文にいつも心を打たれます:

    > すべての興味深いシステム(例えば、交通、医療、発電)は、それ自体の性質上、本質的かつ不可避的に危険です。

    (強調は私)

    それがタイポなのか、私の無学な頭では理解できない文章の慣習なのか、確信が持てません。

  5. feyman_r

    以前の投稿で共有したかもしれませんが、ジョン・ゴールの本はこのテーマについて本当に良いです:General Systemantics [https://en.wikipedia.org/wiki/Systemantics]

この日のほかの記事

2026-08-23