AWS Resilience Hubを調査してみました。

こんにちは、コンソル部のソウヌです。AWS Resilience Hubが2022年1月にソウルリージョンにもリリーズされたのでどのサービスなのか味わいする感じで触ってみました。
2022.05.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

初めに

Resilienceはという意味で、AWS Resilience Hubはアプリケーションののことを検査・管理可能なサービスです。そして、アプリケーションに関する回復力の定義やおすすめの仕組みなどの機能があってとても有用だと思います。AWSコンソールでは日本語の支援はまだのサービスです。

AWS Resilience Hubを使用する前、復旧に関する用語を覚えているとサービスを理解しやすいと思います。元性に影響を与える要素としては障害の状況のための災害復旧(Disaster Recovery)と失敗の状況のための高可用性(Availability)があります。その違いは何のか気になるので概要だけ説明します。

災害復旧(DR)は外部の災害や内部のシステム・機械的な障害などの深刻な被害によってサービスやシステムが中断された時、正常の状態に復旧するポリシー・手順のことを意味します。障害が発生する時、どの時点でバックアップするのか(RPO, Recovery Point Objective)、復旧までどのぐらいの時間が必要なのか(RTO, Recovery Time Objective)のDR戦略を立てて対応できます。

高可用性はシステムの一部が失敗しても持続できるシステムの設計方法のことで、ワークロードを使用できる時間の比率で表現することができます。例えば問題発生時すぐシステム転換ができるようにDBやサーバーを2台用意したりするなどシステムの重複性を構築することで達成できます。両方、ビジネスを続けるという意味としては同じですが、災害復旧は単純の障害処置(failover)ではなくシステム中断後のサービスを再設定することを目指すし、高可用性は一部システムに障害が発生しても全体システムは使用できるようにする違いがあります。

良い復旧力の環境を構築するため、ワークロードごとRTO・RPOを計算しバックアップ頻度なども戦略を立てたり、その戦略に会うインフラを構築してテストを行ったりすることは大変ですが、AWS Resilience HubはRTO・RPOの目標設定やAWS Well-Architected Frameworkのベストプラクティスを元でアプリケーションを分析して推奨事項を教えてくれるサービスです。

AWS Resilience Hubとは

AWS Security HubがAmazon GuardDuty・Inspectorなどのセキュリティー関連サービスを利用するように、AWS Resilience HubはAWS Fault Injection Simulator、AWS CloudFormation、AWS Systems Manager、Amazon CloudWatchなどの他のAWSサービスを利用してアプリケーションの復旧力を検査、勧奨事項、テストなどを行います。

AWS Resilience Hubの重要機能は下記の通りです。

  • アプリケーションの追加
  • RTO・RPO定義(復旧力ポリシー設定)
  • 復旧性評価
  • 定期的テストや検証機能

コンソル画面確認

Dashboard

Dashboardには追加したアプリケーションの情報を確認できます。各アプリケーションの状態や復旧力のスコア、設定したアラームとインジェクションテストに関する情報などが確認できます。

アプリケーションの追加

Application項目には下記のような対象になるアプリケーションを指定することが可能です。

Add applicationボタンをクリックする下の画面が出ます。

  • CloudFormation stacks: CloudFormationのスタックのことで最大5個のスタックを選択できます。他のAWSアカウントやリージョンのスタックも可能です。
  • Resource groups: AWS Resource Groupsに定義しておいたリソースグループです。最大5個のリソースグループを選択できます。
  • AppRegistry: AWS Service CatalogのAppRegistryのアプリケーションで一つのアプリケーションだけ選択可能です。
  • Existing application: 既存Resilience Hubに登録されているアプリケーションです。

ポリシー設定

ポリシーには特定インシデントのRTO・RPOを定義します。ワークロードに合わせて新しいポリシーを作ることもできるし(Create Policy)、AWSからで提供しているポリシー(Suggested Policy)を指定することも可能です。

定義可能なインシデントは大きく、Customer ApplicationとInfrastructureがあります。そしてInfrastructureインシデントにはInfrastructure、AZ、Reigonに関するRTO・RPOの定義が可能です。各インシデントに関する説明は以下になります。

  • Customer Application: コードのデプロイ・バグなどアプリケーション自体に影響があるインシデント
  • Infrastructure: EC2インスタンスの停止などインフラに関するインシデント
  • Availability Zone: AZに関するインシデント
  • Region: 全体リージョンに関するインシデント

Create Policy の場合、目標とするRTO・RPOをカスタムで定義できます。定義可能なRTO・RPOの単位は、最小1秒から最大30日まで設定できます。

Suggested policyの場合、アプリケーションに合わせて必要なRTO・RPOが定義されているポリシーがあります。

例えば、ビジネスに与える影響が小さいアプリケーションの場合、ApplicationとクラウドインフラのRTO・RPOが各2日・1日で定義してある「Non Critical applicationポリシー」を指定しても大丈夫ですよね。そしてSuggested policyも修正が可能ですので、力について詳しくない方は最初AWSから提供されているポリシーで検査を行い、修正して行くこともいいと思います。

復旧性評価や勧奨事項適用(feat.CloudFormation)

リソースのRTO・RPOのことを検査します。現在アプリケーションの予想RTO・RPOのことを検査して、設定したポリシーとの比較やそれを達成するための勧奨事項などを教えます。例えば、ポリシーのRTOのため、どの構成が必要し予想コストはどのぐらいなのかです。

そして運用上の勧奨事項としての各設定をCloudFormation テンプレートを提供します。Resilience Hubに関するCloudWatchアラーム、Systems ManagerのSOP(Standard Operating Procedure)、Fault Injectionテストのための テンプレートなどをCloudFormation テンプレートでダウンロードでき、適用することが可能です。

アラーム設定、Fault Injectionテストなどの評価結果を適用するためにリソースを直接に触れずにダウンロードしたCloudFormationテンプレートを活用するだけなのですごく便利だと思います。

料金

AWS Free Tierの場合は、3つのアプリケーションを6ヶ月間無料で使用することが可能です。その後、1アプリケーション・1ヶ月ごと15$になります。DRや高可用性を検証するためにかかる工数を考えてみるとそんなに高くでは感じられないですね。

最後に

目標とするRTO・RPOに合わせるインフラを構築・テストするのはクラウド環境でも大変なことですが、簡単に検査・テスト・修正ができる便利なサービスができていいと思います。今後よく使われるサービスの一つになれるかもしれません。

参考

AWS公式ドキュメント