事業運営

AWS障害に備えるシステム設計|可用性を高めるアーキテクチャと運用術

経営リスクナビ編集部

AWSを利用してサービスを運用する上で、障害の発生は避けて通れない重要な課題です。過去の大規模障害が示したように、ひとたび問題が発生すればビジネスに深刻な影響を及ぼす可能性があります。しかし、障害を前提とした設計思想を取り入れ、適切な対策を講じることで、そのリスクを大幅に低減させることが可能です。この記事では、AWS障害の主な原因と過去の事例を振り返りながら、システムの可用性を高めるための具体的なアーキテクチャ設計や運用体制について体系的に解説します。

AWS障害の主な原因

物理的要因(インフラ・自然災害)

物理的要因による障害は、データセンターのハードウェア故障や自然災害によって引き起こされます。AWSは堅牢なデータセンターを構築していますが、物理的な設備が原因となる障害を完全に防ぐことはできません。過去には、冷却設備の故障によるサーバーの自動停止や、ネットワーク機器の破損が大規模障害につながった事例もあります。

物理的要因の具体例
  • 地震、洪水、落雷などの大規模な自然災害
  • データセンターの電源喪失や冷却設備の故障
  • サーバー、ストレージ、ネットワーク機器などのハードウェアの物理的な破損
  • 外部と接続するネットワーク回線の物理的な切断

これらの要因は予測が困難なため、利用者は地理的に離れた複数の拠点(アベイラビリティーゾーン)にシステムを分散させるマルチAZ構成などの対策を講じる必要があります。

ソフトウェア要因(バグ・設定ミス)

ソフトウェア要因による障害は、AWSの基盤システムに含まれるプログラムのバグや、ネットワーク設定の不備などによって発生します。クラウド環境は無数のソフトウェアが複雑に連携しているため、特定の条件下で潜在的な欠陥が顕在化することがあります。

ソフトウェア要因の具体例
  • API処理を担う管理機能(コントロールプレーン)の処理遅延や機能不全
  • ネットワーク機器のOSに潜んでいたバグによる通信障害
  • 利用者側で構築したアプリケーションやミドルウェアの不具合
  • 不適切なネットワーク設定による意図しないパケットロスや遅延

ソフトウェアのバグは予測が極めて困難なため、一部のコンポーネントに障害が発生してもシステム全体が停止しないような回復力のあるアーキテクチャ設計が求められます。

人的要因(オペレーションミス)

人的要因による障害は、AWSの運用担当者や利用者側のシステム管理者の誤操作によって引き起こされます。システムが高度に自動化されていても、重要な設定変更などには人間の判断が介在するため、ヒューマンエラーを完全に排除することは困難です。

人的要因の具体例
  • データベースの削除コマンドやセキュリティ設定の誤った実行
  • ロードバランサーやファイアウォールの設定ミス
  • 複雑な運用手順書に起因する操作ミス
  • システムへの過剰なアクセスを許容してしまうアクセス権限の付与ミス

人的ミスを防ぐには、手作業を極力減らしてIaC(Infrastructure as Code)などで設定をコード化・自動化し、変更適用前にテスト環境で厳密な検証を行う運用体制の構築が重要です。

過去の主要な障害事例と教訓

2019年東京リージョンの大規模障害

2019年8月に東京リージョンで発生した大規模障害は、単一のアベイラビリティーゾーン(AZ)における物理的な冷却システムの故障が原因でした。データセンター内の温度が異常上昇したことで、機器保護のために多数のサーバーやストレージが自動シャットダウンされ、EC2インスタンスやEBSボリュームへのアクセスが長時間にわたり不可能となりました。

この障害は国内の多くのサービスに甚大な影響を与え、復旧プロセスでのアクセス集中がさらなる遅延を生む結果となりました。この事例から得られた最大の教訓は、単一のAZに依存した構成の危険性です。物理的な設備故障のリスクはゼロではないため、影響を最小化するには複数のAZにシステムを分散配置するマルチAZ構成が不可欠であると再認識されました。

2021年米国東部リージョンの障害

2021年12月に米国東部リージョンで発生した障害は、AWS内部ネットワークの想定外の過負荷とソフトウェアの潜在的なバグが原因でした。APIリクエストを処理する内部システムが、特定のしきい値を超えたことでパフォーマンスが著しく低下し、EC2インスタンスの起動や設定変更などを担うコントロールプレーンが機能不全に陥りました。

影響は広範囲に及び、認証や監視など多数のAWSサービスでエラー率が上昇しました。この事例からの教訓は、クラウド基盤の根幹をなす管理システムも障害を起こし得るという現実を直視することです。コントロールプレーンが停止しても、ユーザー向けのサービス提供を継続できるデータプレーン主体の設計を平時から心がける重要性が示されました。

広告

障害発生時の情報収集

Service Health Dashboardの確認

障害の疑いがある場合、最初に確認すべき公式情報源がService Health Dashboardです。このダッシュボードは、AWSの全リージョンとサービスの現在の稼働状況をリアルタイムで一覧表示します。システムに異常が発生した際、それが自社の問題かAWS側の広範な障害かを切り分けるための一次情報源となります。

障害が公式に認知されると、影響範囲や対応状況のアップデートもここに掲載されます。障害発生時の初動対応として、このダッシュボードで客観的な状況を把握し、社内や顧客への報告を行うための手順を確立しておくことが重要です。

Personal Health Dashboardの活用

自社のAWS環境に直接影響する障害情報を詳細に把握するには、Personal Health Dashboardの活用が不可欠です。Service Health DashboardがAWS全体の状況を公開するのに対し、こちらはログイン中のアカウントが利用しているリソースに限定したイベントや問題を通知してくれます。

項目 Service Health Dashboard Personal Health Dashboard
対象範囲 AWS全体のサービス稼働状況 自アカウントが利用するリソース
情報の粒度 全ユーザー共通の俯瞰的な情報 アカウント固有の個別具体的な情報
主な用途 広範な障害の有無と全体状況の把握 自社システムに直接影響するイベントの確認
2つのダッシュボードの役割分担

例えば、自社が利用するEC2インスタンスの物理ホストに劣化が検出された場合や、RDSのメンテナンスが予定されている場合などにピンポイントで通知を受け取れます。ノイズなく自社に直結する情報を得るために、日常的な監視プロセスに組み込むことが強く推奨されます。

耐障害性を高める設計思想

障害を前提とする「Design for Failure」

クラウドにおけるシステム設計では、「すべてのコンポーネントはいつか必ず故障する」という前提に立つDesign for Failure(障害許容設計)の思想が不可欠です。無数のハードウェアやソフトウェアで構成されるクラウドインフラにおいて、コンポーネントの停止を完全に回避することはできません。

この思想の実践には、単一のサーバーやデータセンターが停止してもシステム全体が機能し続けるアーキテクチャの採用が求められます。例えば、ロードバランサーでトラフィックを複数サーバーに分散させ、異常を検知したサーバーを自動的に切り離す構成や、データを複数箇所に複製・バックアップする仕組みがこれにあたります。障害発生を日常的なイベントとして自動的に対処し、サービスへの影響を最小限に抑えることが目的です。

影響範囲を限定する疎結合アーキテクチャ

一部の障害がシステム全体に波及するのを防ぐには、各機能を独立したコンポーネントに分割する疎結合アーキテクチャが効果的です。コンポーネント同士が密接に依存していると、一つの機能停止が連鎖的に他の機能も停止させるリスクが高まります。

疎結合アーキテクチャでは、コンポーネント間にメッセージキューなどを配置し、直接の依存関係を排除します。例えば、注文受付システムと注文処理システムの間にキューを置けば、処理システムが一時的にダウンしても、注文受付システムはキューにリクエストを送り続けることができます。これにより、特定のコンポーネントの障害が他に影響を与えるのを防ぎ、システム全体の可用性と耐障害性を高めることができます。

広告

可用性を高めるアーキテクチャ

マルチAZ構成の基本と実装ポイント

高可用性を実現する最も基本的なアーキテクチャがマルチAZ構成です。AWSの各リージョンは、独立した電源やネットワークを持つ複数のアベイラビリティーゾーン(AZ)で構成されており、一つのAZで障害が発生しても他のAZへの影響を遮断できます。

マルチAZ構成を実装する際は、システムの各層で冗長化を図ることが重要です。

マルチAZ構成の実装ポイント
  • ウェブサーバー層: 複数のAZにインスタンスを配置し、ロードバランサーでトラフィックを分散させる。
  • データベース層: プライマリDBとスタンバイDBを別々のAZに配置し、データを同期レプリケーションする。

この構成により、プライマリDBに障害が発生した際は、自動的にスタンバイDBへ切り替わるフェイルオーバーが機能し、サービス停止を最小限に抑えられます。重要な業務システムを構築する際には一般的に推奨されるアーキテクチャです。

大規模障害に備えるマルチリージョン戦略

リージョン全体が機能不全に陥るような大規模災害や、致命的なシステム障害に備えるためには、マルチリージョン戦略が必要です。マルチAZ構成は同一リージョン内の障害にしか対応できないため、より高い可用性が求められるシステムでは、地理的に離れた別のリージョンにもシステムを分散させます。

実装には、事業要件やコストに応じて複数のパターンがあります。

マルチリージョン戦略の主なパターン
  • バックアップ&リストア: データを別リージョンにバックアップし、障害時に復元する最も低コストな手法。
  • パイロットライト/ウォームスタンバイ: DBなど主要コンポーネントのみを常時同期させ、障害時に他サーバーを起動する。
  • アクティブ/アクティブ構成: 複数のリージョンで常にシステムをフル稼働させ、ダウンタイムをほぼゼロにする最高レベルの手法。

マルチリージョン戦略はデータの同期遅延や運用が複雑化するため、システムの重要度に応じて最適な構成を慎重に選定する必要があります。

ビジネス要件(RTO/RPO)とコストのバランスをどう取るか

障害対策の設計では、事業継続における目標復旧時間(RTO)目標復旧時点(RPO)を定義し、コストとのバランスを見極めることが重要です。RTOは「システム停止から復旧までに許容される時間」、RPOは「復旧時にどの時点のデータまでを保証するか」を示す指標です。

ダウンタイムやデータ損失をゼロに近づけるほど、インフラ費用や運用コストは高騰します。数秒の停止も許されない金融システムであれば、高コストなマルチリージョンのアクティブ/アクティブ構成が正当化されるかもしれません。一方で、数時間の停止が許容される社内システムなら、マルチAZ構成や定期バックアップといった低コストな手法で十分です。システムの重要性を評価し、投資対効果が最も高いアーキテクチャを選択することが不可欠です。

障害に備える運用体制

CloudWatchによる監視とアラート設定

障害の予兆を早期に検知し、サービス停止を未然に防ぐには、Amazon CloudWatchなどの監視ツールと精緻なアラート設定が不可欠です。リソース使用状況やアプリケーションの挙動を常時モニタリングすることで、問題が発生した際に迅速に対応できます。

CPU使用率やネットワークトラフィックなどのメトリクスを継続的に監視し、正常時の基準値から逸脱した場合に管理者に通知が届くようアラートを設定します。例えば、EC2インスタンスのCPU使用率がしきい値を超えたり、ロードバランサーのエラー率が急増したりした場合に、自動で通知を発報させます。これにより、障害の芽を迅速に摘み取り、ビジネスへの影響を最小限に抑えるプロアクティブな運用体制を確立できます。

カオスエンジニアリングによる障害訓練

システムの耐障害性を実践的に検証し、組織の対応力を高めるためには、カオスエンジニアリングによる障害訓練が有効です。これは、稼働中のシステムに対し、意図的にサーバーの停止やネットワーク遅延といった疑似障害を注入し、自動復旧メカニズムが期待通りに機能するかをテストする手法です。

この訓練を通じて、システム面の技術的な回復力を検証すると同時に、監視システムが正しくアラートを発報し、運用チームが手順書に従って的確に行動できるかという人的なプロセスも訓練できます。平時から意図的な障害を経験することでシステムの脆弱性を洗い出し、改善を繰り返すことが、強靭な運用体制の維持につながります。

障害検知後の初動対応と社内連携のポイント

障害検知後の被害拡大を防ぐには、事前に定義された手順書(プレイブック)に基づく迅速な初動対応と、関係部署間の円滑な情報連携が最重要です。混乱した状況下で誰が何をすべきか明確でなければ、復旧作業が遅れ、ビジネスへの影響が拡大してしまいます。

初動対応と連携のポイント
  • プレイブックの整備: アラート受信直後に行うべきシステムの切り離しや復旧手順を文書化し、チーム内で共有する。
  • エスカレーションルールの策定: 事態の深刻度に応じて、経営層や他部署へ報告する基準と連絡ルートを明確にする。
  • コミュニケーション体制の確立: 復旧作業と並行し、顧客や関係者へ適切に情報開示を行うための体制を整える。

技術的な復旧だけでなく、迅速かつ透明性のあるコミュニケーションが、障害時の信頼維持の鍵となります。

よくある質問

マルチAZ構成なら障害は防げますか?

いいえ、マルチAZ構成は万能ではありません。データセンター単位の物理障害には非常に有効ですが、ソフトウェアのバグやオペレーションミスといった論理的な障害、またはリージョン全体に及ぶ大規模障害は防げません。例えば、誤ってデータベースのデータを削除した場合、その操作はスタンバイ側にも即時反映されます。マルチAZ構成を基本としつつ、定期的なバックアップやアクセス権限の厳格化など、他の対策も併せて講じることが重要です。

リージョン障害とAZ障害の違いは?

影響範囲と規模が異なります。AZ障害はリージョン内の一部のデータセンター群に限定された障害ですが、リージョン障害はその地域全体におよぶ大規模な障害です。AZは物理的に独立した施設であるため、AZ障害は他のAZに波及しにくいです。

項目 AZ障害 リージョン障害
影響範囲 単一のアベイラビリティーゾーン 特定の地域全体(複数のAZ)
主な原因 冷却設備故障、局所的な停電など 広域災害、基幹システムの不具合など
基本的な対策 マルチAZ構成 マルチリージョン構成
AZ障害とリージョン障害の比較

基本的な障害対策としてはまずマルチAZ構成を実装し、より高い可用性が必要な場合にマルチリージョン構成を検討します。

障害時のAWSの責任範囲はどこまでですか?

AWSの責任範囲は、責任共有モデルに基づき、クラウドの基盤インフラの稼働維持に限定されます。データセンター設備やハードウェアのセキュリティと可用性はAWSが責任を負いますが、その上で利用者が構築するシステムの設定やデータ保護は利用者の責任です。AWS側の障害でインフラが停止した場合の復旧はAWSが行いますが、利用者が耐障害性の高い構成を組んでいなかった場合のビジネス上の損失は、利用者自身が負うことになります。

中小企業でもマルチリージョンは必要ですか?

多くの中小企業にとって必須ではありません。マルチリージョン構成はインフラ費用が倍増し、運用も複雑化するため、限られた予算や人員では負担が大きすぎる場合があります。一般的な業務システムであれば、堅牢なマルチAZ構成と定期的なデータバックアップを適切に行うことで、十分な事業継続性を確保できます。マルチリージョンは、ごく一部の極めてミッションクリティカルなシステムを運用する場合に限定して検討するのが現実的です。

障害情報をSlack等で自動通知できますか?

はい、可能です。AWSの各種サービスを組み合わせることで、障害情報をSlackなどのチャットツールに自動通知する仕組みを構築できます。Amazon EventBridgeで特定の障害イベントを検知し、AWS Lambdaでメッセージを整形してSlackのAPIに送信する、といった連携が一般的です。これにより、障害発生の認知を早め、チーム全体でリアルタイムに状況を共有し、迅速な復旧対応につなげることができます。

まとめ:AWS障害に備え、システムの可用性を最大化する

本記事では、AWS障害の原因から具体的な対策までを解説しました。障害は物理的要因から人的ミスまで多岐にわたるため、「障害は必ず発生する」という前提に立った「Design for Failure」の思想が不可欠です。まずはマルチAZ構成を基本として単一障害点をなくし、システムの可用性を高めることが第一歩となります。その上で、目標復旧時間(RTO)や目標復旧時点(RPO)といったビジネス要件とコストのバランスを考慮し、マルチリージョン戦略やバックアップ計画など、自社のシステムに最適な対策を選択することが重要です。障害発生時の影響を最小限に抑えるためには、監視体制の構築や障害訓練といった日頃の運用も欠かせません。この記事で解説した内容は一般的な指針であり、具体的な設計や運用については、個別の要件に応じて専門家へ相談することをおすすめします。



Baseconnect株式会社
サイト運営会社

本メディアは、「企業が経営リスクを正しく知り、素早く動けるように」という想いから、Baseconnect株式会社が運営しています。

当社は、日本最大級の法人データベース「Musubu」において国内1200万件超の企業情報を掲げ、企業の変化の兆しを捉える情報基盤を整備しています。

加えて、与信管理・コンプライアンスチェック・法人確認を支援する「Riskdog」では、年間20億件のリスク情報をAI処理、日々4000以上のニュース媒体を自動取得、1.8億件のデータベース等を活用し、取引先の倒産・不正等の兆候の早期把握を支援しています。

記事URLをコピーしました