【DynamoDBの役割(耐障害性と高可用性)】
目次
🔍 1. 結論
💎 一言でいうと Amazon DynamoDB は、デフォルトで 3つのアベイラビリティゾーン(AZ)にデータを自動複製(レプリケーション)する ため、最初から極めて高い弾力性と高可用性を備えたサーバーレスNoSQLデータベースです。
- EC2のセッション状態をDynamoDBに逃がすことで、EC2側の弾力性(ステートレス設計)を助ける。
- リージョンレベルの災害(DR)には グローバルテーブル(Global Tables) を使用して別リージョンと双方向同期(アクティブ – アクティブ)させる。
📈 2. SAAで出やすいポイント
- マルチAZがデフォルト: RDSのように自分で「Multi-AZ」を設定しなくても、DynamoDBはデータを書き込んだ瞬間に自動的に3つのAZへデータを分散保存し、AZ障害に耐えます。
- ステートレス設計の要: Auto Scalingで増減するEC2インスタンスがユーザーのログイン情報(セッション)を保持しないように、セッション情報の保存先としてDynamoDB(またはElastiCache)がよく利用されます。
- DynamoDB グローバルテーブル (Global Tables): 複数のAWSリージョンにまたがってデータを自動的に同期する機能。「アクティブ – アクティブ」(どちらのリージョンからでも読み書き可能)なマルチリージョンアーキテクチャを構築する際の正解になります。
🗝 3. キーワードでの判断
| 問題文のキーワード | 疑う機能・構成 |
|---|---|
| 🌍 「複数リージョンで読み書き可能なDB」「マルチリージョンのアクティブ-アクティブ構成」 | DynamoDB グローバルテーブル (Global Tables) |
| 🔄 「Auto Scaling環境のEC2でセッション情報を共有・維持したい」 | DynamoDB にセッションを保存する |
| 📈 「トラフィックが予測不可能なため、自動でスケールするDBが欲しい」 | DynamoDB (オンデマンドキャパシティ) |
⚠️ 4. ひっかけポイント
🚫 よくある誤答パターン – 「RDSでマルチリージョンのアクティブ-アクティブ構成を作る」 → RDS(や通常のAurora)のマルチリージョン構成は基本的に「アクティブ – スタンバイ(リードレプリカ)」です。読み書き(Read/Write)の両方を複数リージョンで同時に行いたい場合は DynamoDB グローバルテーブル が適しています。 – 「EC2のローカルディスクにセッションを保存して可用性を高める」 → アンチパターンです。EC2が死ぬとセッションが切れてユーザーがログアウトされてしまいます。
💡 5. 覚え方
🧠 暗記ショートカット – DynamoDB グローバルテーブル = 「どこでもドア付きのノート」。 – 東京のノートに書き込んだ内容が、1秒以内にアメリカのノートにも書き込まれ、アメリカの人も同じノートに書き込みができる(アクティブ-アクティブ)。
📚 6. 関連サービス
| アイコン | サービス名 | DynamoDB(弾力性)との関連 |
|---|---|---|
| 💻 | Amazon EC2 | DynamoDBをセッションストアとして使うことで、安全にスケールイン/アウトできる |
| 🌐 | Route 53 | グローバルテーブルと組み合わせ、レイテンシールーティングで最寄りのDBにアクセスさせる |
| ⚡ | Amazon ElastiCache | 同じくセッション保存に使えるが、永続性(データが消えないこと)を重視するならDynamoDBを選ぶ |
🗒️ 7. Obsidian管理メモ
- 見返すタイミング: マルチリージョンアーキテクチャ(DR設計)、ステートレス設計の学習時
- 関連ノート候補:
AWS_SAA_Active_Active_Architecture,AWS_SAA_Stateless
8. HTMLファイル名:
AWS_弾力性設計_DynamoDB.html