【システム】なぜ複雑なシステムでは障害が発生しやすいのか
1: すらいむ ★ 2021/01/04(月) 11:05:00.34 ID:CAP_USER

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

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

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

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

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

(以下略、続きはソースでご確認下さい)

Gigazine 2021年01月04日 06時00分
https://gigazine.net/news/20210104-complex-system/

引用元: ・【システム】なぜ複雑なシステムでは障害が発生しやすいのか [すらいむ★]

2: 名無しのひみつ 2021/01/04(月) 11:07:55.83 ID:cJIftGxH
システムが複雑だから
8: 名無しのひみつ 2021/01/04(月) 11:48:56.23 ID:5nlC0Xa+
>>2
で、終わり、だよねぇ
38: 名無しのひみつ 2021/01/04(月) 20:50:09.70 ID:lSAG+R+H
>>2
だよねえ。
40: 名無しのひみつ 2021/01/04(月) 20:56:18.11 ID:2ssczfBm
>>2
で終わってた
4: 名無しのひみつ 2021/01/04(月) 11:27:16.22 ID:WNN+jrxS
>>1
中身がないな
5: 名無しのひみつ 2021/01/04(月) 11:38:27.65 ID:wjM+y/oA
複雑だから障害が起きる
単純なら障害が発生し難い
6: 名無しのひみつ 2021/01/04(月) 11:41:11.03 ID:XmIfOyiK
なにを当たり前の話を長々と
7: 名無しのひみつ 2021/01/04(月) 11:48:44.26 ID:9OcELJNs
MTBF
昔からの常識だ
49: 名無しのひみつ 2021/01/05(火) 12:51:02.07 ID:l29hx4O6

>>7

だな。常識だわ。

つまり、複雑大規模なシステムは当然ながら多数の部品から構成されている。
それら1つ1つの故障発生確率があるが、直列部品の非故障率の積が全体の
非故障率になる。 たとえば電力網では、発電所・送電線・変電所のいずれか1つが
故障したら停電になる。 それぞれの非故障率が99%であったら、全体としては
0.99×0.99×0.99= 0.97 で97%まで信頼性は下がる。

9: 名無しのひみつ 2021/01/04(月) 11:50:21.78 ID:wrnwvvzD
コーディングミスもあるからな
デスマーチでコードレビュー全ステップやるの無理だろ
10: 名無しのひみつ 2021/01/04(月) 11:52:08.99 ID:2SdGYSks

デバッグしないからだよ

今、デバッグしてるのがどんな奴らで
どのようなデバッグしてるか知ってるか?

デバッグを専門にやってる奴らが
プログラムからバグを一つ残らず駆逐する事をせず
最初に期間を決めて、その期間が過ぎたら

”仕事はコレで終わりましたwww”

って風にデバッグしてるからだよ

当然の事として不具合は必ず起こるのだよ

保守を仕事にしてる俺らにしてみりゃ

”契約で決めた期間、一生懸命頑張りました
だからひとまずコレで終わりとします”

なんて仕事はした内に入らない

30: 名無しのひみつ 2021/01/04(月) 17:37:12.52 ID:MWD5ZFLK
>>10
保守の方は大変ですね
47: 名無しのひみつ 2021/01/05(火) 11:51:49.24 ID:uvefzlq/
>>10
金がかかるからだよ
50: 名無しのひみつ 2021/01/05(火) 17:18:21.54 ID:9uo9W4R4
>>10
法的要件を知らなかったためにプログラムに含まれなかったロジックも、法的要件を満たすこととする場合はバグだよ。
プログラムばっかり見てても絶対にバグはなくならないから、バグのないプログラムは無いって言われるわけで。
抽出目標はそういうことにも目を向けるきっかけになるから、悪いやり方とは思わない。
55: 名無しのひみつ 2021/01/06(水) 00:38:31.61 ID:P607xUZr
>>10
デバッグしてもバグは残る
一口にバグと言ってもコードだけでなくインフラや要件と組合わさり膨大な条件になる
保守やってるのにそんなこともわからないの?
58: 名無しのひみつ 2021/01/06(水) 08:39:07.61 ID:t1nKIog5
>>10
やったこともないくせに偉そうにw
11: 名無しのひみつ 2021/01/04(月) 11:55:38.58 ID:WEwELii+

今の経済システムも政治システムも複雑だよね。障害とか発生してる?

してるな

12: 名無しのひみつ 2021/01/04(月) 11:58:54.32 ID:OcwNAGAj
仕事をシンプルにすればシステムも複雑化しない。
13: 名無しのひみつ 2021/01/04(月) 11:59:36.02 ID:kT7bB+Ec
デバッグ等を人依存でやってるから
ロボット等で自動制御できない
15: 名無しのひみつ 2021/01/04(月) 12:16:03.96 ID:xyeN/5KU
波及効果が予想を超える場合があるから。
16: 名無しのひみつ 2021/01/04(月) 12:35:18.98 ID:wS+gpJ5M
Unix is small
17: 名無しのひみつ 2021/01/04(月) 12:52:47.93 ID:AmCBHee0
複雑なもの程壊れにくいと考える奴なんか居ないだろうに。
18: 名無しのひみつ 2021/01/04(月) 13:04:00.81 ID:8glLSYBX

>>1
> How Complex Systems Fail
> なぜ複雑なシステムでは障害が発生しやすいのか

「なぜ」 why なんて言ってない。how 「どのように」だ。

このスレのレスもなぜを前提にしておかしなことになってる

19: 名無しのひみつ 2021/01/04(月) 13:05:45.24 ID:LNXNZUOb

そもそも仕様が完璧であるという保証などどこにもない。

崇高な理念で概念設計された新機軸のシステムほど、あちこちの整合性をとるのが大変。

20: 名無しのひみつ 2021/01/04(月) 13:11:44.28 ID:iR/hNaXV

プログラムがハードウェアやOSや言語レベルから
すべてトランズアクションをベースにして構築されたら良いかもしれない。
必ずロールバックできる。何か処理を1段階するたびにプログラムで検証を行う。
さらに、ある条件(法則)が満たされるべきことを宣言しておくと、
トランズアクションのステップ単位でその条件が満たされているかをチェックして、
それが成立しなければ、ロールバックして、条件の成立が破れていることを
伝えて、システムが対処処理に入るためのプログラムルーチンに移行する。など。

もちろん、処理の実行速度はとても低下するだろう。

しかし現状のプログラミング言語によるプログラムの現実は、
ある処理が行われるコードのピースが、満たすべき条件を本当に満たす処理に
なっているのかは、プログラマの想像力だけによって支えられており、
机上でデバックをするにしても、テストデーターはすべてを尽くすことは
できない。論理的に正当な証明が伴わなければ、「上手く行かない場合が存在しない」という”悪魔の証明”は無理だが、そこはプログラマの直感だけに頼って
いるので、だいたいうまくいく、たいていうまくいく、といったプログラムコード
が納期に間に合わせるためもあって、適当に書かれて動かされているのが現実だ。
よく使われるOSのコードといえども千行に1つを越えるバグの密度があるのが
普通であり、デバイスドライバーの類いのコードまで入れたら1億行あるなどと
噂されているWindowsのコードなどどれだけ地雷が埋まっているか分かったもの
ではない。OSが地雷を秘めているのに、その上に開発された基礎ルーチンや
アプリケーションコードが完璧に動作する保証もないし、それらのルーチンや
アプリケーションにもバグが埋まっている。そうして、デバイスのハードや
ファームにもバグがあるし、通信や電源も完璧に動作するばかりではない。
むしろ通信はエラーがあってあたり前のものである。チェックサムだけで
100%完璧ということはない。僅かながら間違って伝わる確率は常にある。

33: 名無しのひみつ 2021/01/04(月) 18:29:36.42 ID:ompNt4m6
>>20
チェックしてロールバックする機構を入れるとそいつもバグを踏む事になる
21: 名無しのひみつ 2021/01/04(月) 13:29:45.20 ID:cqjAz41q

インターネットにヒントが隠されています。

インターネットは巨大なシステムで、たびたび障害が発生しますが
全面的なダウンは登場以来一度もないのです。

なぜか?
実はインターネットはアメリカの軍が戦時に敵の攻撃を受け
一部が破壊されても全体は機能し続けることが出来る様な
システムとして設計したのです。
文字通りネットワークでありどこかが壊れても即時に別の経路に
切り替えることが出来ます。

生存性の高いシステムが必要であれば
そのようなシステムを設計すれば良いのです。
それは可能なのです。

44: 名無しのひみつ 2021/01/04(月) 22:59:45.75 ID:iR/hNaXV
インターネットも何度か全世界的にダウンしたことあるよ。
45: 名無しのひみつ 2021/01/05(火) 00:12:47.84 ID:+X/+0hs7
>>44
設計思想はダウンしない方向だけど、現実の実装・運用は思想通りじゃないからな
 46: 名無しのひみつ 2021/01/05(火) 00:44:10.44 ID:GPcZ5DoQ
 21は良くある間違い。

22: 名無しのひみつ 2021/01/04(月) 13:35:24.79 ID:5aJiML5G

各モジュール毎にバグが潜んでいて
複雑になればなるほどバグに遭遇する確率が増えるから。
23: 名無しのひみつ 2021/01/04(月) 14:05:32.43 ID:5CvQ2ZYs
複雑に考えすぎるな
複雑に考えすぎる事になるぞ
24: 名無しのひみつ 2021/01/04(月) 14:07:05.54 ID:ezmsPESR
複雑だから(´・ω・`)
25: 名無しのひみつ 2021/01/04(月) 15:47:48.89 ID:zWGXh2Vw
勉強の学習計画も、マルチタスクのスレッド処理の予定表立てたら
数時間でいつも破綻するな、
英単語100個暗記だけ という単純学習計画ならたいてい達成
28: 名無しのひみつ 2021/01/04(月) 16:23:36.17 ID:wS+gpJ5M
>>25
勉強が暗記することなら、それはまず失敗する
なぜならマルチタスクを組むことで緊張がかかり
アドレナリンとノルアドレナリンが放出される
これは運動にはいいけど、暗記をかなり阻害する作用がある
26: 名無しのひみつ 2021/01/04(月) 15:59:49.66 ID:cELnIhtV
冗長システム組んでも、フェイルオーバー失敗とかな
32: 名無しのひみつ 2021/01/04(月) 18:05:44.03 ID:WNN+jrxS
>>26
あれ企業体質や補助支援システムに社会的組織として破綻し続けてるだけ
27: 名無しのひみつ 2021/01/04(月) 16:20:50.11 ID:6MoKTXlL
発生した障害は、それが重要じゃないから対策も訓練もしてないだけ
コスト掛けたくないってこと。言わせんな
29: 名無しのひみつ 2021/01/04(月) 16:51:54.29 ID:VjvNeFLE
大きい物はなぜデカイのかって聞いてるようなもん
31: 名無しのひみつ 2021/01/04(月) 17:38:00.88 ID:WbAO9ofD
>>1
当たり前だろ!
って言いたくなったけど、パイバスラインとか切替号機とかどこ行ったの?
34: 名無しのひみつ 2021/01/04(月) 18:49:28.32 ID:WzQyyvpD
だからこそのマイクロサービス
35: 名無しのひみつ 2021/01/04(月) 19:43:45.42 ID:EWiH+8U8

障害は発生してもいいんだよ。というか必ず発生するのだから障害前提で考える

障害が発生しても動き続けるシステムを持てばよい
東証みたいなアホなシステム体制では無くね

39: 名無しのひみつ 2021/01/04(月) 20:53:27.76 ID:jVjWKMUo
>>35
動き続けるように設計されたはずのものが止まるとめんどくさいぞ
57: 名無しのひみつ 2021/01/06(水) 08:13:59.45 ID:HGNa9DoE
>>35
計算間違えながら動き続けるくらいならさっさと止まってくれた方がいい場合もあるけどな
37: 名無しのひみつ 2021/01/04(月) 20:49:09.58 ID:6M621ayx

IT業界って結局は地頭のよさで決まっちゃうんだよな
仕様とかSQLとか複雑さが増す度に倍々で難易度が上がっていく。
本やネットでいくら勉強しても、複雑なシステム固有の問題には地頭のよさがないと対応出来ない。

でも、そういう人って絶対数が少ない。
大手ITで6割、中小だと3割いるかどうか
で、不運な能力不足の人が、そういう複雑なシステムの担当リーダーになった時にプレッシャーで潰れて鬱になって脱落していく
SESの場合、いつでもそういう現場に放り込まれるリスクがある
そんで、組まされた部下が使えない人だったら鬱までまっしぐら

41: 名無しのひみつ 2021/01/04(月) 21:23:42.50 ID:iMkodLnn
複雑すぎるスペースシャトルは終了して、シンプルなロケットが主流になった
42: 名無しのひみつ 2021/01/04(月) 21:32:16.08 ID:4JkBT6Pe
エアコンもインバーター付いてからよく壊れる
クーラーは30年前のが現役なのに
43: 名無しのひみつ 2021/01/04(月) 21:50:45.80 ID:oyNCAiRd
で簡単にするため
シンプルにするのがモジュール化
プログラミングならさらにオブジェクト化とかまである
それで保守で欠陥やバグがあっても局所化で対応時間を短縮する
48: 名無しのひみつ 2021/01/05(火) 12:47:37.06 ID:KFVI0sGd
第2次大戦中、ソ連の戦車や飛行機が優秀だったのは、これを心得ていたおかげ。
システムが単純で造りが頑丈、使いやすいし、製造しやすい。
51: 名無しのひみつ 2021/01/05(火) 21:09:05.43 ID:nCsgZ2aP
なぜ?
それは単純なシステムより複雑だからだよ
54: 名無しのひみつ 2021/01/05(火) 22:39:40.26 ID:e6ATBIFH
>>51
なんで?
52: 名無しのひみつ 2021/01/05(火) 21:27:08.29 ID:E8HCjLyS
単純にしなかったから。
おすすめの記事