Aurora
AWS のクラウドネイティブ RDB で、MySQL/PostgreSQL 互換で高可用性・高パフォーマンスを実現する
Aurora とは
Amazon Aurora は、AWS が 2014 年の re:Invent で発表したクラウドネイティブ RDB で、MySQL と PostgreSQL に互換性がある。標準の MySQL/PostgreSQL より最大 5 倍/3 倍高速で、3 つの AZ に 6 つのデータコピーを自動的に保持する。
Aurora の高速性の秘密はストレージアーキテクチャにある。従来の RDB がコンピュートとストレージを密結合させているのに対し、Aurora はストレージを分散型の共有ストレージレイヤーに分離した。ログレコードをストレージノードに直接送信し、ストレージ側でページを再構築するため、ネットワーク I/O が大幅に削減される。
Aurora vs RDS
| 観点 | Aurora | RDS (MySQL/PostgreSQL) |
|---|---|---|
| パフォーマンス | MySQL の最大 5 倍 | 標準 |
| ストレージ | 自動拡張 (最大 128 TB) | 手動設定 (最大 64 TB) |
| レプリカ | 最大 15 (低レイテンシ) | 最大 5 |
| フェイルオーバー | 30 秒以内 | 60〜120 秒 |
| ストレージの冗長性 | 3 AZ × 2 コピー = 6 コピー | 2 AZ (Multi-AZ) |
| バックアップ | S3 に継続的バックアップ | スナップショット |
| コスト | RDS より 20〜30% 高い | 標準 |
Aurora Serverless v2
Aurora Serverless v2 は ACU (Aurora Capacity Unit) 単位で自動スケールし、トラフィックに応じてコストが変動する。1 ACU は約 2 GB のメモリに相当する。
| 設定 | 値 |
|---|---|
| 最小 ACU | 0.5 |
| 最大 ACU | 256 |
| スケール単位 | 0.5 ACU 刻み |
| スケール速度 | 数秒 |
Provisioned (固定インスタンス) との混在も可能で、ベースラインは Provisioned で処理し、ピーク時のみ Serverless v2 のリーダーインスタンスを追加する構成が取れる。
RDS Proxy による接続管理
Lambda から Aurora に接続する場合、Lambda の同時実行数分のコネクションが張られ、DB の接続上限を超える問題が起きる。RDS Proxy はコネクションプーリングを提供し、この問題を解決する。
Lambda (100 同時実行) → RDS Proxy (コネクションプール) → Aurora (20 接続)
RDS Proxy は IAM 認証をサポートしており、DB のパスワードを Lambda に渡す必要がない。
Aurora vs DynamoDB
| 観点 | Aurora | DynamoDB |
|---|---|---|
| データモデル | リレーショナル (SQL) | キーバリュー/ドキュメント |
| JOIN | ✅ | ❌ |
| スケーリング | 垂直 + リードレプリカ | 水平 (自動) |
| トランザクション | 完全な ACID | 限定的 (100 アイテムまで) |
| コスト (アイドル時) | 常時課金 | ほぼゼロ |
| 接続管理 | コネクションプール必要 | HTTP ベース (不要) |
| 用途 | 複雑なクエリ、リレーション | 高スループット、シンプルなアクセス |
いつ Aurora を使うか
複雑な JOIN が必要な場合や、既存の MySQL/PostgreSQL からの移行には Aurora が適している。高スループットでシンプルなアクセスパターンや、サーバーレスでコストゼロを目指す場合は DynamoDB を選択する。
バックアップと PITR
Aurora は S3 に継続的にバックアップを取得しており、PITR (Point-in-Time Recovery) で過去 35 日以内の任意の時点にデータベースを復元できる。復元は新しいクラスターとして作成されるため、既存のクラスターには影響しない。
Global Database
Aurora Global Database はリージョン間のレプリケーションを 1 秒以内で行い、DR (災害復旧) を実現する。セカンダリリージョンへのフェイルオーバーは 1 分以内で完了する。
コスト最適化
- Serverless v2 でトラフィックに応じた課金にする
- リザーブドインスタンスで最大 72% 割引を得る
- リードレプリカで読み取り負荷を分散する
- 開発環境では停止 (最大 7 日) でコストを削減する
- I/O 最適化 (Aurora I/O-Optimized) で I/O コストを予測可能にする
Aurora の背景や設計思想は関連書籍に詳しい。