SJ blog
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

機能v1v2
スケーリング速度数分数秒
最小キャパシティ2 ACU0.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: バッファキャッシュのヒット率

試験頻出ポイント

シナリオ回答
秒単位で自動スケールするDBAurora 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は完全なゼロスケール(課金停止)が可能だが機能制限があるため、用途に応じて選択する。