Amazon Web Services ブログ

AWS Resilience Hub でアプリケーションのレジリエンスを測定、改善

アプリケーションの耐障害性の定義、追跡、管理を支援するために設計された新しい AWS のサービスである AWS Resilience Hub が一般提供を開始することを発表いたします。

お客様は、顧客にサービスを提供するために、耐障害性の高いアプリケーションを構築、管理しています。分散システムの構築は難しく、オペレーション状態を維持することはさらに困難です。問題は、システムが故障するかどうかではなく、いつ故障するかということであり、そのための準備が必要であるということです。

耐障害性の目標は通常、障害からの回復に要する時間を意味する目標復旧時間 (RTO) と、インシデント後にデータが失われる可能性のある最大時間枠を意味する目標復旧時点 (RPO) という 2 つのメトリクスによって測定されます。これらは、ビジネスとアプリケーションに応じて、秒、分、時間、または日単位で測定できます。

AWS Resilience Hub では、アプリケーションごとに RTO と RPO の目標を定義できます。次に、アプリケーションの構成を評価して、要件を満たしていることを確認します。実用的なレコメンデーションと耐障害性スコアを提供し、時間の経過に伴うアプリケーションの耐障害性の変化を追跡するのに役立ちます。Resilience Hub は、 AWS マネジメントコンソールからアクセスできる、カスタマイズ可能な単一のダッシュボードエクスペリエンスを提供し、評価の実行、事前構築済みテストの実行、アラームの設定を行って問題を特定し、オペレーターにアラートを発します。

AWS Resilience Hub は、クロスリージョンやクロスアカウントスタックなど、AWS CloudFormation によってデプロイされたアプリケーション (SAM および CDK アプリケーションを含む) を検出します。また、Resilience Hub は、Resource Groupsタグからアプリケーションを検出したり、AWS Service Catalog AppRigistry ですでに定義されているアプリケーションから選択したりします。

ここでの「アプリケーション」という用語は、アプリケーションソフトウェアやコードを指すだけでなく、ネットワーク、仮想マシン、データベースなど、アプリケーションをホストするインフラストラクチャスタック全体を指します。

耐障害性評価とレコメンデーション
AWS Resilience Hub の耐障害性評価では、AWS Well-Architected Framework のベストプラクティスを利用して、アプリケーションのコンポーネントを分析し、不完全なインフラストラクチャのセットアップ、構成ミス、または追加の構成改善の機会などによって引き起こされる潜在的な耐障害性の弱点を明らかにします。Resilience Hub は、アプリケーションの耐障害性を向上させるための実用的なレコメンデーションを提供します。

例えば、 Resilience Hub は、アプリケーションの Amazon Relational Database Service (RDS) Amazon Elastic Block Store (EBS)、および Amazon Elastic File System (Amazon EFS) のバックアップスケジュールが、耐障害性ポリシーで定義したアプリケーションの RPO と RTO を満たすのに十分であるかを検証します。不十分な場合は、RPO と RTO の目標を達成するための改善が推奨されます。

耐障害性評価では、標準作業手順 (SOP) と呼ばれる、アプリケーションの AWS Systems Manager ドキュメントとして復旧手順を作成するのに役立つコードスニペットが生成されます。さらに、 Resilience Hub は推奨される Amazon CloudWatch モニターとアラームのリストを生成し、デプロイ後のアプリケーションの耐障害性体制に対する変更をすばやく特定するのに役立ちます。

継続的な耐障害性検証
アプリケーションと SOP を更新して耐障害性評価からのレコメンデーションを組み込んだ後、Resilience Hub を使用して、本稼働にリリースされる前にアプリケーションが耐障害性目標を満たしているかどうかをテストおよび検証できます。Resilience Hub は、 AWS で障害インジェクション実験を実行するためのフルマネージドサービスである AWS Fault Injection Simulator (FIS) と統合されています。FIS は、ネットワークエラーやデータベースへのオープン接続数が多すぎるなど、実際の障害に関する故障注入シミュレーションを提供します。Resilience Hub は、開発チームが耐障害性評価とテストを CI/CD パイプラインに統合し、継続的な耐障害性検証を行うための API も提供します。耐障害性検証を CI/CD パイプラインに統合することで、アプリケーションの基盤となるインフラストラクチャに対するすべての変更が、耐障害性を損なうことがないようにすることができます。

可視性
AWS Resilience Hub は、アプリケーションポートフォリオ全体の耐障害性ステータスをダッシュボードを通して包括的に表示します。アプリケーションの耐障害性の追跡を支援するために、 Resilience HubAmazon CloudWatch AWS Fault Injection Simulator (FIS) などのサービスからの耐障害性イベント (データベースが利用できない、耐障害性検証の失敗など)、アラート、インサイトを整理します。Resilience Hub は、推奨される耐障害性テスト、アラーム、リカバリ SOP の実装レベルを示す尺度である耐障害性スコアも生成します。このスコアは、時間の経過に伴う耐障害性の向上を測定するために使用できます。

直観的なダッシュボードは、問題に関するアラートを送信し、修復手順を推奨し、アプリケーションの耐障害性を一元的に管理します。例えば、 CloudWatch アラームがトリガーされると、 Resilience Hub がアラートを発し、デプロイする復旧手順を推奨します。

AWS Resilience Hub の動作
単一の EC2 インスタンスと RDS データベースで構成される非耐障害性のアプリケーションを開発しました。Resilience Hub にこのアプリケーションを評価させたいと考えています。このアプリケーションを AWS アカウントにデプロイする CDK スクリプトは、GitHub リポジトリで入手できます。CDK v2 (npm install-g aws-cdk @next) をインストールし、スタック (cdk bootstrap && cdk deploy --all) をデプロイするだけです。

Resilience Hub を使用する際は、次の 4 つのステップがあります。

  • まず評価するアプリケーションを追加します。CloudFormation スタック、 AppRigstryResource Groups、または別の既存のアプリケーションから開始できます。
  • 次に、耐障害性ポリシーを定義します。ポリシードキュメントには、アプリケーション、インフラストラクチャ、アベイラビリティーゾーン全体、または AWS リージョン全体に影響を与える可能性のあるインシデントに対する RTO と RPO の目標が記載されています。
  • 第三に、自分のアプリケーションに対して評価を実行します。この評価で、ポリシー違反がある場合はリストされ、CloudWatch アラーム、標準作業手順ドキュメント、障害インジェクション実験テンプレートの作成など、一連のレコメンデーションが提示されます。
  • 最後に、アプリケーションの耐障害性体制を検証するために、レコメンデーションを設定したり、定期的に実験を実行したりします。

準備
まず、ブラウザを開いて AWS マネジメントコンソールに移動します。AWS Resilience Hub を選択し、[アプリケーションを追加] を選択します。

Resilience hub がアプリケーションを追加

サンプルアプリケーションは、ネットワーク、データベース、EC2 インスタンスの 3 つの CloudFormation スタックでデプロイされています。 これら 3 つのスタックを選択し、画面下部の [次へ] を選択します。

Resilience Hub がクラウドフォーメーションタックを追加

Resilience Hub は、アプリケーションの耐障害性に影響を与える可能性のあるこれらのスタックによって作成されたリソースを検出し、評価に含めるか除外するリソースを選択し、[次へ] をクリックします。この例では、NAT ゲートウェイ、データベースインスタンス、および EC2 インスタンスを選択します。

Resilience Hub がリソースを選択

耐障害性ポリシーを作成し、このアプリケーションに関連付けます。ポリシーテンプレートから選択することもできますし、最初からポリシーを作成することもできます。ポリシーには、デプロイエラーやコードレベルのバグなど、アプリケーション自体に影響するインシデントの名前と RTO および RPO の値と、EC2 インスタンスのクラッシュなど、アプリケーションインフラストラクチャに影響するインシデントの値、アベイラビリティーゾーンに影響するもの、リージョン全体に影響するものが含まれます。値は秒、分、時間、または日で表されます。

Resilience Hub がポリシーを作成

最後に、選択内容を確認し、[公開] を選択します。

評価
このアプリケーションとそのポリシーが公開されたら、[耐障害性を評価] を選択して評価を開始します。

Resilience Hub が耐障害性を評価

当然のことながら、Resilience Hub は耐障害性ポリシーに違反があったと報告します。

Resilience Hub ポリシー違反

詳細を取得するためにレポートを選択します。 ダッシュボードには、リージョン、アベイラビリティーゾーン、インフラストラクチャ、およびアプリケーションレベルのインシデントで予想される RTO/RPO がポリシーとどのように比較されるかが示されます。

Resilience Hub 評価ダッシュボード

耐障害性に関するレコメンデーション運用に関するレコメンデーションにアクセスできます。

耐障害性レコメンデーションでは、アプリケーションのコンポーネントが耐障害性ポリシーに準拠しているかどうかがわかります。また、アベイラビリティーゾーンの RTO/RPO に合わせて最適化コストを最適化する、または変更を最小限に抑えるための最適化のレコメンデーションも見つけました。

Resilience Hub 最適化

[運用上のレコメンデーション] の最初のタブに、CloudWatch で作成する提案されたアラームのリストが表示されます。

Resilience Hub アラーム

2 番目のタブには、推奨される標準作業手順が一覧表示されます。これらは、バックアップからのリストアなど、自分のインフラストラクチャで実行できる Systems Manager ドキュメントです。

Resilience Hub SOP

3 番目のタブ (フォールトインジェクション実験テンプレート) は、インフラストラクチャ上で実行して耐障害性をテストする実験を提案します。実験は FIS で実行します。提案された実験は、メモリ負荷の注入または注入プロセスの強制終了です。

Resilience Hub - FIS

[レコメンデーションの設定] を選択すると、Resilience Hub CloudFormation テンプレートを生成して、アラームを作成したり、提案された SOP や実験を実行したりします。

Resilience Hub - レコメンデーションの設定

フォローアップ画面は一目瞭然です。テンプレートが生成されると、[テンプレート] タブで実行できるようになります。テンプレートを適用し、それがアプリケーションの耐障害性スコアにどのような影響を与えるかを観察します。

Resilience Hub 耐障害性スコア

サンプルアプリケーションのデプロイに使用した CDK スクリプトによって、同じアプリケーションの高可用性インフラストラクチャも作成されます。ロードバランサー、Auto Scaling グループ、および 2 つのノードで構成されるデータベースクラスターがあります。演習として、このアプリケーションスタックで同じ評価レポートを実行し、結果を比較します。

ご利用になれるリージョンと料金
AWS Resilience Hub は現在、米国東部 (オハイオ)米国東部 (バージニア北部)米国西部 (オレゴン)アジアパシフィック (シンガポール)アジアパシフィック (東京)欧州 (アイルランド)欧州 (フランクフルト) の各 AWS リージョンでご利用いただけます。今後、さらにリージョンを追加する予定です。

通常どおり、利用分の料金のみをお支払いいただきます。前払いの費用や最低使用料はありません。Resilience Hub で記述したアプリケーションの数に基づいて課金されます。Resilience Hub は 6 か月間、最大 3 つまでのアプリケーションを無料で試すことができます。その後、Resilience Hub の料金はアプリケーションあたり月額 15.00 USD になります。Resilience Hub で最初の耐障害性評価を実行すると、メータリングが開始されます。Resilience HubCloudWatch アラームなどのサービスをプロビジョニングする場合があるため、追加料金が適用される場合があることにご注意ください。詳細については、料金ページをご覧ください。

フィードバックをお知らせいただき、最初の耐障害性ダッシュボードを今すぐ構築しましょう

— seb

原文はこちらです。