フェイルオーバーは、稼働中のシステムで障害が起きたときに、待機系のサーバーや別リージョンの環境へ処理を切り替えてサービス継続を図る仕組みです。可用性を高めるための設計で、単に冗長化するだけではなく「切り替えが実際に機能する状態」を作ることが目的です。切り替えを自動化する方式は自動フェイルオーバー、運用者の判断で行う方式は手動フェイルオーバーと呼ばれます。
実務で重要なのは、切り替え対象がアプリだけなのか、データベースやストレージまで含むのかを明確にし、RTOとRPOの要件に沿って構成を決める点です。データを同期する方式には同期レプリケーションと非同期レプリケーションがあり、同期はデータ損失を抑えやすい一方で遅延が増えやすく、非同期は性能を出しやすい反面で障害時にロストが起こり得ます。障害検知のしきい値、DNSやロードバランサーの切り替え、接続先変更時の再試行など、周辺設計も含めて初めて成立します。
運用で起こりがちな問題は、フェイルオーバーの手順が暗黙知になり、いざというときに切り替えに時間がかかることです。切り替え後の整合性確認、復旧後のフェイルバック、二重書き込みやスプリットブレインの防止まで手順化し、定期的に訓練しておく必要があります。可用性は構成図で保証できないため、監視と演習で「切り替えができる」ことを継続的に証明する運用が欠かせません。

