
【VPC内リージョンサービス】
DocumentDB は、MongoDB互換APIを備えたスケーラブルなマネージドドキュメントデータベースです。
JSON / BSON(Binary JSON) 形式のデータを扱う スキーマレス 構造を採用しており、柔軟なデータモデルを簡単に運用できます。
内部構成は クラスター / レプリカセット によって高可用性を確保し、ストレージとコンピューティングの分離 によりスケーラブルで耐障害性の高いアーキテクチャを実現しています。自動スケーリング / 高速キャッシュ / 並列クエリ に対応しており、負荷に応じてスムーズにパフォーマンスを最適化します。
データ保護の面では、自動バックアップ / スナップショット / PITR(Point-In-Time Recovery) によって、任意の時点への復旧が可能です。また、マルチAZ構成 による高可用性や、監視 / パッチ適用のマネージド化 により、運用負担を大幅に軽減できます。
ネットワークとセキュリティ面では、VPC内配置、KMS暗号化、TLS通信 に対応しており、安全なデータ運用を実現します。
多読負荷がある場合は、リードレプリカ により水平スケーリングすることで、読み取り性能を高めることができます。
Lambda / Glue / DMS / Kinesis / QuickSight などのAWSサービスと連携し、ETL処理やリアルタイム分析、可視化にも対応します。特に、Database Migration Service(DMS) を使うことで、既存のMongoDBアプリケーション を最小限のドライバ変更で DocumentDB へ容易に移行できます。
重要用語
ユースケース
| JSONドキュメント指向アプリケーション | MongoDB互換APIを利用して、柔軟なスキーマを持つJSONドキュメントを保存するWebアプリやモバイルアプリのバックエンドDBとして利用する。 |
| コンテンツ管理システムのデータストア | 記事やページ情報など、構造が頻繁に変わるコンテンツデータをドキュメントとして保存し、アプリ側から柔軟に検索・取得する。 |
| サーバーログやイベントデータの保存 | アプリケーションログやイベントデータをJSON形式で蓄積し、柔軟なクエリや分析用の抽出を行いやすくする。 |
ベストプラクティス
| マルチAZクラスター構成 | 本番環境ではレプリカを持つマルチAZで運用する。 |
| バックアップとスナップショット管理 | 自動バックアップを有効化し、リテンション期間を設定する。 |
| インデックス最適化 | クエリパターンに応じてインデックスを設計し、性能を維持する。 |
高可用性・バックアップ・リトライ
| 高可用性・バックアップ・リトライ設計のポイント |
|---|
| 【デフォルト】AWS内部で冗長化 ・ストレージレイヤーの6重化(すべてのデータを3つのAZに6つのコピーとして自動複製) ・自動データ修復(ディスクやノードの障害を検知し自動修復) ・クラスターボリュームの自動管理(10GBずつ自動拡張 最大128TB) ・書き込みの同期レプリケーション(4/6の書き込み確認で成功とする仕組み) ・読み取りの冗長性(6コピー中3/6の読み取り確認で成功) ・自動バックアップ(ストレージスナップショットを自動作成) ・フェイルオーバー機能(プライマリインスタンス障害時にレプリカを自動昇格) ・クラスターエンドポイントの自動切り替え(フェイルオーバー時にDNS名を自動更新) |
| 【リードレプリカ】(推奨:複数AZに最低1つ以上のリードレプリカを配置する) |
| 【DBサブネットグループ】(最低2つ以上の異なるAZにサブネットを指定) |
| 【フェイルオーバー優先度(Priority)】の設定 |
| 【グローバルクラスター】(ディザスタリカバリ要件がある場合) |
| 【自動バックアップ】バックアップ保持期間 1~35 日 デフォルト 1 日 クラスタストレージを継続的に S3 にバックアップ PITR:継続的バックアップ+トランザクションログにより、保持期間内の任意時点に復元可能 |
| 【手動スナップショット】任意のタイミングで取得可能 保持期限は無制限(ユーザーが削除するまで保持) クラスタストレージ全体を S3 ベースの永続ストレージに保存 スナップショットからいつでもクラスタを復元可能(スナップショット時点での復元) |
セキュリティ
| 関連サービス | 設定内容 |
|---|---|
| Subnet(公開リソースと内部リソースの分離) | 【DBサーバ】 Privateの専用SubnetでマルチAZ構成 |
| SG(リソース単位のアクセス制御) | 【DBサーバ】 インバウンド:27017(MongoDB) アウトバウンド:すべて許可 |
| KMS(データの暗号化と鍵の安全管理) | 【ストレージとバックアップの暗号化が必要】 独自KMSキーを使うことを推奨(鍵操作、監査) |
| Secrets Manager(機密情報の安全管理) | シークレット(秘密情報)の作成が推奨 MongoDB互換接続の認証情報 |
| SSM Parameter Store(設定情報の一元管理) | - |
| CloudTrail(操作履歴の記録・監査・追跡) | 【自動記録】 作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI) データ操作は追跡できない(データプレーンAPI) |
| Config(リソースの構成状態・設定変更を記録) | 【Configが有効な場合】 クラスター設定の変更履歴・暗号化/バックアップ/ネットワーク準拠評価 |
| GuardDuty(脅威を自動検出) | 【GuardDutyが有効な場合】 VPC経由のネットワーク/DNS異常通信検知 |
ログ・監視
| ログ出力先 | ログの種類 |
|---|---|
| CloudWatch Logs | データベースログ |
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
制限値(固定値/ハードリミット/ソフトリミット)
| 固定値 | 制限値 |
|---|---|
| スナップショット保持期間 | 1-35日 |
| ハードリミット | 制限値 |
|---|---|
| クラスターで使用できるストレージ | 最大128 TiB |
| リードレプリカ数 | 15 |
| ソフトリミット | 制限値 |
|---|---|
| クラスター数/リージョン | 40 |
| インスタンス数/クラスター | 16 |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| インスタンス時間 | データベースインスタンスの稼働時間 |
| ストレージ容量 | 使用したストレージ容量 |
| I/Oリクエスト | 100万I/Oリクエスト単位 |
| バックアップストレージ | 保持期間を超えるバックアップ |
| データ転送 | インターネットへのデータ転送量 |