Amazon DynamoDB グローバルテーブル
グローバルテーブルとは
DynamoDB グローバルテーブルは、フルマネージド型、サーバーレス、マルチリージョン、およびマルチアクティブのデータベースです。グローバルテーブルにより、最大 99.999% の可用性、アプリケーションの回復力の向上、およびビジネス継続性の向上を実現できます。グローバルテーブルは選択した AWS リージョンにわたってテーブルを自動的にレプリケートするため、ローカルで高速な読み取りと書き込みのパフォーマンスを実現できます。
アプリケーションの処理が 1 つのリージョンで中断されても、データベースのフェイルオーバーは不要です。なぜなら、グローバルテーブルのマルチアクティブアーキテクチャにより、お客様はどのレプリカテーブルでも読み取りと書き込みを行うことができるからです。また、グローバルテーブルは、マルチリージョンワークロードにおける更新の競合の解決という困難な作業を不要にします。
グローバルテーブルは、マルチリージョンの整合性に関して、強力モードと結果モードの両方をサポートします。マルチリージョンの強力な整合性は、最高レベルのアプリケーションの回復力を提供し、お客様のアプリケーションが常に利用可能な状態を維持し、どのリージョンからでも常に最新のデータを読み取れるようにします。目標復旧時点 (RPO) をゼロに設定してアプリケーションを構築できるようになりました。マルチリージョンの結果整合性を使用すると、単一の AWS アカウント内、または複数の AWS アカウントにまたがって、レプリカを作成できます。
仕組み
DynamoDB グローバルテーブルは複数のレプリカテーブルで構成されています。各レプリカテーブルは異なるリージョンに存在しますが、すべてのレプリカは同じプライマリキースキーマを共有します。データがいずれかのレプリカテーブルに書き込まれると、DynamoDB はそのデータをグローバルテーブル内の他のすべてのレプリカテーブルに自動的にレプリケートします。
例えば、アプリケーションが、米国の東海岸、カナダ、欧州西部の 3 つの地域にまたがる大規模な顧客ベースにサービスを提供しているとします。グローバルテーブルがなければ、各 AWS リージョンにテーブルを作成し、各リージョンの各テーブルにデータ変更をレプリケートするコードを記述する必要があります。
グローバルテーブルを使用すると、各地理的領域に最も近い 3 つのリージョンにレプリカテーブルを含むグローバルテーブルを作成できます。DynamoDB は、任意のレプリカの変更を他のリージョンのレプリカに自動的にレプリケートします。
グローバルテーブルを使用すると、アプリケーションのユーザーは、どこにいても低レイテンシーでデータにアクセスできます。あるリージョンでアプリケーション処理が中断されても、お客様の顧客はその他のリージョンのレプリカテーブルに引き続きアクセスできます。
グローバルテーブルを作成する際に、強力な整合性または結果整合性のいずれかを選択できます。マルチリージョンの強力な整合性用に設定されたグローバルテーブルは、複数のリージョンにわたって強力な整合性のある読み取りを実行する機能を提供します。デフォルト設定は、マルチリージョンの結果整合性です。
マルチリージョンの結果整合性モードを使用して設定されたグローバルテーブルでは、単一の AWS アカウント内、または複数の AWS アカウントにまたがって、レプリカを作成できます。マルチアカウントグローバルテーブルは、複数のアカウントとリージョンでテーブルを自動的にレプリケートし、回復力、セキュリティ、ガバナンスを強化します。マルチアカウント戦略を採用しているお客様、または AWS Organizations を使用してセキュリティ分離を強化し、データ境界ガードレールを強制適用し、ディザスタリカバリを実装し、またはビジネスユニットごとにワークロードを分離しているお客様に最適です。
グローバルテーブルは単一リージョンのテーブルと同じ DynamoDB API を使用するため、簡単に開始できます。グローバルテーブルの使用には初期費用や契約は不要で、使用したリソースについてのみお支払いいただきます。グローバルテーブルは、AWS マネジメントコンソールで、または AWS CLI もしくは AWS CloudFormation を使用して設定できます。また、単一リージョンのテーブルをグローバルテーブルに変換するのも簡単です。
グローバルテーブルの利点
グローバルテーブルは 99.999% の可用性を実現するように設計されています。単一のリージョンが分離または機能低下した場合、アプリケーションは別のリージョンにトラフィックをシフトし、別のレプリカテーブルに対して読み取りと書き込みを実行できます。カスタムビジネスロジックを適用して、リクエストを他のリージョンにリダイレクトするタイミングを決定できます。さらに、マルチリージョンの強力な整合性モードを使用すると、アプリケーションは常にどのリージョンからでも最新のデータを読み取ります。
グローバルテーブルにより、DynamoDB でのマルチアクティブ、マルチリージョンのレプリケーションのデプロイと管理に伴う複雑さと運用上の負担がなくなります。データをレプリケートするリージョンを選択すると、残りの処理は DynamoDB に任せることができます。複数のリージョンにおけるテーブルレプリカ間のレプリケーションのために、結果整合性または強力な整合性のいずれかを選択できます。マルチリージョンの強力な整合性を使用すると、フェイルオーバーオペレーション中のデータ整合性やデータリカバリについて考える必要がなくなります。
また、単一の AWS アカウント内で、または複数の AWS アカウントにまたがって、レプリカを作成することを選択できます。マルチアカウントグローバルテーブルを使用すると、複数のアカウントにまたがってアプリケーションを構築することで、より強力な分離、より強力なセキュリティとガバナンス、向上した運用上の回復力を実現できます。これは、AWS Well-Architected フレームワークに準拠しています。アプリケーションでは、既存の DynamoDB API およびエンドポイントを使用してグローバルテーブルにアクセスできます。
グローバルテーブルは、強力な整合性と結果整合性の両方のために設定できるようになりました。強力な整合性では、強力な整合性のある読み取りが最新の書き込みを反映することが保証されます。一方、結果整合性では、すべてのレプリカが最新の更新を反映するまでに多少時間がかかりますが、その代わりにローカルでの読み取りと書き込みのレイテンシーが低くなります。
マルチリージョンの強力な整合性モードでは、DynamoDB は、任意のリージョンの任意のレプリカに対する書き込みが正常に確認されると、他のすべてのレプリカからの読み取りがすぐに可能になることを保証します。書き込みオペレーションが、別のリージョンで既に変更されている項目を変更しようとすると、その書き込みオペレーションは再試行可能な例外で失敗します。
マルチリージョンの結果整合性モードでは、DynamoDB は、任意のリージョンの任意のレプリカに対する書き込みを、通常 1~2 秒以内に他のすべてのレプリカにレプリケートします。同じ項目が複数のリージョンで変更された場合、DynamoDB は、Last Writer Wins の解決方法を使用することによって競合を解決します。
グローバルテーブルを使用すると、データの読み取りと書き込みをローカルで行うことができるため、グローバルに分散しているアプリケーションについて、それがどのような規模であっても、1 桁ミリ秒のレイテンシーを提供します。これにより、大規模にスケールされたグローバルアプリケーションのパフォーマンスを向上させることができます。