0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Application Recovery Controller Region Switchの概要及び独自実装との比較

Posted at

ARC Region Switchの概要と活用ポイント

はじめに

Amazon Application Recovery Controller(ARC)は、AWSリージョン障害時にアプリケーションのトラフィックを迅速かつ安全に別リージョンへ切り替えるためのサービスです。ARCのRegion Switch機能では、事前に定義した「プラン」に基づき、複数リージョン間でのフェイルオーバー処理を自動化・可視化できます。プランは「Workflow」「Trigger」「Step」などの構成要素から成り、CloudWatch Alarmによる自動実行や手動承認ステップ、LambdaやAuroraなどのAWSサービスとの連携も可能です。

本記事では、ARCの基本概念と、実際の構成・設計におけるポイント、そして従来の独自構成との比較を通じて、ARC導入によるメリットを整理します。


ARC Region Switchの構成要素

Plan

  • リージョン切替の全体設計を定義する単位
  • Recovery Time Objective(RTO)や対象リージョン、IAMロールなどを指定
    ※ここで設定したRTOについて、このRTOに間に合うようにARC側で処理してくれる、というものではありません。
     あくまで目標として設定することで後々切り替えを行ってから、その実績と目標を比較して達成度合いを見てくれるというもののようです。

Trigger

  • CloudWatch Alarmを条件として、プランを自動実行
  • Minimum delay between plan executions により連続実行を制御
    Minimum delay between plan executions があることにより例えばシステムが不安定な状態となって短時間に何度もCloudwatch Alarmのステータスが変更したとしてもその都度切り替え処理が発生することを防ぐことが可能になります。

Workflow

  • 各リージョンごとに定義されるステップ群
  • Activate / Deactivate のアクションを持つ
  • 並列実行や手動承認、Lambdaなど多様なステップを組み合わせ可能

このWorkflowは2025/8時点ではAWS Step Functionsの簡易版のようなイメージです。
特にAWSサービスとの連携に関してAWS Step Functionsのように充実しているわけではなく、EC2やECS・RDSなどあくまでマルチリージョンの切り替えにおいて処理が発生する可能性の高いものに限定されています。
ただその分機能全体がシンプルで直感的に操作しやすいとも言えます。

また、ワークフローは切替元リージョン・切替先リージョンで同じ処理を行うことも、別々の処理を行うこともどちらも可能です。


Plan評価ステータスの意味

Plan評価というのは、作成されたPlanが実行可能な状態になっているかどうか、を検証した結果です。
ステータスとしては以下のようなものがあります。

ステータス 説明
Passed プランは正常で、実行可能
Action Required 構成に問題があり、修正が必要
Pending Evaluation 評価が未完了
Unknown 評価結果が取得できない

例として私が作成したPlanではIAMRoleに何の権限も持たないダミーのものを設定したところ、IAM権限が不足しているということで以下のように問題がある旨指摘がされます。

arc1.PNG

評価結果は GetPlanEvaluationStatus API またはコンソール上で確認可能です。


Triggerの制約と設計ポイント

Triggerは作成したPlanに対して、何をトリガに実行するか設定するための項目です。

項目 内容
対応条件 CloudWatch Alarm のみ(EventBridgeは非対応)
条件数 最大10個まで設定可能
実行間隔 minDelayMinutesBetweenExecutions で制御
実行アクション Activate / Deactivate を指定可能

なお、Triggerとは別に即時でリージョン切り替えを手動実行することも可能です。


使用可能なWorkflowコンポーネント一覧(2025/8時点)

ワークフローでは利用できるコンポーネントが限定されており以下の通りとなっています。
自システム固有で必要な処理を組み込む場合はCustom action Lambda execution blockを用いてLambda内で処理を実装することになります。

コンポーネント名 ブロック名 説明 主な用途 関連サービス
CustomActionLambda Custom action Lambda execution block Lambda関数を実行 カスタム処理、通知 AWS Lambda
ManualApproval Manual approval execution block 手動承認ステップ オペレーターによる確認 IAM Role
AuroraGlobalDatabase Amazon Aurora Global Database execution block Aurora Global DBの切替 DBフェイルオーバー Amazon Aurora
EC2AutoScaling Amazon EC2 Auto Scaling group execution block EC2 ASGの容量増加 インスタンススケール EC2 Auto Scaling
ARCRoutingControl ARC routing control execution block ARC Routing ControlのON/OFF トラフィック切替 Route 53 ARC
ARCRegionSwitchPlan ARC Region switch plan execution block 別のRegion Switch Planを実行 ネスト構成 ARC
Parallel Parallel execution block 複数ステップを並列実行 並列処理 任意のステップ群
ECSServiceScaling Amazon ECS service scaling execution block ECSサービスのスケーリング コンテナ拡張 Amazon ECS
EKSResourceScaling Amazon EKS resource scaling execution block EKSリソースのスケーリング Kubernetes拡張 Amazon EKS
Route53HealthCheck Amazon Route 53 health check execution block Route 53ヘルスチェック監視 健全性確認 Amazon Route 53

このWorkflowの実装に関して、GUIで操作できるので簡単そうには見えますが切り替えの内容は当然その環境の知見を持っていることが前提となっているので、例えばビジネスサイドの人が簡単に作れる、というような思想のものではなくAWS環境を正しく理解したエンジニアが行う必要があると思います。


Workflowの設計とリージョン間連携

切替手順によってはリージョンAで処理を行い、リージョンBで後続処理を行ってから、再度リージョンAで別の処理を行う、というようなことが必要になるケースもあるかと思います。
しかし2025/8時点でにおいてARCのRegion SwitchではWorkflow間の明示的な順序制御を行う標準的な機能はありません。
もしそれが必要な場合には複数のWorkflowを作成したうえで以下のようなものを組み合わせて実装する必要があります。

  • ManualApprovalステップを挟む
  • Parallelステップで並列実行
  • Nested Planステップで別プランを呼び出す
  • Lambdaステップで外部制御を挟む

独自構成 vs ARC:処理ステップの比較

私のチームでは以前に東阪マルチリージョン切り替えの効率化を行う仕組みを独自実装した経験があります。
それについて具体的な内容は以下の記事をご覧頂ければと思います。

この記事を基に、切り替えに必要となる各種処理に関してARCを用いることでどこまで対応できそうかを整理した結果が以下です。

処理ステップ 従来(独自構成) ARCでの対応 備考
NACLによるネットワーク遮断 手動またはLambdaで制御 × : カスタムLambdaが必要 ARCにはNACL操作機能なし
Aurora Global DBの分離・スタンドアロン化 Lambdaで制御 〇 : AuroraGlobalDatabaseステップで対応可能 switchoverOnly / failover の選択可
Systems Manager Parameter Storeの更新 Lambdaで制御 × : カスタムLambdaが必要 ARCはSSM操作不可
Fargateによるアプリケーション起動 Lambdaで制御 〇 : Lambdaステップで起動可能 起動処理をLambdaに委任
DNSレコードの切替 Route 53 API + Lambda 〇 : Route53HealthCheckステップで一部対応 ヘルスチェックベースの切替は可能
Step Functionsによるステップ管理 ネスト構成で設計 〇 : Workflow + Parallelステップで代替可能 並列・順序制御が可能
手動承認 Step Functions + SNS通知 〇 : ManualApprovalステップで対応可能 IAMロール指定で承認制御可能
実行ログの可視化 CloudWatch Logs + Step Functions 〇 : ARCのExecution画面で統合表示 ステップ単位で状態確認可能

この整理の通り、NACLやParameter Storeの変更を行う場合にはLambdaで実装することが必要にはなりますが多くの処理をARCの中で完結させることが可能となっています。
独自実装した際にはかなり多くの工数をかけていましたので、Region Switchによりその効率化が期待できるのではないかと考えています。

また、Region SwitchはGUIで設定したものをコードとして出力することが可能ですので、類似システムへの横展開も容易であるといううれしいポイントもあります。


まとめ

ARCの導入により、従来の独自構成で必要だった複雑な制御やステップ設計を、より少ない工数で、より安全に、再利用可能な形で構築できるようになりました。特に、Triggerによる自動実行、Workflowによるステップ管理、Plan評価による事前検証などは、運用負荷の軽減に大きく貢献します。

今後は、ARCをベースにしたDR切替の標準化・横展開を進めることで、より多くのシステムに高可用性を提供できると考えています。


参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?