[アップデート] Amazon DynamoDB Global Table がマルチリージョンの強い整合性の一般提供を開始しました
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
先日、Amazon DynamoDB Global Table がマルチリージョンの強い整合性の一般提供を開始しました。
re:Invent 2024 でプレビュー登場してから、7 ヶ月ほどで一般提供されましたね。
Amazon DynamoDB Global Table の整合性
結果整合性
まず初めに Amazon DynamoDB Global Table の結果整合性 (MREC) についてです。
ドキュメントを確認すると、通常 1 秒以内に他のすべてのレプリカに非同期で複製され、データが反映されるようです。
DMulti-Region eventual consistency (MREC) is the default consistency mode for global tables. Item changes in an MREC global table replica are asynchronously replicated to all other replicas, typically within a second or less. In the unlikely event a replica in a MREC global table becomes isolated or impaired, any data not yet replicated to other Regions will be replicated when the replica becomes healthy.
まずは、これよりもシビアに整合性がマルチリージョンアーキテクチャで必要になった場合に、利用するものだと認識しておきましょう。
強い整合性
続いて強い整合性 (MRSC) についてです。こちらは、書き込み操作が成功レスポンスを返す前に、少なくとも 1 つの他のリージョンに同期的にレプリケートされる仕組みのようです。
当たり前ですが、読み取り操作では常にアイテムの最新バージョンが返され、条件付き書き込みでは常にアイテムの最新バージョンに対して条件式が評価されます。
You can configure multi-Region strong consistency (MRSC) mode when you create a global table. Item changes in an MRSC global table replica are synchronously replicated to at least one other Region before the write operation returns a successful response.
Strongly consistent read operations on any MRSC replica always return the latest version of an item. Conditional writes always evaluate the condition expression against the latest version of an item.
アーキテクチャ
Global Table を作成する際に、整合性オプションを選択するのですが、アーキテクチャもオプションによって異なります。
結果整合性
結果整合性の場合、グローバルテーブルにレプリカを追加することで、でき上がりです。リージョンの最低稼働台数もなく、任意のタイミングでレプリカを増減できます。
強い整合性
強い整合性の場合、3 つのリージョンにデプロイする必要があります。これらのリージョンは事前に組み合わせが決まっており、任意のリージョンを指定できないです。
- 米国: バージニア北部、オハイオ、オレゴン
- EU: アイルランド、ロンドン、パリ、フランクフルト
- アジアパシフィック: 東京、ソウル、大阪
これらの組み合わせの中で、Replica リージョン2、Witness(監視)リージョン1
または、Replica リージョン3
の構成を選択できます。
Witness は書き込み/読み込み処理はできないものの、可用性を保つためにデータを保持しているリージョンになります。
制約事項
以下の制約があります。利用がないか事前に確認しておきましょう。
- Time to Live (TTL) はサポートされていません
- ローカルセカンダリインデックス (LSI) はサポートされません
プレビュー提供時との違い
一般提供によって利用可能なリージョンが増えました。東京/大阪の 2 リージョンサポートはありがたいですね。
- バージニア北部
- オハイオ
- オレゴン
- 東京 (NEW!)
- ソウル (NEW!)
- 大阪 (NEW!)
- フランクフルト (NEW!)
- アイルランド (NEW!)
- ロンドン (NEW!)
- パリ (NEW!)
以下の AWS リージョンで利用できます: 米国東部 (オハイオ、バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (大阪、ソウル、東京)、ヨーロッパ (フランクフルト、アイルランド、ロンドン、パリ)
やってみた
それでは実際に Amazon DynamoDB Global Table の強い整合性 (MRSC) を試してみます。
プレビュー時同様、Item があるテーブルの場合、レプリカの追加は難しかったです。
Regional table cannot contain data when creating a global table with MultiRegionConsistency set to STRONG.
Item がないテーブルを用意しました。東京リージョンを選んだのですが、ドキュメントの通り次のようにリージョンはどちらかを選択するようになっていました。
今回はレプリカを大阪リージョン、Witness をソウルリージョンとしました。
グローンバルテーブルの作成が完了すると、次のような形で表示されました。
大阪とソウルからの見栄えです。ソウルに関してはグローバルテーブルがユーザーから見えない作りになっていました。
大阪
ソウル
プレビュー時はオンになっていた DynamoDB ストリームですが、執筆時ではオフに変更されていました。別の仕組みで送られているようです。
テーブルの削除
テーブルの削除を行ってみます。グローバルテーブルの作成元かどうかで挙動が変わったのですが、レプリケート先(大阪リージョン)から削除を試みた場合、24時間経過していないため削除できない挙動となりました。
レプリケート元(東京リージョン)から削除を試みたところ、問題なく削除できていました。
まとめ
以上、「Amazon DynamoDB Global Table がマルチリージョンの強い整合性の一般提供を開始しました。」でした。
マルチリージョンかつ RPO が 0 は、なかなか難易度が高めなアーキテクチャですね。DyanmoDB がその選択肢にはいり、解決できるとすごい世界だなと思いました。
クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!