ハードウェア

なぜ複雑なシステムでは障害が発生しやすいのか


医療や輸送、発電といった複雑なシステムでは、大きな障害が発生することがあります。複雑なシステムで障害が発生しやすい理由をシカゴ大学医学部教授のリチャード・クック氏がまとめています。

How Complex Systems Fail
https://how.complexsystems.fail/

一般的に、複雑なシステムにおける大規模な障害は、複数の小さな不具合が積み重なることで引き起こされています。しかし、これらの不具合を完全に取り除くことは不可能だとクック氏は語ります。


システムの設計時には、限られた時間の中で求められる要件を満たしたシステムを設計することが求められます。そのため、目立った障害を引き起こす大きな不具合は設計段階で取り除くことができますが、目立った障害を起こさない小さな不具合はシステムに残り続けてしまいます。これらの小さな不具合を取り除くには、長い時間と多額の費用が必要です。

さらに、複雑なシステムはシステムの一部が完全に機能していなくても動作するように、冗長性を持たせて設計されます。そのため小さな障害が発生していても通常に機能しているように見えるため、小さな不具合を発見することは非常に困難です。


また「小さな不具合」により引き起こされた大きな障害は、障害発生後の対応でも問題が起こりがち。たとえば大規模な障害が複数の小さな不具合によって引き起こされているにも関わらず、エンジニアたちは「根本的な原因」を探りだそうとしてしまいます。それに加えて、後知恵バイアスによって「この障害は事前に予想できたはずだ」という考えも不具合の修正の妨げになっているとのこと。


クック氏は、「システムの設計者が実際に不具合に触れる機会を増やすことで、複雑なシステムの不具合を適切に修正し、不具合を減らすことができる」と述べています。

この記事のタイトルとURLをコピーする

・関連記事
開発者の扱うコードの量や複雑さはここ10年で100倍以上に増えている - GIGAZINE

「バグ報奨金の稼ぎ方」が少しわかりそうな「Facebookに存在するバグ脆弱性レポート」 - GIGAZINE

20年前の「2000年問題」の影響が時間を超えて各所で起こっているとの報告 - GIGAZINE

カオス理論で知られる複雑な状況を「機械学習」によって正確に予測する技術が開発されている - GIGAZINE

in ソフトウェア,   ハードウェア, Posted by log1o_hf

You can read the machine translated English article here.