Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
著者: Dylan

AWSマルチリージョンアクティブアクティブアーキテクチャとは

AWSマルチリージョンアクティブアクティブアーキテクチャは、2つ以上のAWSリージョンが同時に本番トラフィックを処理する分散クラウド設計であり、リージョン間の常時レプリケーションとグローバル自動トラフィックルーティングによって支えられています。

いずれかのリージョンでサービス障害が発生しても、他のリージョンが切り替え遅延なくユーザーにサービスを提供し続けます。残りのリージョンはアプリケーションの全負荷を処理できる規模に構成されており、障害発生時の業務継続性を保証します。Route 53のレイテンシベースルーティングまたはGlobal Acceleratorを通じてユーザーは最寄りのリージョンに誘導され、遅延を抑え快適な利用体験を実現します。

本ガイドではAWSマルチリージョン環境の構築手順を解説し、エンドツーエンドのデプロイ、データレイヤー設計、競合解消、監視、コスト損失につながるミスの回避方法を学べます。

アクティブアクティブアーキテクチャを採用すべき場面

データレプリケーションの費用が発生するため、マルチリージョンAWS構成のコストは単一リージョンの2~3倍になります。実装に着手する前に、自身のシステムが本構成を必要とするか下記のケースを確認しましょう。

  • 厳格なRTO/RPO要件:秒・分単位のデータ損失許容値、限りなくゼロに近い停止時間を求めるシステムにはアクティブアクティブ構成が適しています。
  • 世界中に分散するユーザー層:複数大陸からアクセスするユーザーを最寄りリージョンに誘導することでパフォーマンスが大幅に向上します。
  • ミッションクリティカルなサービス:認証システム、決済処理、リアルタイムゲームなど、高可用性が必須の業務システム。
  • データ主権コンプライアンス:世界中にサービスを提供しつつ、データを特定地域に保管する業界規制への対応。

課題:リージョン間のデータ整合性

インフラの準備は容易です。AWSにはRoute 53、Global Accelerator、CloudFrontが標準で用意されています。しかしマルチリージョンアクティブアクティブ構成ではCAP定理と正面から向き合う必要があります。リージョン間のネットワーク分断が発生した際、以下のいずれかを選択することになります。

  • 整合性優先:データの正確性を保証する代わりに、ネットワーク障害時にシステム停止のリスクを許容
  • 可用性優先:リクエスト処理を継続する代わりに、古いデータや競合データがユーザーに表示される可能性を許容

AWSにマルチリージョンアクティブアクティブアーキテクチャを構成する手順

以下の手順に沿ってAWS上にマルチリージョンアクティブアクティブ構成を作成できます。

手順1 グローバルトラフィックルーティング

ユーザーを稼働中の最寄りリージョンに誘導する必要があり、AWSには相補的な3つの手法が用意されています。

►Amazon Route 53によるDNSベースルーティング

Route 53をエントリーポイントとし、レイテンシベースルーティングでユーザーを最寄りリージョンに振り分けます。各リージョンのエンドポイントにヘルスチェックを設定し、リージョン障害時は自動的にトラフィックの振り分けを停止します。

主な設定項目

1. 各リージョンのALBに対し、確認間隔10秒、障害閾値2回のヘルスチェックを作成

2. DNSのTTLを60秒に短く設定し、フェイルオーバーを高速化

3. EvaluateTargetHealthをtrueに設定し、ALBの稼働状態をRoute 53が反映

# リージョンALBのヘルスチェック作成コマンド
aws route53 create-health-check \
  --caller-reference "us-east-1-health-$(date +%s)" \
  --health-check-config '{
    "Type": "HTTPS",
    "FullyQualifiedDomainName": "us-east-1-alb.example.com",
    "Port": 443,
    "ResourcePath": "/health",
    "RequestInterval": 10,
    "FailureThreshold": 2
  }'

►AWS Global Acceleratorによるトラフィック高速化

Global Acceleratorは固定のエニーキャストIPアドレスを提供し、稼働中の最寄りリージョンエンドポイントにトラフィックを誘導します。DNSルーティングと異なりネットワーク層で動作し、AWS専用バックボーンを経由するため、インターネット経由と比較しTCP/UDPの遅延を最大60%削減可能です。

各リスナーに複数のエンドポイントグループ(1リージョンに1グループ)を登録し、稼働中の最寄りグループにトラフィックを分配します。トラフィックダイヤルで各リージョンへの流量割合を調整でき、段階的なフェイルオーバーやカナリーデプロイに活用できます。

►Amazon CloudFrontによるエッジキャッシュ

コンテンツ量の多いアプリケーションにはCloudFrontが適しており、世界のエッジロケーションに静的アセットをキャッシュし、オリジンサーバーの負荷を軽減してユーザー体験を改善します。Route 53のレイテンシルーティングと組み合わせることで最適なパフォーマンスを実現します。

  • Global Accelerator:TCP/UDP通信、APIエンドポイント、ゲーム、IoTに最適
  • CloudFront:HTTP/HTTPSコンテンツ配信、静的ファイル、動画ストリーミングに最適

手順2 データレイヤー(最も難易度の高い工程)

許容可能な整合性保証のもと、マルチリージョンでの書き込みに対応するデータストアが必要です。代表的な4つの選択肢を紹介します。

►選択肢1:DynamoDBグローバルテーブル(完全マルチマスター)

DynamoDBグローバルテーブルはAWSリージョン間の完全マネージドなアクティブアクティブレプリケーション機能です。いずれのレプリカテーブルにも書き込み可能で、変更内容は自動的に全リージョンに伝播されます。内部的にDynamoDBストリームを利用してリージョン間のデータ複製を実行します。

数万事業者が結果整合性モデルのグローバルテーブルを活用していますが、決済システムや金融サービスといった重要業務では、リージョン全体の障害発生時でもRPOをゼロに抑える要件が存在します。

マルチリージョン強整合性(MRSC):2025年6月にDynamoDBグローバルテーブルに追加された機能で、高可用マルチリージョンシステム向けにRPOゼロを実現します。指定した複数AWSリージョンにテーブルを自動複製し、高速かつ強整合な読み書き処理を提供します。

MRSC対応リージョン:米東(バージニア北部、オハイオ)、米西(オレゴン)、欧州(アイルランド、ロンドン、パリ、フランクフルト)、アジア太平洋(東京、ソウル、大阪)

MRSCのアーキテクチャ要件:クォーラム維持のため3つのAWSリージョンが必須で、2種類の構成方法があります。

(1) 完全レプリカを3箇所配置

(2) 完全レプリカ2箇所+ウィットネスリージョン

ウィットネスリージョンには変更履歴データのみ複製され、テーブル全体を保持しないため、ストレージコストを抑えつつ可用性要件を満たせます。

競合解消:結果整合性のグローバルテーブルはタイムスタンプによる最終書き込み優先(LWW)方式を採用。MRSCを有効にすると強整合性により書き込み競合自体が発生しません。

コスト:MRSCグローバルテーブルは既存のグローバルテーブル料金体系が適用されます。中規模負荷のアクティブアクティブ構成の場合、グローバルテーブル分の費用は月額約18ドル程度です。

►選択肢2:Auroraグローバルデータベース(リレーショナルワークロード向け)

Auroraグローバルデータベースは最大6つのAWSリージョンにAuroraクラスターを複製します。1つのリージョンがプライマリ(読み書き両方可能)、残りのセカンダリリージョンは読み取り専用となります。

制限事項:複数ライターノードに対応しておらず、全ての書き込みはプライマリリージョンに送信する必要があります。真のアクティブアクティブ書き込みを実現するには、セカンダリからプライマリへの書き込み転送を実装する必要があり、プライマリから遠いリージョンの書き込み処理に遅延が発生します。

レプリケーション遅延:リージョン間複製の遅延は通常1秒未満に抑えられるため、各地域から高速なローカル読み取りが必要な読み込み偏重業務に適しています。

コスト:中規模アプリケーションの場合、AuroraグローバルDBの複製にかかる追加費用は月額約85~100ドルです。

►選択肢3:Aurora DSQL(完全アクティブアクティブSQL)

Amazon Aurora DSQLはサーバーレス分散SQLデータベース(PostgreSQL互換)で、事実上無限のスケーリング、最高水準の可用性、インフラ管理の完全廃止を実現します。主な特徴は以下の通りです。

  • 完全なスケールトゥゼロ:アイドル時はコンピューティング費用が発生せず、ストレージ料金のみ課金
  • マルチリージョンアクティブアクティブ:どのリージョンからも読み書き可能、複製遅延ゼロ
  • 自動シャーディング:手動によるパーティショニング、コネクションプール、読み取りレプリカの管理が不要
  • 楽観的同時実行制御:事前ロックを回避し遅延を低減。コミット時まで他リージョンとの通信を行わないため、処理速度が大幅に向上

Aurora DSQLによるマルチリージョン強整合性の仕組み:Aurora DSQLマルチリージョンクラスターは同期型リージョン間レプリケーションを活用し、リージョン(およびウィットネスリージョン)間の強整合性を維持します。いずれのリージョンのエンドポイントからも読み書きを受け付け、リージョンAの書き込みコミット内容はリージョンBの読み取りから即時参照可能です。

最大のメリット:アプリケーション側はマルチリージョンアクティブアクティブ構成を意識する必要がなく、他リージョンとの調整・メッセージング処理を実装する必要もありません。全てDSQL側で処理されるため、アプリ設計の負担が大幅に軽減されます。

可用性SLA:単一リージョン99.99%、マルチリージョン99.999%

マルチリージョンDSQLのエンドポイントルーティング:Aurora DSQLマルチリージョンクラスターを利用するアプリは、Route 53などDNSベースのルーティング機構を導入しリージョン間のトラフィック自動切り替えを実装する必要があります。推奨運用として、アプリケーション層にルーティングロジックを実装し、リージョンフェイルオーバーを統合的に管理します。

►選択肢4:S3クロスリージョンレプリケーション(オブジェクトストレージ向け)

ユーザーアップロードファイルや静的アセットにはS3クロスリージョンレプリケーション(CRR)を有効化します。ソースバケットにアップロードされたオブジェクトは自動的に他リージョンの宛先バケットに複製されます。S3マルチリージョンアクセスポイント(MRAP)を活用すると、複製済みデータへの跨リージョンアクセスが簡素化されます。

►選択肢5:ElastiCache(キャッシュ無効化戦略)

各リージョンに独立したElastiCacheクラスターを配置します。課題は跨リージョンのキャッシュ同期で、1つのリージョンでデータが更新された際、他リージョンのキャッシュエントリを無効化する仕組みが必要です。代表的な実装手法は以下の2通りです。

  • DynamoDBストリームをトリガーに跨リージョンの無効化イベントを発行
  • SNSクロスリージョントピックを利用し、無効化メッセージを一斉配信

データレイヤー比較表

サービス アクティブアクティブ書き込み対応 整合性モデル RPO 可用性SLA 最適なワークロード
DynamoDBグローバルテーブル(MRSC) 対応 強整合 ゼロ 99.999% NoSQL、キーバリュー、RPOゼロ要件
Auroraグローバルデータベース 非対応(書き込み転送が必要) 強整合 1秒未満 99.99% リレーショナル、読み込み偏重業務
Aurora DSQL 対応 強整合(ACID準拠) ゼロ 99.999% マルチリージョン書き込みを必要とするリレーショナル
S3 CRR 該当なし 結果整合 数分~数時間 99.99% オブジェクトストレージ、ユーザーアップロード

手順3 アプリケーションレイヤー(IaCによる同一スタッフのデプロイ)

CloudFormationまたはTerraformを使用し、全リージョンに同一のインフラストラクチャをデプロイします。フェイルオーバー発生時、単独のリージョンで全グローバルトラフィックを処理できる規模に構成する必要があります。

# 全リージョンにデプロイするCloudFormationテンプレート
AWSTemplateFormatVersion: '2010-09-09'
Description: アクティブアクティブアプリケーションスタック
Parameters:
  Region: {Type: String, AllowedValues: [us-east-1, eu-west-1]}
Resources:
  AppAutoScalingGroup:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
      MinSize: 2, MaxSize:10, DesiredCapacity:3
      VPCZoneIdentifier: [!Ref PrivateSubnet1, !Ref PrivateSubnet2]
      LaunchTemplate: {LaunchTemplateId: !Ref AppLaunchTemplate, Version: !GetAtt AppLaunchTemplate.LatestVersionNumber}
      TargetGroupARNs: [!Ref AppTargetGroup]

  AppLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateData:
        ImageId: !FindInMap [RegionMap, !Ref "AWS::Region", AMI]
        InstanceType: c5.xlarge
        UserData:
          Fn::Base64: !Sub |
            #!/bin/bash
            aws s3 cp s3://deploy-bucket/app-latest.tar.gz /opt/app/
            cd /opt/app && tar xzf app-latest.tar.gz
            export AWS_REGION=${AWS::Region}
            export APP_ROLE=active
            systemctl start myapp

手順4 跨リージョンセッション管理

ユーザーがリクエストごとにアクセス先リージョンを切り替える可能性があるため、セッション情報をグローバルに共有する必要があります。TTL24時間のDynamoDBグローバルテーブルを活用します。

import boto3, uuid, time
dynamodb = boto3.resource('dynamodb')
sessions_table = dynamodb.Table('global-sessions')

def create_session(user_id):
    session_id = str(uuid.uuid4())
    sessions_table.put_item(Item={
        'session_id': session_id, 'user_id': user_id,
        'created_at': int(time.time()), 'ttl': int(time.time()) + 86400
    })
    return session_id

def get_session(session_id):
    response = sessions_table.get_item(Key={'session_id': session_id}, ConsistentRead=False)
    return response.get('Item')

手順5 競合解消戦略

複数リージョンから同時に書き込みが発生するとデータ競合が生じます。実績のある3つの実装パターンを紹介します。

1. 最終書き込み優先(LWW):DynamoDBグローバルテーブルの標準方式

2. リージョンアフィニティ:各ユーザーに固定のホームリージョンを割り当て、書き込みはホーム、読み取りは任意リージョンで実行

3. CRDT(衝突フリー複製データ型):複数の更新内容を矛盾なく統合可能

アクティブアクティブレプリケーションを簡単に実装する代替ソリューション

DynamoDBグローバルテーブルやAurora DSQLといったAWSネイティブサービスはAWS環境内で優れたアクティブアクティブ機能を提供しますが、多くの企業ではAWS標準機能だけでは要件を満たせないケースが存在します。

運用負荷を抑えたい、または異種データベース間のレプリケーションが必要な場合は、Info2Softのi2Streamが有力な代替手段となります。

i2Streamはエンタープライズ向けデータベースレプリケーションソフトウェアで、同種・異種データベースに対応したリアルタイムデータ同期、災害復旧、マイグレーション、データ連携機能を提供します。AWSネイティブサービスがAWS環境内に限定されるのに対し、i2Streamはオンプレミス、AWS、他クラウドプロバイダーなど多様な環境に対応するよう設計されています。

i2Streamの主な機能

  • 異種データベースレプリケーション:Oracle、SQL Server、PostgreSQL、MySQL、DB2など40種類以上のデータベース・ビッグデータプラットフォーム間の複製をサポート。OracleからSQL Serverへの移行など異種DB間のマイグレーションに対応
  • エージェントレス・システム負荷ゼロアーキテクチャ:本番DBサーバーにソフトウェアをインストールする必要がなく、業務システムの処理速度を低下させない
  • 統合管理画面と簡単デプロイ:専用管理プラットフォーム(i2UP)により、複雑なVPN/Direct Connectや独自のレプリケーションロジックなしで導入可能
  • DDL/DML統一同期:スキーマ変更とデータ変更を同時に複製し、送信元と送信先の完全な整合性を維持
60日間無料トライアル

まとめ

AWSマルチリージョンアクティブアクティブアーキテクチャはAWSが提供する最高水準の耐障害性を実現します。キーバリュー型ワークロードにはDynamoDBグローバルテーブル、リレーショナルデータにはAuroraグローバルデータベースを起点に構築しましょう。Route 53で低遅延ルーティングを実装し、IaCで各リージョンに同一アプリスタックをデプロイ、ステートレスなアプリケーションを設計し、堅牢な競合解消ロジックを導入します。

また別の選択肢としてInfo2Softのi2Streamを活用してアクティブアクティブ構成を構築することもできます。リージョン間のデータ複製を簡単に実装でき、異種データベースプラットフォーム間のデータ同期にも対応します。

概要は準備中です

関連記事

AWS RDS自動フェイルオーバーと仕組み
データベースの障害は瞬時にアプリケーション全体を停止させます。AWS RDS自動フェイルオーバーはこの事態を回避するための機能ですが、正しい動作原理と設定方法を把握して初めて効果を発揮します。本ガイドではフェイルオーバーの仕組みを解説し、リードレプリカと比較した上で、マルチAZ構成を最大限活用する手法を紹介します。
記事を読む
SQL Server自動フェイルオーバー:仕組みと構築手順ガイド
Microsoft SQL Serverの自動フェイルオーバーは、プライマリサーバーに障害が発生した際にセカンダリレプリカへ自動切り替えを行い、システムの可用性を維持する機能です。本ガイドではその動作原理と段階的な設定方法を解説し、データベース障害時のサービス停止時間を最小限に抑える手法を紹介します。
記事を読む
SQL Serverアクティブ・アクティブクラスターの段階的構築手順
SQL Serverアクティブ・アクティブクラスターは事業継続性を確保するための高可用性戦略です。本ガイドでは、SQL Serverアクティブ・アクティブクラスターの段階的な構築手順を解説し、SQL Server向けのより優れたアクティブ・アクティブフェイルオーバーソリューションを紹介します。
記事を読む
MySQL アクティブ・アクティブレプリケーションの最適ソリューション
アクティブ・アクティブレプリケーションは、複数のシステムを並行稼働させリアルタイム同期を維持することで、サービスの継続稼働を保証します。本手法がどのように業務継続性を強化するか、そして i2Stream が現代企業向けに、より安定性と拡張性に優れたデュアルアクティブソリューションを提供する理由をご紹介します。
記事を読む
ビジネスデータのセキュリティ強化を始めませんか?

· 世界中のエンタープライズおよびミッドマーケットのお客様

· トライアル期間中、サポートチームが対応します

· 60日間の無料トライアルまたはデモで、Info2Softが企業データをどのように保護するかをご確認ください。

フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}