稼働率で考えてはいけない

ソフトウェアのバグやハードウェアの故障など、コンピュータを稼動させたら何らかの問題が起こる。

1ヶ月稼動させたら何件か問題が出るけど、対処に掛けた時間を合計すると、概ね1日分くらいかかってるシステムがあるとする。簡単に1ヶ月30日と考える。

稼働率を出してみる

このシステムの稼働率を考えると、

    単一システムの稼動率 = 1 - (1 / 30) = 96.6667%

このシステムを2台用意して並列稼動させた場合、3台並行稼動させた場合、4台並行稼動させた場合を考えると、

    2台並列システムの稼動率 = 1 - (1 - 単一システムの稼動率)^2 = 99.8889%
    3台並列システムの稼動率 = 1 - (1 - 単一システムの稼動率)^3 = 99.9963%
    4台並列システムの稼動率 = 1 - (1 - 単一システムの稼動率)^4 = 99.9999%

単一稼動と3台並行稼動とを比較すると、コストを3倍掛けたとしても、稼働率は3.337%くらいしか改善しない。3倍も掛けたのに!!

…と考えてはいけない。というか、顧客にこう考えさせてはいけない。

故障率で考える

同じシステムの故障率を考える。

    単一システムの故障率   = 1 / 30   = 3.3333%
    2台並行システムの故障率 = 1 / 30^2 = 0.1111%
    3台並行システムの故障率 = 1 / 30^3 = 0.0037%
    4台並行システムの故障率 = 1 / 30^4 = 0.0001%

なんと、1台追加するたびに故障率が30分の1に減るぞ!!

考察

フェイルセーフの設計って、長く稼動させたいっていう積極的な思惑よりは、稼動していない時間を減らしたいっていう消極的な思惑のはず。それなら、数字でもその消極的な意図を表現した方がわかりやすいんじゃないかと思う。一般的には安全性を向上させるというより、危険性を低減させるという言い方が好ましい…ような気はする。

あと、上の考え方は決して万能ではないので注意が必要です。例えば、時間に起因する不具合がある場合には全く無意味です。2000年問題のときは自分は学生だったけど、年越し立会いしたシステム屋さんは多いはず。google:サマータイム導入 面倒くさいとかもどうぞ。