Aurora

AWS のクラウドネイティブ RDB で、MySQL/PostgreSQL 互換で高可用性・高パフォーマンスを実現する

AWSデータベース

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 の背景や設計思想は関連書籍に詳しい。

関連用語