目次
はじめに
基本情報技術者試験の学習を進める中で、稼働率の計算は直列接続や並列接続など、システム構成によって計算方法が変わります。一度理解したつもりでも、時間が経つと「あれ、この公式どうだったかな?」と忘れてしまうことがよくありました。試験本番で確実に解けるようにするため、稼働率の計算方法を整理する必要性を感じました。今回は、稼働率の計算について、備忘録としてまとめます。
本記事で扱う概念一覧
| 概念 | 読み方 | 概要 |
|---|---|---|
稼働率 |
かどうりつ | システムが正常に動作している時間の割合 |
直列接続 |
ちょくれつせつぞく | 複数のシステムが順番につながった構成 |
並列接続 |
へいれつせつぞく | 同じ役割のシステムを複数用意する構成 |
冗長化 |
じょうちょうか | 予備のシステムを用意して信頼性を高める手法 |
故障率 |
こしょうりつ | システムが故障している時間の割合 |
稼働率とは
【稼働率の定義】
稼働率とは、システムが正常に動作している時間の割合を示す指標です。例えば、1年間のうち360日間正常に動いていたシステムの稼働率は約98.6%になります。
この指標は、システムの信頼性を測る重要な基準として使われます。Webサービスやオンラインシステムでは、稼働率が高いほどユーザーが安定してサービスを利用できることを意味します。
【なぜ稼働率が重要なのか】
システムの稼働率は、ビジネスに直接的な影響を与えます。稼働率が低いと以下のような問題が発生します。
- ユーザーがサービスを利用できない時間が増える
- 売上の機会損失が発生する(ECサイトなどの場合)
- ユーザーの信頼を失う可能性がある
- システム障害の対応コストが増大する
例えば、稼働率99%と99.9%では、年間の停止時間に大きな差があります。稼働率99%の場合は年間約3.65日の停止時間ですが、99.9%の場合は年間約8.76時間まで短縮されます。
【稼働率とシステムの信頼性の関係】
稼働率が高いシステムは、信頼性が高いと評価されます。ただし、稼働率100%を実現するのは現実的には不可能です。なぜなら、以下のような要因があるためです。
- ハードウェアの経年劣化
- ソフトウェアのバグ
- ネットワーク障害
- メンテナンス作業の必要性
- 予期しない外部要因(停電など)
そのため、多くのシステムでは稼働率99%〜99.999%(通称「ファイブナイン」)を目標に設計されます。目標値は、システムの重要度やコストとのバランスで決定されます。
稼働率の計算方法
【基本の計算式】
稼働率は以下の式で計算できます。
稼働率 = 稼働時間 / (稼働時間 + 停止時間) × 100
この式は、全体の時間のうち正常に動作していた時間の割合を求めています。パーセント表記が不要な場合は、×100を省略して小数で表現します。
【計算例1: 1ヶ月間の稼働率】
あるシステムが1ヶ月間(30日 = 720時間)のうち、メンテナンスで2時間停止した場合を考えます。
稼働時間 = 720時間 - 2時間 = 718時間
稼働率 = 718 / 720 × 100 = 99.72%
このシステムの稼働率は約99.72%となります。
【計算例2: 1年間の稼働率】
1年間(365日 = 8760時間)のうち、合計8.76時間停止したシステムの稼働率を計算します。
稼働時間 = 8,760時間 - 8.76時間 = 8,751.24時間
稼働率 = 8,751.24 / 8,760 × 100 = 99.9%
99.9%(スリーナイン)を達成するには、1年間の停止時間を約8.76時間以内に抑える必要があります。これは1日あたり約1.4分の停止に相当します。
【計算例3: 故障率から稼働率を求める】
システムの故障率(システムが故障している割合)が0.05(5%)の場合、稼働率は以下のように求められます。
稼働率 = 1 - 故障率 = 1 - 0.05 = 0.95(95%)
稼働率と故障率は合わせて1(100%)になる関係です。
システム構成と稼働率
【直列接続(直列システム)】
直列接続とは
直列接続(複数の機器が一列につながった構成)は、すべての機器が正常に動作しないとシステム全体が機能しない構成です。例えば、Webサーバー→アプリケーションサーバー→データベースサーバーという順番で処理が流れる場合、どれか1つでも停止するとサービス全体が停止します。
図で表すと以下のようになります。
[機器A] → [機器B] → [機器C]
この構成では、データが機器A→B→Cと順番に流れていくため、どこかで止まると全体が止まります。
直列接続の稼働率計算
直列接続の稼働率は、各機器の稼働率を掛け算して求めます。
全体の稼働率 = 機器Aの稼働率 × 機器Bの稼働率 × 機器Cの稼働率
具体例
稼働率90%(0.9)の機器を2台直列に接続した場合を考えます。
全体の稼働率 = 0.9 × 0.9 = 0.81(81%)
各機器の稼働率が90%でも、直列に接続すると全体の稼働率は81%まで下がってしまいます。
全体の稼働率が下がる理由
直列接続では、どれか1つでも故障すると全体が停止します。機器が増えるほど故障の可能性が高まるため、全体の稼働率は個々の稼働率より低くなります。
例えば、稼働率95%の機器を5台直列に接続すると、全体の稼働率は約77%まで低下します(0.95の5乗)。これは、構成要素が増えるほどシステム全体の信頼性が低下することを示しています。
【並列接続(冗長化システム)】
並列接続とは
並列接続(同じ機能を持つ機器を複数用意する構成)は、片方が故障してももう片方が動作し続けることでシステム全体を維持する構成です。これを冗長化(1つが故障しても全体が止まらないよう、あらかじめ予備を用意しておく手法)と呼びます。
図で表すと以下のようになります。
→ [機器A1] →
入力 → → 出力
→ [機器A2] →
この構成では、機器A1が故障しても機器A2が処理を続けるため、システム全体は停止しません。
並列接続の稼働率計算
並列接続の稼働率は、以下の式で求めます。
全体の稼働率 = 1 - (各機器の故障率を掛け算)
稼働率から故障率に変換してから計算する点がポイントです。
具体例
稼働率90%(0.9)の機器を2台並列に接続した場合を考えます。
まず、各機器の故障率を求めます。
故障率 = 1 - 稼働率 = 1 - 0.9 = 0.1
次に、全体の稼働率を計算します。
全体の稼働率 = 1 - (0.1 × 0.1) = 1 - 0.01 = 0.99(99%)
各機器の稼働率が90%でも、並列に接続すると全体の稼働率は99%まで上がります。
全体の稼働率が上がる理由
並列接続では、両方の機器が同時に故障しない限りシステムは動作し続けます。両方が同時に故障する確率は、個々の故障率を掛け算した値になるため、非常に低くなります。
例えば、稼働率95%の機器を2台並列に接続すると、全体の稼働率は99.75%まで向上します。これは、予備を用意することでシステムの信頼性が大幅に高まることを示しています。
【混在システム】
混在システムとは
実際のシステムでは、直列と並列が組み合わさった構成がよく使われます。例えば、Webサーバーは冗長化(並列)しているが、データベースサーバーは1台(直列)という構成です。
図で表すと以下のようになります。
→ [Webサーバー1] →
入口 → → [DBサーバー] → 出口
→ [Webサーバー2] →
計算の順序と方法
混在システムの稼働率計算では、並列部分を先に計算してから、全体を直列として計算します。
- 並列部分の稼働率を計算する
- 並列部分を1つの機器とみなして、直列の計算を行う
具体的な計算例
以下の構成の稼働率を計算します。
- Webサーバー1: 稼働率90%(0.9)
- Webサーバー2: 稼働率90%(0.9) ※並列構成
- DBサーバー: 稼働率95%(0.95) ※Webサーバーと直列
手順1: 並列部分(Webサーバー)の稼働率を計算
故障率 = 1 - 0.9 = 0.1
Webサーバー全体の稼働率 = 1 - (0.1 × 0.1) = 0.99
手順2: 全体を直列として計算
システム全体の稼働率 = 0.99 × 0.95 = 0.9405(94.05%)
このように、並列部分を1つにまとめてから、直列の計算を行います。
覚え方・計算のコツ
【直列と並列の見分け方】
システム構成図を見るときのポイントは、「1つでも止まったら全体が止まるか」です。
- すべての機器が必須の場合 → 直列
- どれか1つでも動いていれば動作する場合 → 並列
また、データの流れが一本道になっている場合は直列、複数の経路がある場合は並列と判断できます。
【計算式の覚え方】
直列と並列の計算式は以下のように覚えると間違えにくくなります。
直列: そのまま掛け算
直列 = 稼働率 × 稼働率
各機器の稼働率をそのまま掛け算します。直感的で分かりやすい計算です。
並列: 1-(故障率の掛け算)
並列 = 1 - (故障率 × 故障率)
「両方とも故障する確率」を求めてから、1から引くことで稼働率を求めます。
【よく出るパターンの整理】
試験問題でよく見かけるパターンをまとめます。
パターン1: 同じ稼働率の機器2台
- 直列: 0.9 × 0.9 = 0.81
- 並列: 1 - (0.1 × 0.1) = 0.99
パターン2: 異なる稼働率の機器2台
- 直列: 0.9 × 0.8 = 0.72
- 並列: 1 - (0.1 × 0.2) = 0.98
パターン3: Webサーバー並列 + DBサーバー直列
- Webサーバー部分を並列計算
- 結果とDBサーバーを直列計算
【計算ミスを防ぐポイント】
稼働率の計算でミスを防ぐためには、以下の点に注意します。
小数とパーセントを統一する
計算中は小数(0.9)で統一し、最後にパーセント(90%)に変換します。途中で混在させると計算ミスの原因になります。
稼働率と故障率を確認する
並列計算では故障率を使うため、稼働率から変換する必要があります。問題文でどちらが与えられているか確認しましょう。
計算の順序を確認する
混在システムでは、「並列→直列」の順序を守ります。順序を間違えると答えが大きく変わってしまいます。
よくある間違い・注意点
【直列と並列の計算式を逆にする】
最も多い間違いは、直列と並列の公式を混同することです。
誤った例
直列なのに: 1 - (0.1 × 0.1) = 0.99 ← 間違い
並列なのに: 0.9 × 0.9 = 0.81 ← 間違い
公式の形だけを暗記している場合、問題文を読んでも「どちらの公式を当てはめるべきか」がわからなくなります。「直列=掛け算」「並列=1から引く」という対応を、構造のイメージと一緒に覚えることで、公式の選択ミスを防げます。
【故障率と稼働率の混同】
並列計算では故障率を使いますが、稼働率をそのまま使ってしまう間違いがあります。
誤った例
並列なのに稼働率で計算: 1 - (0.9 × 0.9) = -0.61 ← 明らかにおかしい
正しい計算: 1 - (0.1 × 0.1) = 0.99
並列計算では、必ず「1 - 稼働率」で故障率に変換してから使います。
【パーセント表記と小数表記の変換ミス】
90%を0.09と間違えたり、0.9を9%と間違えたりするケースがあります。
正しい変換
90% = 0.9
0.9 = 90%
計算では小数で統一し、最後にパーセントに戻すと混乱を避けられます。
【計算順序の間違い】
混在システムで、直列部分を先に計算してしまう間違いがあります。
誤った順序
1. 稼働率 × 稼働率(直列部分) ← 間違い
2. 並列部分を計算
正しい順序
1. 並列部分を計算
2. 結果を直列として計算
「内側(並列)から外側(直列)へ」という順序を守ることが重要です。
まとめ
システムの稼働率は、直列接続では各機器の稼働率を掛け算、並列接続では1-(故障率の掛け算)で計算できます。直列では稼働率が下がり、並列では稼働率が上がるという特性を理解しておくと、計算ミスを減らせます。