こんにちは。 ディベロップメントサービス1課の山本です。
最近、AWS Certified Solutions Architect - Associate(以下、SAA)に合格しました。
問題文が長いものが多く、集中力との戦いでした。
AWS Certified Solutions Architect – Associate 認定
今回はSAAの問題集を解いていた中でよく出ていた
Amazon DynamoDBのグローバルテーブルを利用してみようと思います。
はじめに
Amazon DynamoDBのグローバルテーブルの説明をします。 大きな特徴は下記2点です。
- 複数リージョンにレプリカテーブルを作成。あるレプリカテーブルに変更が発生した場合、1秒以内に他のレプリカテーブルにレプリケートされる。
- あるレプリカテーブルで障害が発生した際に、別リージョンのレプリカテーブルへと自動リダイレクトされる。
キーワードは
・グローバルでの低レイテンシーの利用
・マルチリージョンでの可用性向上
ですね。
こちらの機能はZoomのバックエンドでも利用されており、世界規模で展開しているアプリケーションで有用な機能となっております。
公式のドキュメントにも記載されてますので、合わせてご確認ください。
構成
東京リージョン(ap-northeast-1)とバージニア北部リージョン(us-east-1)にレプリカテーブルを持つグローバルテーブルを構築します。 その後、クライアントとなるPCからAWS CLIを利用してデータのレプリケートを確認します。
構築方法
1. テーブル作成
まずレプリケートさせるテーブルをマネジメントコンソールから構築します。
2. グローバルテーブルの有効化
作成したテーブルをレプリケートする、レプリカテーブルを作成します。
テーブル詳細画面からグローバルテーブルのタブを開き、レプリカの作成
を選択。
レプリカテーブルを構築するリージョンを設定し、レプリカの作成
を選択。
※DynamoDB Streamsでキャプチャした変更ログを利用してレプリケートされるので、自動で有効になります。この内容もSAAの問題集で何度か見ました。
作成には数分間かかります。
完了したらレプリカ一覧にレプリケートされているテーブルとして表示されます。
レプリケートの確認
テーブルのレプリケート設定が完了したので、実際にデータを送信して確認します。
1. サンプルデータ送信(東京リージョン)
東京リージョンのテーブルに対して、任意のデータを設定します。
以下のAWS CLIのコマンドを利用します。
【東京リージョンでデータ設定】
aws dynamodb put-item \ --table-name sample-table \ --item '{"sample-id": {"N" : "1"}, "sample-str": {"S" : "sample"}}' \ --region ap-northeast-1 \ --profile {利用プロファイル名}
2. データ取得(東京リージョン)
きちんと東京リージョンのテーブルに対してデータが設定できたかscanコマンドで確認します。
以下のAWS CLIのコマンドを利用します。
aws dynamodb scan \ --table-name sample-table \ --region ap-northeast-1 \ --profile {利用プロファイル名}
結果は以下の通りで、きちんと保存されている事を確認できました。
3. データ取得(バージニア北部リージョン)
今回の目的でもある、バージニア北部リージョンのテーブルに対してデータがレプリケートできたかscanコマンドで確認します。
以下のAWS CLIのコマンドを利用します。
aws dynamodb scan \ --table-name sample-table \ --region us-east-1 \ --profile {利用プロファイル名}
同じデータが返却され、無事レプリケートが成功していることが確認できました。
レイテンシーの確認
各リージョンのDynamoDBエンドポイントとのレイテンシーをpingコマンドを使って測定し、timeコマンドを使ってスキャン返却にかかる時間を測定しました。
項目 | 東京 | バージニア北部 |
---|---|---|
スキャン返却時間 | 0.32s | 0.36s |
ping | 19ms | 177ms |
位置的に遠いリージョンのDynamoDBにアクセスする際は、レイテンシーによる遅延が発生していることがわかります。
グローバルテーブルを利用すれば、東京で利用されるアプリケーションの場合は東京リージョンへ、北米で利用されるアプリケーションの場合はバージニア北部リージョンへと通信させることで、低レイテンシーを実現できます。
さいごに
参考書やAWSのドキュメントを読むだけでは、中々イメージするのが難しい機能が多々あると思います。そういった機能をブログで紹介して、理解の手助けになればと思います。
本ブログがどなかたのお役に立てれば幸いです。