【AWSサービス 基礎編】AWS Resilience Hub でアプリケーションの耐障害性を評価する

目次

概要

AWS Resilience Hub は、AWS 上のアプリケーションの耐障害性(レジリエンス)を定義・検証・追跡するためのマネージドサービスです。アプリケーションが目標とする復旧時間目標(RTO)と復旧時点目標(RPO)を満たせるかを評価し、改善のための推奨事項を提示します。

クラウド上でアプリケーションを運用する際、障害発生時にどの程度の時間で復旧できるか、どの時点までデータを復元できるかは重要な関心事です。Resilience Hub を使うことで、アプリケーションの構成を自動的に検出し、設定した耐障害性ポリシーに対してどの程度達成できているかを可視化できます。

本記事では、Resilience Hub にアプリケーションを登録し、耐障害性ポリシーを設定して評価を実行する手順を体験します。

Resilience Hub の全体像: 構成を検出し、RTO / RPO のポリシーに照らして評価する
Resilience Hub の全体像: 構成を検出し、RTO / RPO のポリシーに照らして評価する
クラウドおさる

弊猿はこの記事で、CloudFormation のスタックを Resilience Hub に登録して、「このままで目標どおり復旧できるか」を採点してもらうでござる。障害が起きる前に弱点を知っておくのでござるよ。

この記事のメリット

  • AWS Resilience Hub の基本概念と役割を理解できる
  • RTO(復旧時間目標)と RPO(復旧時点目標)の考え方を把握できる
  • マネジメントコンソールからアプリケーションを登録する手順を習得できる
  • 耐障害性ポリシーの設定と評価の実行を体験できる
  • 評価結果から推奨事項を確認し、改善ポイントを把握する方法を学べる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

RTO と RPO とは

クラウドおさる

とひさん、Resilience Hub の話の前に、RTO と RPO という言葉がよく出てくるでござる。これは何でござるか?

土肥

いい質問だね。どちらも障害が起きたときの「目標」を表す指標なんだ。まずは表で整理してみよう。

指標正式名称説明
RTORecovery Time Objective(復旧時間目標)障害発生からサービスが復旧するまでの目標時間
RPORecovery Point Objective(復旧時点目標)障害発生時にどの時点までのデータを復元できるかの目標
クラウドおさる

うーむ、文字だけでは、弊猿の頭にはまだ絵が浮かばぬでござる……。

土肥

具体的な数字で考えるとわかりやすいよ。例えば RTO が 1 時間なら「障害が起きてから 1 時間以内にサービスを復旧する」っていう目標だし、RPO が 15 分なら「障害発生の 15 分前までのデータは復元できる」っていう目標なんだ。

クラウドおさる

なるほど、RTO は「どれだけ早く直すか」、RPO は「どこまでデータを戻せるか」でござるな。猿山のバナナ倉庫が崩れたら、何時間で倉庫を開け直すかが RTO、在庫帳をいつの時点まで戻せるかが RPO、というわけでござる。

土肥

そのとおり。この 2 つの指標が、Resilience Hub でアプリケーションの耐障害性を評価するときのベースになるんだよ。

AWS Resilience Hub の主な機能

クラウドおさる

では Resilience Hub は、具体的にどんなことができるのでござるか?

土肥

大きく 5 つの機能があるんだ。順番に紹介するね。

  • アプリケーション構成の検出: CloudFormation スタック、Terraform State ファイル、リソースグループ、または EKS クラスターからアプリケーション構成を自動検出する
  • 耐障害性ポリシーの定義: 障害タイプごとに RTO/RPO の目標値を設定する
  • 耐障害性の評価: 現在の構成がポリシーを満たすかを評価し、結果をレポートする
  • 推奨事項の提示: ポリシーを満たすための具体的な改善アクションを提案する
  • ドリフト検出: アプリケーション構成の変更を検出し、耐障害性への影響を通知する
クラウドおさる

構成を自動で見つけ、評価し、改善点まで教えてくれるのでござるな。

土肥

そうなんだ。さらにドリフト検出っていう機能があって、構成が変わったときに耐障害性への影響を自動で通知してくれるから、継続的に監視できるのもポイントだよ。

クラウドおさる

一度評価して終わりではなく、変わったらまた知らせてくれるのでござるか。猿山の長老会も、誰かが勝手に見張り台を動かしたら、すぐ気づける仕組みが欲しいと言っておったでござる。

耐障害性ポリシー

クラウドおさる

さきほど「障害タイプごとに RTO/RPO を設定する」とおっしゃったでござるな。障害タイプには、どんな種類があるのでござる?

土肥

耐障害性ポリシーでは、4 つの障害タイプごとに目標を設定するんだ。ソフトウェア・ハードウェア・AZ の 3 つは必ず決めて、リージョンはマルチリージョンのアプリケーションのときに任意で足す形だよ。

耐障害性ポリシー: 4 つの障害タイプごとに RTO / RPO の目標を決める
耐障害性ポリシー: 4 つの障害タイプごとに RTO / RPO の目標を決める
障害タイプ説明
ソフトウェアアプリケーションソフトウェアの障害
ハードウェア基盤インフラストラクチャのハードウェア障害
AZ(アベイラビリティーゾーン)1つの AZ が利用不可になる障害
リージョンAWS リージョン全体が利用不可になる障害(設定は任意。マルチリージョンのアプリケーション向け)
クラウドおさる

リージョン全体が落ちるところまで想定するのでござるか。猿山でいえば、倉庫ひとつでなく山ごと嵐にやられる話で、かなり大ごとでござるな。

土肥

そうだね。だからこそ障害の規模ごとに目標を分けて設定できるようになってるんだ。それと、Resilience Hub にはあらかじめ用意されたポリシーテンプレートがあるから、ゼロから設定しなくても大丈夫だよ。要件に合わせてカスタマイズもできるしね。

クラウドおさる

テンプレートがあるなら、弊猿でも始めやすそうでござる。

アプリケーションの入力ソース

クラウドおさる

Resilience Hub がアプリケーションの構成を検出する、という話でござったが、どこから情報を取ってくるのでござるか?

土肥

いくつかの入力ソースに対応しているんだ。以下の 5 つだよ。

  • CloudFormation スタック: スタックで管理されているリソースを検出
  • Terraform State ファイル: S3 に保存された State ファイルからリソースを検出
  • リソースグループ: AWS Resource Groups で定義されたグループのリソースを検出
  • myApplications: myApplications で定義したアプリケーション
  • EKS クラスター: EKS で稼働するアプリケーションを検出
クラウドおさる

CloudFormation だけでなく、Terraform にも対応しているのでござるな。猿山の設計図が巻物でも石板でも、読み取ってくれるようなものでござる。

土肥

そうなんだ。Terraform の場合は S3 に保存された State ファイルを読み取る形になるよ。IaC で管理しているリソースなら、入力ソースとして指定するだけで構成を自動検出してくれるから便利なんだ。

クラウドおさる

では、今回の実践では CloudFormation スタックで試すのでござるな。楽しみでござる!

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ハンズオンガイド8 ステップ画面 7 枚

コンソールの横に開いて、チェックしながら進めましょう。

ガイドを開く

別タブで開きます。チェックはこのブラウザに保存されます。

前提条件

  • リージョン: ap-northeast-1(東京)
  • 以下のリソースが作成済みであること
リソース種別リソース名用途
CloudFormation スタックresilience-hub-lab-stack評価対象(VPC・サブネット・セキュリティグループ・EC2 インスタンス 1 台を含む)
IAM ロールresilience-hub-lab-roleResilience Hub が評価に使うロール(信頼先 resiliencehub.amazonaws.com、AWS 管理ポリシー AWSResilienceHubAsssessmentExecutionPolicy をアタッチ)

作成するリソース一覧

リソース種別リソース名用途
Resilience Hub アプリケーションmy-test-app評価対象アプリケーション
耐障害性ポリシーnon-critical-policyRTO/RPO の目標値定義

アプリケーションを登録する

  • AWSマネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します
  • 上部の検索バーに Resilience Hub と入力し、表示された「AWS Resilience Hub」を選択します
  • トップページの「アプリケーションを追加」をクリックします。アプリケーション名・リソース・耐障害性ポリシー・IAM ロールを、1 つの「アプリケーションを追加」画面でまとめて設定します
  • 「アプリケーション名」に my-test-app と入力します
  • 「このアプリケーションの管理方法を選択」で「リソースコレクション」を選択します
  • 「リソースコレクションを追加」で「CloudFormation スタック」を選択します
アプリケーションを追加画面(アプリケーション名とリソースコレクションの設定)
アプリケーションを追加画面(アプリケーション名とリソースコレクションの設定)

入力ソースを追加する

  • 「スタックを選択」のドロップダウンを開き、resilience-hub-lab-stack を選択します。選んだスタックが欄の下に表示されます
CloudFormation スタックを選択した状態
CloudFormation スタックを選択した状態

耐障害性ポリシーを設定する

  • 「RTO と RPO を設定」セクションで「新しい耐障害性ポリシーを作成」を選択します
  • 「名前」に non-critical-policy と入力します
  • 「RTO/RPO ターゲット」は、デフォルト値(RTO 4 時間、RPO 1 時間)のままにします。この値が、インフラストラクチャ・アベイラビリティーゾーン・リージョンの各障害タイプに適用されます。「その他の推奨値を表示します。」から、用途に合わせたほかの推奨値も確認できます
耐障害性ポリシーの設定(ポリシー名と RTO/RPO ターゲット)
耐障害性ポリシーの設定(ポリシー名と RTO/RPO ターゲット)
  • 「アクセス許可」セクションで「IAM ロールを使用」を選択し、resilience-hub-lab-role を選択します。「現在の IAM ユーザーのアクセス許可を使用」のままでは、ロールの選択を求めるエラーで先に進めません
  • その他の項目はデフォルトのままにして、ページ下部の「アプリケーションを追加」をクリックします

アプリケーションを発行する

  • アプリケーションの詳細画面が表示されます。スタックのリソースは自動でインポートされ、「アプリケーション構造」タブの「リソース」に EC2 インスタンスが「評価可能」として表示されます
  • 評価の前にアプリケーションを発行する必要があります。「ワークフロー」の「アプリケーションを発行」をクリックします。発行すると、ドラフトとは別に Version-1 が作られます
アプリケーション構造の画面(インポートされたリソースと「アプリケーションを発行」ボタン)
アプリケーション構造の画面(インポートされたリソースと「アプリケーションを発行」ボタン)
クラウドおさる

ここまでで、スタックからリソースを取り込み、耐障害性ポリシーをひも付けて、発行まで済ませたでござる。評価の土台がそろったのでござるな。

耐障害性の評価を実行する

  • 「ワークフロー」の「アプリケーションを評価」をクリックします
  • レポート名の入力ダイアログが表示されます。名前は自動で入っているので、そのまま「実行」をクリックします
  • 「評価」タブに評価レポートが追加され、ステータスが「進行中」になります。今回は 1 分ほどで「成功」に変わりました
評価実行中の画面(ステータスが進行中の状態)
評価実行中の画面(ステータスが進行中の状態)

評価結果を確認する

  • 評価レポートの名前をクリックして詳細を開きます
  • レポート名の横に、ポリシーを満たしているかどうかが表示されます。今回は「ポリシーに合致」でした。満たしていない場合は、ポリシー違反として表示されます
  • 「結果」タブでは、RTO と RPO それぞれについて、中断タイプ(アプリケーション・インフラストラクチャ・アベイラビリティーゾーン・リージョン)ごとに、ポリシーのターゲットと、現在の構成から推定した値が並びます
評価結果画面(中断タイプごとのターゲットと推定 RTO/RPO)
評価結果画面(中断タイプごとのターゲットと推定 RTO/RPO)
  • 「耐障害性に関するレコメンデーション」タブを選択します。AppComponent ごとに、現在の構成と、耐障害性を高める構成の案(オプション)が、推定 RTO/RPO や追加費用の目安とあわせて表示されます
耐障害性に関するレコメンデーション画面(改善案の一覧)
耐障害性に関するレコメンデーション画面(改善案の一覧)
クラウドおさる

評価結果は、ポリシーを満たしているかどうかと、中断タイプごとの推定値で出てくるでござる。満たしていなければレコメンデーションを見て構成を直し、もう一度評価する、この繰り返しでござるよ。

まとめ

  • AWS Resilience Hub はアプリケーションの耐障害性を評価・追跡するマネージドサービス
  • RTO(復旧時間目標)と RPO(復旧時点目標)を障害タイプごとに定義できる
  • CloudFormation スタックや Terraform State ファイルからアプリケーション構成を自動検出する
  • 耐障害性ポリシーに対する準拠状況を評価し、改善のための推奨事項を提示する
  • 事前定義されたポリシーテンプレート(MissionCritical、NonCritical など)を活用でき、カスタマイズも可能
  • 構成変更のドリフト検出により、耐障害性の継続的な監視が可能

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次