[レポート] ARC209: マルチリージョン構成でのActive-Activeアプリケーションアーキテクチャパターン #reinvent

西澤です。re:Invent初参戦です。本稿では、以下のセッションについてレポートします。

セッション概要

Do you need your applications to extend across multiple regions? Whether for disaster recovery, data sovereignty, data locality, or extremely high availability, many AWS customers choose to deploy services across regions. Join us as we explore how to design and succeed with active-active multi-region architectures.

レポート

  • マルチリージョンの意味するところ
    • 2箇所以上のリージョンを使えばOK?
    • なぜマルチリージョンをやらないのか?
      • レプリケーションラグ
      • テストが大変
      • 複雑だしコストがかかる
    • なぜマルチリージョンにするのか?
      • ビジネス継続性/災害対策
      • 地理的に分散してユーザ向けに
        • レイテンシーの改善
        • 法令遵守、コンプライアンス対応
    • そもそも本当にマルチリージョンにする必要があるのか?

  • マルチリージョンアーキテクチャ
    • アクティブ-アクティブである必要があるのか?
    • ビジネス継続における戦略
      • バックアップ&リストア
      • パイロットライト
      • ウォームスタンバイ
      • アクティブ-アクティブ
    • アーキテクチャパターン
      • 読み込みはローカルに、書き込みはグローバルに
        • もっとも構成しやすい
      • 読み込みはローカルに、書き込みはパーティション化
        • 書き込み先をパーティション化しておけば競合は起こりにくい
      • 読み込みも書き込みもローカルに
        • 書き込み競合が発生する可能性を考慮する必要あり
    • S3利用
      • 自動的に複数AZに補完
      • クロスリージョンレプリケーション
      • 安価なストレージクラスも組み合わせて
    • EBS利用
      • スナップショットを活用
      • 増分スナップショット
      • リージョン間コピー
    • DynamoDB Global Table利用
      • フルマネージドなマルチマスター、マルチリージョンデータベース
    • RDSのクロスリージョンレプリカ利用
      • 障害時にはリードレプリカをマスターに昇格

  • ネットワークアーキテクチャ
    • ネットワーク
      • VPC+ソフトェアVPN
      • リージョン間VPC Peering
        • VPC Peeringは、SPOFなし、帯域も十分で、通信も暗号化される
    • Route 53
      • レイテンシーベースまたはGEOロケーションベースルーティング
      • ヘルスチェック、DNSフェールオーバ
    • NLB
      • リージョン間VPC Peeringと連携
      • Route 53ヘルスチェックも利用可能
  • マルチリージョン構成の運用管理
    • CloudFormationを利用したプロビジョニング
    • AWS Config Ruleで標準化
    • Systems ManagerのAutomationで集中管理
    • Systems ManagerのInventoryで構成管理
    • CloudWatch LogsをLambda連携を利用して1箇所に集める
  • 十分なテストも忘れずに

  • Chick-fil-A(レストランチェーン)の事例

    • 米国内の東西リージョンを利用したマルチリージョン、アクティブ-パッシブ構成
    • Route 53による加重ルーティングポリシー利用
    • 将来的にはAmazon EKSを採用して、コンテナ化を検討中
    • Ambassadorを利用したルーティングも

  • まとめ
    • 本当にマルチリージョンが必要なのか慎重に検討する
    • マルチリージョンでも、バックアップ、パイロットライト、ウォームスタンバイが採用できないか検討する
    • パーティション化等を利用して書き込み競合を避けらる
    • AWSのストレージ機能を活用してデータ同期
    • DynamoDBグローバルテーブル、RDSリードレプリカも活用
    • リージョン間VPC Peeringも活用
    • Route 53の自動フェールオーバも活用、ただし監視もそれぞれ忘れずに
    • CloudFormation、AWS Config、Systems Managerも使って運用管理
    • テストもしっかりやる

まとめ

チャレンジングなマルチリージョン構成ですが、グローバルで利用できるサービス(DynamoDB Global TableやAurora Global Database等)もどんどん追加されているので、事例が増えていくことになりそうです。新しいデザインパターンとして、引き続き、注目して行きたいと思います。