「冗長化って何?」「システムを止めないってどうやるの?」
インフラや設計の話で出てくる冗長化。これは、システムの一部が故障しても全体が止まらないようにする設計手法です。
この記事では、冗長化とは何か、なぜ必要なのか、どんな方法があるのかを、初心者の方にもわかりやすく解説します。
冗長化とは?
冗長化(じょうちょうか)とは、システムの構成要素を複数用意して、障害に備える設計手法です。英語では「Redundancy(リダンダンシー)」と呼びます。
「冗長」という言葉は普段「無駄が多い」というネガティブな意味で使われますが、ITの世界では「あえて予備を持つことで信頼性を高める」というポジティブな意味で使われます。
身近な例で理解する
冗長化は、日常生活にもたくさんあります。
- 飛行機のエンジン:1つが故障しても飛べるように複数搭載
- 病院の非常用電源:停電時に備えた予備の発電機
- 車のスペアタイヤ:パンク時の予備
これらはすべて「万が一に備えて予備を持つ」という冗長化の考え方です。
なぜ冗長化が必要なのか
単一障害点(SPOF)の問題
単一障害点(SPOF:Single Point of Failure)とは、そこが壊れるとシステム全体が止まってしまう箇所のことです。
例えば、Webサーバーが1台しかない場合、そのサーバーがダウンするとサービス全体が停止してしまいます。これがSPOFです。
冗長化は、このSPOFをなくすための手法です。
可用性の向上
可用性(Availability)とは、システムが正常に利用できる割合のことです。通常、「何パーセントの時間、正常に動作しているか」で表されます。
| 可用性 | 年間ダウンタイム | 呼び方 |
|---|---|---|
| 99% | 約3.65日 | ツーナイン |
| 99.9% | 約8.76時間 | スリーナイン |
| 99.99% | 約52.6分 | フォーナイン |
| 99.999% | 約5.26分 | ファイブナイン |
ECサイトや金融システムでは、99.9%以上の可用性が求められることが多いです。冗長化は、この高い可用性を実現するための重要な手段です。
冗長化の種類
冗長化にはいくつかの種類があります。
1. アクティブ・スタンバイ(ホットスタンバイ)
メイン機(アクティブ)が稼働中、予備機(スタンバイ)は待機状態にしておく方式です。
- 通常時はメイン機だけが処理を行う
- メイン機に障害が発生すると、自動的に予備機に切り替わる(フェイルオーバー)
- 予備機は常に起動しており、すぐに切り替え可能
メリット:切り替えが速い
デメリット:予備機のリソースが通常時は無駄になる
2. アクティブ・アクティブ(負荷分散)
複数のサーバーがすべて稼働し、処理を分担する方式です。
- すべてのサーバーが同時に処理を行う
- 1台がダウンしても、残りのサーバーで処理を継続
- ロードバランサーでリクエストを振り分ける
メリット:リソースを無駄なく使える、スケーラビリティも向上
デメリット:構成が複雑になる
3. コールドスタンバイ
予備機は電源を切った状態で保管しておく方式です。
- 障害発生時に手動で予備機を起動
- 切り替えに時間がかかる
- コストは最も低い
メリット:コストが安い
デメリット:復旧に時間がかかる
CASUAL TALK
服装自由・オンライン対応
まずは気軽に話しませんか?
応募じゃなくてOK。「ちょっと話を聞いてみたい」だけでも大歓迎。30分のカジュアル面談で、あなたの可能性が見えてきます。
カジュアル面談を予約する冗長化の対象
システムのどの部分を冗長化するかも重要です。
1. Webサーバーの冗長化
複数のWebサーバーを用意し、ロードバランサーでリクエストを振り分けます。
[ロードバランサー]
↓
┌─────────┼─────────┐
↓ ↓ ↓
[Web1] [Web2] [Web3]
2. データベースの冗長化
データベースの冗長化には、主に以下の方式があります。
- レプリケーション:データを複数のサーバーにコピー
- クラスタリング:複数のサーバーを1つのシステムとして動作
| 方式 | 特徴 |
|---|---|
| マスター・スレーブ | 書き込みはマスター、読み込みはスレーブに分散 |
| マスター・マスター | どちらにも書き込み可能(設計が複雑) |
3. ネットワークの冗長化
- ネットワーク機器(スイッチ、ルーター)を複数用意
- 回線を複数契約(異なるISP)
- 経路の冗長化
4. データセンター・リージョンの冗長化
最も高いレベルの冗長化として、複数のデータセンターにシステムを分散させる方法があります。
- 地震や災害に備えたDR(ディザスタリカバリ)
- AWSなら複数のアベイラビリティゾーン(AZ)を使用
クラウドでの冗長化
AWSなどのクラウドサービスでは、冗長化を簡単に実現できる機能が用意されています。
| AWSサービス | 冗長化機能 |
|---|---|
| ELB | ロードバランサー(複数EC2への振り分け) |
| RDS | マルチAZ配置(自動フェイルオーバー) |
| S3 | データを複数AZに自動複製 |
| Auto Scaling | 負荷に応じてサーバーを自動増減 |
冗長化の注意点
1. コストとのバランス
冗長化するほどコストは上がります。サービスの重要度に応じて、適切なレベルの冗長化を選ぶことが大切です。
2. 複雑さの増加
冗長化すると構成が複雑になり、運用・監視の負担も増えます。適切な監視体制が必要です。
3. テストの重要性
冗長化が正しく機能するか、定期的にテストすることが重要です。いざというときに切り替わらないのでは意味がありません。
まとめ
この記事で解説した内容をまとめます。
| 項目 | 内容 |
|---|---|
| 冗長化とは | 予備を持つことで障害に備える設計手法 |
| 目的 | 単一障害点の排除、可用性の向上 |
| 主な方式 | アクティブ・スタンバイ、アクティブ・アクティブ |
| 対象 | サーバー、DB、ネットワーク、データセンター |
| 注意点 | コストとのバランス、定期的なテスト |
冗長化は、システムの信頼性を高めるための基本です。インフラエンジニアを目指す方は、ぜひ理解しておきましょう。
CASUAL TALK
服装自由・オンライン対応
まずは気軽に話しませんか?
応募じゃなくてOK。「ちょっと話を聞いてみたい」だけでも大歓迎。30分のカジュアル面談で、あなたの可能性が見えてきます。
カジュアル面談を予約する