database
A
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
Aurora Serverless v2 — 自動スケーリングDBの仕組みと設定
Amazon Aurora Serverless v2のACU(Aurora Capacity Unit)スケーリング、最小/最大ACU設定、v1との違い、マルチAZとリードレプリカ対応、コスト計算、ユースケース別設定例を解説。
一言結論
Aurora Serverless v2はv1と異なりマルチAZ・リードレプリカに対応し本番環境での採用が現実的になったが、完全なゼロスケールが必要な開発環境のみv1が選択肢となる。
Aurora Serverless v2 の概要
Aurora Serverless v2はワークロードに応じてDBキャパシティが自動的にスケールアップ/ダウンするサーバーレスDB構成だ。
Aurora Serverless v2 の特徴:
→ ACU(Aurora Capacity Unit)単位でキャパシティが変化
→ 1 ACU = 約2GB RAM + 対応するCPU
→ スケーリングはほぼリアルタイム(秒単位)
→ 最小0.5 ACU〜最大128 ACUまで設定可能
→ マルチAZサポート ✅
→ リードレプリカ対応 ✅(v1は未対応)
→ グローバルデータベース対応 ✅
Aurora Serverless v2 vs v1
| 機能 | v1 | v2 |
|---|---|---|
| スケーリング速度 | 数分 | 数秒 |
| 最小キャパシティ | 2 ACU | 0.5 ACU |
| マルチAZ | ❌ | ✅ |
| リードレプリカ | ❌ | ✅ |
| VPC接続 | ❌(不安定) | ✅ |
| ゼロへのスケールダウン | ✅(完全停止) | ❌(最小0.5 ACU) |
v1 を選ぶケース(ほぼ v2 推奨):
→ 完全に0にスケールダウンして課金停止したい場合のみ
→ 例: 開発環境で使わない時間帯はゼロコストにしたい
v2 を選ぶケース:
→ プロダクション環境(マルチAZ必要)
→ 接続が多いアプリ(リードレプリカが必要)
→ スケーリング応答が速い必要がある
クラスターの設定
# Aurora Serverless v2 クラスターの作成
aws rds create-db-cluster \
--db-cluster-identifier my-serverless-cluster \
--engine aurora-mysql \
--engine-version 8.0.mysql_aurora.3.03.0 \
--serverless-v2-scaling-configuration MinCapacity=0.5,MaxCapacity=16 \
--master-username admin \
--master-user-password your-secure-password \
--vpc-security-group-ids sg-xxx \
--db-subnet-group-name my-subnet-group
# Serverless v2 ライターインスタンスの追加
aws rds create-db-instance \
--db-instance-identifier my-serverless-writer \
--db-cluster-identifier my-serverless-cluster \
--db-instance-class db.serverless \
--engine aurora-mysql
# リードレプリカの追加(v2の新機能)
aws rds create-db-instance \
--db-instance-identifier my-serverless-reader \
--db-cluster-identifier my-serverless-cluster \
--db-instance-class db.serverless \
--engine aurora-mysql
ACU の設定ガイドライン
MinCapacity(最小ACU)の設定:
本番環境(常時稼働): 2〜4 ACU(接続プールとウォームアップのため)
開発環境: 0.5 ACU(コスト最小化)
MaxCapacity(最大ACU)の設定:
→ ピーク時のワークロードを基に設定
→ まず大きめに設定してCloudWatchで実績を確認
→ ServerlessDatabaseCapacity メトリクスで使用量を監視
注意: MaxCapacity を小さく設定しすぎると
スケールアップできずパフォーマンスが劣化
コスト計算
料金: ACU 時間あたりの料金 × 使用 ACU 時間
Aurora MySQL v2: $0.12/ACU-時間(東京)
Aurora PostgreSQL v2: $0.12/ACU-時間(東京)
例:
平均4 ACU を 720時間(1ヶ月)使用:
4 × 720 × $0.12 = $345.60/月
ピーク時16 ACU × 8時間 + 平均2 ACU × 712時間:
(16 × 8 + 2 × 712) × $0.12 = (128 + 1424) × $0.12 = $186.24/月
→ ピークが短い場合は Serverless v2 が有利
CloudWatch で ACU を監視
# ServerlessDatabaseCapacityの監視アラーム設定
aws cloudwatch put-metric-alarm \
--alarm-name "Aurora-Serverless-MaxCapacity" \
--metric-name "ServerlessDatabaseCapacity" \
--namespace "AWS/RDS" \
--statistic "Maximum" \
--period 300 \
--threshold 14 \
--comparison-operator GreaterThanOrEqualToThreshold \
--evaluation-periods 2 \
--dimensions Name=DBClusterIdentifier,Value=my-serverless-cluster \
--alarm-actions arn:aws:sns:...:capacity-alert
監視するメトリクス:
ServerlessDatabaseCapacity: 現在のACU数
DatabaseConnections: 接続数
CPUUtilization: CPU使用率(ACUに対する%)
BufferCacheHitRatio: バッファキャッシュのヒット率
試験頻出ポイント
| シナリオ | 回答 |
|---|---|
| 秒単位で自動スケールするDB | Aurora Serverless v2 |
| 完全にゼロにスケールダウン | Aurora Serverless v1のみ |
| ServerlessでマルチAZが必要 | Aurora Serverless v2(v1は非対応) |
| Serverlessでリードレプリカが必要 | Aurora Serverless v2(v1は非対応) |
| ACUの最小値 | v2: 0.5 ACU |
まとめ
Aurora Serverless v2はリアルタイムに近いスケーリング速度、マルチAZ、リードレプリカ対応でプロダクション環境にも適用できる。v1は完全なゼロスケール(課金停止)が可能だが機能制限があるため、用途に応じて選択する。