導入
DR設計で最も難しいのがデータ層です。アプリケーションサーバーは作り直せますが、データは複製しておかなければ二度と戻りません。ここでは主要なデータストアごとに、RPOをどこまで縮められるかを見ていきます。
説明
主要なデータサービスには、それぞれ専用のクロスリージョン複製機能があります。
| サービス | 機能 | 複製方式 | 目安RPO |
|---|---|---|---|
| Aurora | Global Database | ストレージレベルの非同期レプリケーション | 1秒未満 |
| DynamoDB | Global Tables | マルチアクティブなレプリケーション | 1秒未満 |
| S3 | クロスリージョンレプリケーション(CRR) | オブジェクト単位の非同期コピー | 数分〜(S3 RTC利用で15分保証) |
flowchart LR
subgraph R1["プライマリリージョン"]
A1["Aurora Primary"]
D1["DynamoDB Table"]
S1["S3 Bucket"]
end
subgraph R2["セカンダリリージョン"]
A2["Aurora Secondary<br/>(読み取り可・昇格可)"]
D2["DynamoDB Table(レプリカ)"]
S2["S3 Bucket(レプリカ)"]
end
A1 -->|"1秒未満の非同期複製"| A2
D1 <-->|"マルチアクティブ複製"| D2
S1 -->|"CRR(数分〜)"| S2
それぞれの特徴を押さえます。
- Aurora Global Database: 1つのプライマリリージョンと、最大複数のセカンダリリージョン(読み取り専用)で構成。障害時はセカンダリを書き込み可能に昇格(通常1分未満)させる。パイロットライト〜ウォームスタンバイ向き。
- DynamoDB Global Tables: すべてのリージョンが読み書き可能なマルチアクティブ構成。アクティブ-アクティブのマルチサイト戦略に直結する。
- S3 CRR: バケット単位でオブジェクトを別リージョンへ複製。S3 Replication Time Control(RTC) を有効化すると、99.99%のオブジェクトを15分以内に複製する、というSLAが付く。
具体例
グローバルサービスのDRを、データの性質ごとに複製方式で使い分けます。3つの「書き込みの形」が決め手です。
- 注文DB(書き込みは日本の1拠点から、RPOほぼゼロ)→ Aurora Global Database … 東京がプライマリ(書き込み)、大阪はセカンダリ(読み取り専用)。1秒未満で複製され、災害時は大阪を書き込み可能に昇格(通常1分未満)。「書き込みは1リージョンでよい」ケース。
- ユーザーのカート(日本・欧州の両方から書き込みたい)→ DynamoDB Global Tables … 全リージョンが読み書き可能なマルチアクティブ。各地のユーザーが自国リージョンへ低遅延で書ける。アクティブ-アクティブのマルチサイトに直結。
- 商品画像(静的・複製にSLA保証が欲しい)→ S3 CRR+RTC … クロスリージョンレプリケーションで別リージョンへ。RTCを有効にすると「99.99%を15分以内に複製」というSLAが付く。
判断軸は「書き込みが1リージョンか、複数リージョンからか」。1つならAurora Global Database、複数同時ならDynamoDB Global Tables、静的でSLA重視ならS3 CRR+RTC。この複製方式の違いがそのまま出題の切り分けです。
読んでみよう
「RPOをほぼゼロにしたいが、書き込みは1リージョンからでよい」ならAurora Global Database、「複数リージョンから同時に書き込みたい」ならDynamoDB Global Tables、「静的コンテンツの複製にSLA付きの保証が欲しい」ならS3 CRR+RTC、というようにサービスごとの複製方式の違いが、そのまま出題の切り分けポイントになります。