耐障害性ライフサイクルフレームワーク: 耐障害性向上のための継続的なアプローチ
Amazon Web Services (寄稿者)
2023 年 10 月 (ドキュメント履歴)
現代の組織では、特に顧客からの期待が常にオンで常に利用可能という考え方にシフトするにつれて、耐障害性関連の課題が増え続けています。リモートチームと複雑な分散アプリケーションに連動して、頻繁なリリースの必要性が高まっています。そのため、組織とそのアプリケーションはこれまで以上に耐障害性を強化する必要があります。
AWS では、インフラストラクチャ、従属サービス、設定ミス、一時的なネットワークの問題に関連する障害など、中断から抵抗または回復するアプリケーションの能力として耐障害性を定義しています (AWS Well-Architected フレームワーク「信頼性の柱」ドキュメントの「回復力、および信頼性のコンポーネント」を参照してください)。ただし、望ましいレベルの耐障害性を実現するには、多くの場合、トレードオフが必要です。運用の複雑さ、エンジニアリングの複雑さ、コストは、それに応じて評価および調整する必要があります。
AWS では、顧客や社内チームとの長年の協力に基づいて、耐障害性に関する学習とベストプラクティスについて記録した耐障害性ライフサイクルフレームワークを作成しました。このフレームワークは、次の図に示す 5 つの主要なステージの概要を示しています。各ステージで、戦略、サービス、メカニズムを使用して耐障害性体制を改善できます。
以下のステージについて、このガイドの次のセクションで説明します。
用語と定義
各ステージの耐障害性の概念は、個々のコンポーネントからシステム全体まで、さまざまなレベルで適用されます。これらの概念を実装するには、以下のいくつかの用語を明確に定義する必要があります。
-
コンポーネント: 機能を実行するための要素。ソフトウェアとテクノロジーのリソースで構成されます。コンポーネントの例としては、コード設定、ネットワークなどのインフラストラクチャ、サーバー、データストア、または多要素認証 (MFA) デバイスなどの外部依存関係があります。
-
アプリケーション: 顧客向けのウェブストアフロントや機械学習モデルを改善するバックエンドプロセスなど、ビジネス価値を提供するコンポーネントのコレクション。アプリケーションは、単一の AWS アカウント内のコンポーネントのサブセットで構成されている場合もあれば、複数の AWS アカウントおよびリージョンにまたがる複数のコンポーネントのコレクションである場合もあります。
-
システム: 特定のビジネス機能を管理するために必要なアプリケーション、人材、プロセスのコレクション。システムには、機能の実行に必要なアプリケーション、継続的インテグレーションと継続的デリバリー (CI/CD)、オブザーバビリティ、設定管理、インシデント対応、ディザスタリカバリなどの運用プロセス、およびそのようなタスクを管理するオペレーターが含まれます。
-
中断: アプリケーションがビジネス機能を適切に提供できないようにするイベント。
-
障害: 中断が軽減されない場合にアプリケーションに与える影響。一連の中断が発生した場合、アプリケーションに障害が発生する可能性があります。
継続的な耐障害性
耐障害性ライフサイクルは継続的なプロセスです。同じ組織内であっても、各アプリケーションチームはアプリケーションの要件により、各ステージ内で異なるレベルの完全性で実行できます。ただし、各ステージが完全であればあるほど、アプリケーションの耐障害性も高くなります。
耐障害性ライフサイクルは、組織が運用できる標準プロセスと考える必要があります。AWS では、アプリケーションを開発および運用しながら、運用プロセス全体に計画、テスト、学習を組み込むことを目標に、ソフトウェア開発ライフサイクル (SDLC) に似た耐障害性ライフサイクルを意図的にモデル化しています。多くのアジャイル開発プロセスと同様に、耐障害性ライフサイクルは開発プロセスを繰り返すたびに繰り返すことができます。 ライフサイクルの各ステージ内のプラクティスは、時間の経過とともに徐々に深化させていくことをお勧めします。