「サービスが一時的に利用できません」って画面、見たことない? ウェブサービスやアプリを使おうとしたら急にこの表示が出て、「え、なんで?」ってなった経験、きっとあるよね。でも逆に、ATMや病院の電子カルテって、なかなか止まらないじゃない。実はそこには、「メインのシステムが壊れたとき、自動でバックアップに切り替える」という仕組みが動いてるんだ。その仕組みの名前がフェイルオーバー。この記事を読めば、フェイルオーバーとは何か・なぜ必要なのか・どうやって動いているのかが、まるごとわかるよ。
- フェイルオーバーとは、メインのシステムが故障したとき スタンバイ(待機)システム が自動で処理を引き継ぐ仕組みのこと。
- 切り替えは数秒〜数十秒で完了するため、ユーザーはほぼ気づかずに サービスを使い続けられる のが最大のメリット。
- ATMや医療システムなど 止まると困る場所 では、フェイルオーバーは欠かせないインフラ技術になっている。
もうちょっと詳しく
フェイルオーバーを理解するうえで大事なのが「可用性(かようせい)」という考え方。つまり「どれだけの時間、システムを使えるか」という割合のことだよ。たとえば「99.99%の可用性」は、1年のうち止まっていい時間がたった53分しかないということ。これを実現するには、人間が気づく前に自動で切り替わるフェイルオーバーが絶対に必要なんだ。フェイルオーバーは単なる「バックアップ」とは違って、切り替えが自動・高速・無停止に近い点が最大の特徴。バックアップは「壊れたあとに手動で復元する」イメージで、フェイルオーバーは「壊れた瞬間に自動でバトンを渡す」イメージと覚えておくといいよ。
フェイルオーバー=「故障した瞬間に自動でバトンを渡す」仕組み。手動復元のバックアップとは別物!
⚠️ よくある勘違い
→ バックアップはデータを別の場所に保存しておくだけ。復元するには人間が手動で操作する必要があるから、その間ずっとシステムが止まってしまう。
→ 故障を検知した瞬間、スタンバイシステムが自動で動き出すから、ユーザーはほとんど気づかずにサービスを使い続けられる。バックアップとは目的も速さもまったく違うよ。
[toc]
フェイルオーバーとは何か:基本の仕組みをちゃんと理解しよう
フェイルオーバーの「フェイル(fail)」は故障・失敗、「オーバー(over)」は引き渡すという意味の英語だよ。直訳すると「故障したら引き渡す」で、まさにその名前どおりの仕組みなんだ。
コンピューターのシステムは、どんなに高性能でもいつか壊れる。サーバー、つまりデータを管理するコンピューターのハードウェアが故障したり、ソフトウェアのバグで固まったり、電源が落ちたりすることがある。そのとき、フェイルオーバーが設定されていれば「メインのシステムが死んだ」と検知した瞬間に、あらかじめ用意しておいたスタンバイシステムが自動的に引き継いでくれるんだ。
わかりやすく言うと、こんなイメージだよ。学校の文化祭でMCをやる予定だった人が当日急に熱を出した。でも前日から「もしものとき用の副MC」を決めておいたから、本番は予定どおり進行できた――これがフェイルオーバーの発想だよ。
大事なのは「自動」という点。人間が気づいて手動で操作する必要がないから、夜中の2時にサーバーが壊れても、担当者を叩き起こすことなくシステムが自分で回復できる。これが「人間が手動で直す」方法との最大の違いだよ。
フェイルオーバーに必要な3つの要素
フェイルオーバーがスムーズに動くためには、次の3つの要素がそろっていることが重要だよ。
- 監視(モニタリング):メインのシステムが生きているかどうかを常にチェックする
- 検知(ディテクション):「あ、壊れた!」と即座に気づく仕組み
- 切り替え(スイッチオーバー):スタンバイが自動でバトンを受け取る処理
この3つがすばやく連携して動くから、ユーザーはほぼ気づかずにサービスを使い続けられるんだよ。どれか一つでも欠けると、フェイルオーバーはうまく機能しない。たとえば監視がなければ故障に気づけないし、検知が遅ければ切り替えも遅れる。3つがセットで機能して、はじめて「無停止に近いシステム」が実現できるんだ。
フェイルオーバーには「種類」がある:ホット・ウォーム・コールドスタンバイの違い
スタンバイシステムにも「どれだけ準備ができているか」によって種類があるんだ。大きく分けて3種類あるから、それぞれ覚えておこう。
① ホットスタンバイ(Hot Standby)
スタンバイが常に稼働していて、メインと同じ最新のデータを持っている状態のこと。つまり「バックアッパーが試合中ずっとウォームアップしていて、いつでも出場できる状態」だよ。切り替え時間は数秒以内と超高速で、ATMや証券取引所など、一瞬でも止まると困る場所で使われる。コストは3種類の中で一番高い(スタンバイもずっと電力と維持費がかかる)けど、信頼性は最高レベルだよ。
② ウォームスタンバイ(Warm Standby)
スタンバイは動いているけど、メインと完全に同じ状態ではなく、少し古いデータを持っている状態。切り替えに数分かかることもある。「控え選手がベンチに座って試合を見ていて、コーチに呼ばれたら少しアップしてから出る」イメージだよ。コストと速さのバランスが取れた選択肢として、多くのウェブサービスで採用されているよ。
③ コールドスタンバイ(Cold Standby)
スタンバイは電源が切れた状態で待機している。壊れたとき、担当者が手動で起動して設定を整えてから使い始める。切り替えには数時間かかることも。「予備のユニフォームが倉庫にしまってあって、必要になったら取り出して着替えるところから始まる」感じだね。コストは安いけど、復旧に時間がかかるのが弱点だよ。
どの種類を選ぶかは「どれだけ止まると困るか」と「コストをいくらかけられるか」のバランスで決まる。命に関わる医療システムはホット一択、小規模な社内システムならコールドでも十分、という使い分けがされているよ。
フェイルオーバーが活躍している身近な場面
フェイルオーバーって、実はみんなの生活のすぐそこで動いてるんだよ。気づいていないだけで。
ATM・銀行システム
お金を引き出そうとしたとき「ただいまシステムメンテナンス中」ってなったら困るよね。銀行のシステムはフェイルオーバーを組み込んで、24時間365日止まらないように設計されている。メインのサーバーが壊れてもスタンバイが数秒で引き継ぐから、ATMの列に並んでいる人がまったく気づかないことがほとんどだよ。
ECサイト・オンラインショッピング
大手のECサイトは「1分止まると数百万円の売上損失」と言われることもある。だから複数のサーバーにデータをコピーしておいて、1台が壊れても別のサーバーが受け持つ仕組みを持ってるんだ。フェイルオーバーがなければ、セール中に突然買い物できなくなるなんてことが頻発するはずだよ。
病院・医療システム
電子カルテや手術中のモニタリングシステムが止まったら、最悪の場合は命に関わる。医療機関のシステムには特に厳しい稼働率、つまり「システムが動いている時間の割合」が求められるから、フェイルオーバーは最重要インフラの一つになってるよ。
クラウドサービス(Google・Amazon など)
GmailやAmazonのサービスがほとんど止まらないのも、フェイルオーバーのおかげ。世界中に複数のデータセンターを持っていて、1か所が障害を起こしても別の場所に自動で切り替わる。これを「地理的冗長性(ちりてきじょうちょうせい)」と呼ぶよ。つまり「世界のいくつかの場所に同じデータを置いておくことで、どこかが壊れても他が補える」ということだよ。
フェイルオーバーを支える技術:仕組みをもう少し深掘りしよう
フェイルオーバーが自動でスムーズに動くためには、いくつかの技術が裏側で働いているよ。
ヘルスチェック(Health Check)
「メインのシステムは元気ですか?」と定期的に確認する仕組みのこと。たとえば「5秒に1回、メインサーバーに信号を送って、返事がなければ3回連続でアウト→故障と判断してフェイルオーバー発動」という設計にする。返事が1回来なかっただけで即切り替えると誤作動するから、何回か確認してから判断するのがポイントだよ。ちょうど友だちに「大丈夫?」とLINEして、何度送っても既読すら付かなかったらさすがに心配するのと同じ発想だね。
クラスタリング
複数のサーバーをひとまとめにして、一つのシステムとして動かす技術のこと。つまり「バラバラに動く個人プレー」ではなく「チームとして連携しながら動く」状態にすること。クラスタリングを使えば、1台が壊れても残りのサーバーが負荷を自動で分け合って処理を続けられるんだ。
データ同期(レプリケーション)
レプリケーションとは、メインとスタンバイのデータを常に同じ状態に保つ仕組みのこと。スタンバイは「メインの最新コピー」を常に持っている状態にするんだ。これがないと、切り替えた瞬間にデータが古くて使い物にならない、なんてことになる。ホットスタンバイでは特に、リアルタイムでのデータ同期が欠かせないよ。
フローティングIP(仮想IPアドレス)
IPアドレスとは、インターネット上の「住所」のこと。フェイルオーバー時に、ユーザーからのアクセス先(住所)を変えずにスタンバイに引き継がせるために、「どのサーバーが担当していても同じIPアドレスで応答できる仕組み」を使うんだ。ユーザーからすると「同じ住所にアクセスしてるのに、中の人が変わっていた」状態になって、切り替えにまったく気づけないわけだよ。
フェイルオーバーと混同しやすい用語を整理しよう
フェイルオーバーを学ぶと、似た言葉がいくつか出てくるから整理しておこう。
フェイルオーバー vs フォールバック
フォールバックとは「失敗したとき、前の安全な状態に戻る」仕組みのこと。たとえばアプリのアップデートが失敗したとき、自動で古いバージョンに戻る、みたいな使い方だよ。フェイルオーバーは「別のシステムに引き継ぐ(前に進む)」、フォールバックは「前の状態に戻る(後ろに下がる)」というニュアンスの違いがあるんだ。
フェイルオーバー vs ロードバランシング
ロードバランシングとは「負荷分散」のことで、複数のサーバーにアクセスを均等に振り分ける仕組みのこと。つまり「3台のサーバーで仕事を分け合う」ことだよ。1台が壊れたときにも別のサーバーが受け持つから、結果的にフェイルオーバーと似た効果が出ることもある。でも目的が違って、ロードバランシングは「性能を上げるため」、フェイルオーバーは「止まらないようにするため」が主な目的だよ。
冗長化(じょうちょうか)という大切な考え方
冗長化とは、同じ機能を持つシステムを複数用意しておくことだよ。フェイルオーバーはこの「冗長化」を実現するための手段の一つと考えるといいよ。「1つしかないものは壊れたら終わり。2つ以上あれば片方が壊れても続けられる」という発想が根本にあるんだよね。自転車のタイヤがパンクしても、もう1本スペアのチューブを持っていれば対処できるのと同じ考え方だよ。
RTO と RPO:設計するときの2大指標
システムの信頼性を語るとき、よく出てくる2つの指標があるよ。
- RTO(目標復旧時間):障害が起きてから何時間(何分)以内にシステムを復旧させるか、という目標のこと
- RPO(目標復旧時点):最大どれだけ前のデータまで失ってもOKか、という目標のこと
フェイルオーバーを設計するときは、この2つをどこに設定するかが重要な判断ポイントになる。「RTOを30秒以内、RPOをゼロ(データ損失なし)」にしたいならホットスタンバイが必要だし、「RTO数時間でOK、多少のデータ損失も許容できる」ならコールドスタンバイでも許容できる、という話になるよ。つまり「どれだけ止まると困るか」「どれだけのデータを失っても許されるか」を先に決めることで、どんなフェイルオーバーを選べばいいかが自然に決まるんだよ。
オーバーヘッドって何?わかりやすく解説
