DynamoDBのMRSCが5リージョン追加、15リージョンに拡大
Amazon DynamoDBのマルチリージョン強整合性(MRSC: Multi-Region Strong Consistency)が、カナダ中部、欧州(ストックホルム)、欧州(スペイン)、アジアパシフィック(ムンバイ)、アジアパシフィック(シンガポール)の5リージョンで利用可能になりました。これにより、対応リージョンは合計15に拡大します。
今回の拡大で、15リージョンの中から任意の3リージョンを選び、次のいずれかの構成でグローバルテーブルを構築できます。
- 3つのレプリカリージョン
- 2つのレプリカリージョンと1つのWitnessリージョン
北米、欧州、アジア太平洋をまたぐ構成も選択肢になります。これは単に利用可能なリージョンが増えたという話ではありません。ユーザーに近い場所で強整合性のある読み取りを提供しながら、リージョン障害に備える設計を取りやすくなった点が、アプリケーション設計者にとって重要です。
MRSCは従来の非同期レプリケーションと何が違うのか
DynamoDB Global Tablesでは、複数リージョンにデータを複製して、リージョン障害や地理的な距離による遅延に対応できます。一方、一般的な非同期レプリケーションでは、あるリージョンで書き込まれたデータが別のリージョンへ到達するまでに時間差が生じます。
この時間差が許容できるシステムであれば、非同期レプリケーションは有力な選択肢です。しかし、次のようなデータでは、古い状態を読み取ることが業務上の問題につながります。
- 在庫数や販売可能数
- 注文の処理状態
- ユーザーの契約プランや権限
- 決済後の利用資格やエンタイトルメント
- 複数リージョンから更新されるユーザープロファイル
MRSCでは、複数リージョンにまたがる構成で強整合性を実現し、RPO(Recovery Point Objective)ゼロを目指せます。つまり、障害発生時に「最後に複製されていなかった更新が失われる」という非同期レプリケーション特有のリスクを抑えられます。
ただし、RPOゼロは「すべての処理が常に低遅延で成功する」ことを意味しません。強整合性を維持するためには、リージョン間の通信や構成上の可用性条件が、書き込み処理のレイテンシーや成功可否に影響します。RPOだけでなく、RTO、書き込みレイテンシー、障害時の挙動まで含めて評価する必要があります。
3レプリカ構成とWitness構成の選び方
MRSCでは、3つのレプリカを配置する構成と、2つのレプリカにWitnessリージョンを加える構成を選択できます。
3レプリカ構成
3リージョンすべてにアプリケーションデータを保持するレプリカを配置する構成です。各レプリカリージョンをアプリケーションの読み取り先として活用しやすく、ユーザーに近いエンドポイントへトラフィックを誘導する設計に向いています。
適しているケースは次のとおりです。
- 3つの地域で強整合性のある読み取りを提供したい
- 各地域でリージョン障害時のサービス継続性を高めたい
- データを利用するアプリケーションも複数リージョンに展開する
- 読み取りトラフィックが地理的に広く分散している
一方、レプリカが増えることで、データ配置、監視、アクセス経路、運用手順が複雑になります。利用リージョンが増えるほど、データ転送やキャパシティ、バックアップ、障害対応に関するコストも検討対象になります。
2レプリカ+Witness構成
2つのリージョンにデータレプリカを配置し、3つ目のリージョンをWitnessとして利用する構成です。Witnessは、3つ目のデータ利用拠点として使うのではなく、可用性や整合性を支えるための構成要素として位置づけられます。
この構成は、次のような場合に検討しやすくなります。
- データを実際に利用するリージョンを2つに絞りたい
- 3地域にまたがる障害耐性を確保したい
- すべてのリージョンをアプリケーションの読み取り先にする必要がない
- データレプリカを置く地域を、レイテンシーやデータ配置要件で限定したい
ただし、Witnessリージョンは通常のレプリカリージョンと同じ役割ではありません。ユーザー向けの読み取り先やアプリケーション実行拠点として利用する前提ではなく、どのリージョンにどの機能を配置できるかを設計段階で明確にすることが重要です。
| 観点 | 3レプリカ | 2レプリカ+Witness |
|---|---|---|
| データを保持するリージョン | 3 | 2 |
| 地理的な読み取り拠点 | 3リージョンを活用しやすい | 2リージョンが中心 |
| データ配置の柔軟性 | 高い | データ拠点を絞りやすい |
| 構成上の考慮点 | 3拠点の運用が必要 | Witnessの役割を理解する必要がある |
| 向いている用途 | グローバルな読み取り分散 | 2拠点のサービス運用と障害耐性の両立 |
クロスコンチネント構成で考えるべきこと
北米、欧州、アジア太平洋をまたぐ構成では、世界中のユーザーに近いリージョンを選べる一方、リージョン間距離が大きくなります。設計時には、次の要素を分けて評価する必要があります。
読み取りレイテンシー
ユーザーに近いレプリカリージョンへ読み取りをルーティングできれば、遠いリージョンへのアクセスを減らせます。グローバルなユーザープロファイルや権限情報のように、読み取りが多いデータでは特に効果を期待できます。
ただし、アプリケーションサーバーが常に同じリージョンのDynamoDBエンドポイントへ接続するだけでは、障害時に経路が切り替わりません。DNS、ロードバランサー、ルーティング制御、アプリケーションのリージョン選択ロジックを含めて、通常時と障害時の経路を設計する必要があります。
書き込みレイテンシー
強整合性を維持する構成では、リージョン間の距離が書き込み処理のレイテンシーに影響する可能性があります。特に、ユーザーに最も近いリージョンで受けた書き込みを、遠く離れたリージョンを含む構成で処理する場合、単一リージョン構成と同じ応答時間を期待することはできません。
注文確定や在庫引き当てなど、書き込みの成功が重要な処理では、次の対策が現実的です。
- ユーザーの主要市場に近いリージョンをレプリカとして選ぶ
- 書き込みの受付リージョンを明確にする
- 書き込みタイムアウト時の再試行方針を設計する
- リクエストの二重実行を防ぐ冪等性キーを利用する
- 実際のリージョン間距離で負荷試験を実施する
コストと運用負荷
リージョンをまたぐ構成では、DynamoDBの利用料金だけでなく、データ転送、アプリケーションの複数リージョン展開、監視、ログ集約、障害訓練なども含めて総コストを算出する必要があります。
安価にするためにレプリカを減らすのではなく、どのリージョンでデータを読み書きし、どのリージョンを障害時の継続先とするのかを先に定義することが重要です。Witness構成は、3つのデータ利用拠点が不要なシステムで、耐障害性とデータ配置のバランスを取る候補になります。
ユースケース別に見るMRSCの適用判断
在庫管理
複数地域から同じ在庫を販売する場合、リージョンごとの複製遅延によって在庫数が古いままだと、過剰販売につながる可能性があります。強整合性を必要とする在庫情報はMRSCの候補になります。
ただし、在庫更新の競合を完全に解決するものではありません。複数の注文が同時に同じ商品を更新する場合は、条件付き書き込みや業務ルールを組み合わせ、在庫をマイナスにしない制御をアプリケーション側で設計する必要があります。
注文処理
注文状態が「受付済み」「支払い済み」「出荷済み」のように遷移するシステムでは、異なるリージョンから古い状態を参照すると、二重処理や誤った画面表示につながることがあります。注文状態を強整合性の対象にすることで、状態遷移の確認を複数地域で統一しやすくなります。
一方、注文イベントの配送や検索用の派生データまで同じ整合性要件が必要とは限りません。注文の正本と、分析・通知・検索向けのデータを分離し、MRSCを本当に必要なデータに限定することが、コストと複雑性を抑えるポイントです。
ユーザープロファイルと権限管理
ユーザーが世界中を移動したり、複数地域のサービスへアクセスしたりする場合、直前に更新した契約プランや権限が別リージョンで古いままになると、利用拒否や権限の過剰付与が発生する可能性があります。
このような情報は、読み取り時の強整合性がビジネス要件に直結しやすい領域です。特に、権限剥奪を即時に反映する必要があるシステムでは、非同期レプリケーションの遅延を許容できるかを慎重に判断します。
導入前に整理したい設計項目
MRSCの導入を検討する際は、「グローバル化できるか」ではなく、「どのデータにどの整合性が必要か」を起点にします。
- RPOゼロが本当に必要なデータは何か
- 強整合性が必要なのは読み取りか、書き込みか、状態遷移全体か
- ユーザーやアプリケーションをどのリージョンへ誘導するか
- 3レプリカと2レプリカ+Witnessのどちらが要件に合うか
- リージョン障害時にどの機能を継続し、どの機能を停止するか
- 書き込みタイムアウトや再試行による二重実行をどう防ぐか
- クロスコンチネントのレイテンシーを許容できるか
- データ転送、運用、監視を含む総コストはいくらか
- 障害訓練で実際にリージョン切り替えを検証できるか
まとめ
今回の対応リージョン拡大により、DynamoDB MRSCは北米・欧州・アジア太平洋をまたぐグローバルシステムで、より柔軟に採用できるようになりました。ユーザーに近い場所から強整合性のある読み取りを提供しながら、リージョン障害に備える設計が取りやすくなった点が大きな意味を持ちます。
一方で、MRSCは非同期レプリケーションの単純な上位互換ではありません。RPOゼロを重視するほど、リージョン間レイテンシー、書き込み処理、コスト、障害時の運用設計が重要になります。
まずは在庫、注文状態、権限情報など、整合性要件が明確なデータから対象を絞り、3レプリカとWitness構成を比較するのが現実的です。対応リージョンや構成の詳細は、DynamoDBのグローバルテーブルに関するAWSドキュメントを参照し、負荷試験と障害訓練を含めて採用判断を行うとよいでしょう。
出典: AWS What’s New
