y-ohgi's blog

TODO: ここになにかかく

Aurora Serverless v2のメモ

TL;DR

  • Aurora Serverless v2のメモ書き

About

Aurora Serverless v2とAurora Provisioned Instanceの違い

  • プロビジョンド済みAuroraはインスタンスタイプと台数での課金体系
    • 定常的に使用されるワークロードに適している
  • Aurora Serverless v2はスケーラビリティに優れており、ACUという独自の課金体系
    • 特定の時間にスケールアップ/ダウン・スケールアウト/インを行うことで必要なキャパシティを調達することが可能
    • Aurora Capacity Unit(ACU)は時間単位で確保するマシンスペック
  • 同一のAuroraクラスターにProvisioned InstanceとServerless v2を同居させることが可能
    • 例えばWriterはProvisioned Instance、ReaderはServerless v2のような形が可能

ACU

  • Aurora Capacity Unit
    • Aurora Serverless固有の課金体系
    • メモリー/CPU/ネットワークを含む料金
  • 0~256ACUまで設定可能
  • 1ACUにつき2GiB
    • 実質的な最小値は0.5の1GiB
    • 0の場合コールドスタンバイ状態になる。

コールドスタンバイ

  • 最小ACUを0に設定することが可能
    • 使用されていない時間は課金されない
  • 再接続
    • 24時間以内に再接続を行うと15秒かかる
    • 24時間以上ACU0の状態だとdeeper sleepモードになり、接続に30秒かかる
  • ref: Scaling to Zero ACUs with automatic pause and resume for Aurora Serverless v2 - Amazon Aurora
  • ACU0にならないケース条件もある
    • コネクションが張られていること
    • ACU0に対応しているバージョンを使用していること
    • RDSプロキシが有効化されていること
  • ストレージ費用はACU0の状態でも課金される

オートスケール

  • Aurora Serverless v2は構築時にACUの最小値と最大値を設定し、その値の範囲内でオートスケールを行ってくれる
  • 最小ACUが大きいほどスケールアップの速度が上がる
    • 数百から数千へのトランザクションが1秒未満でスケールアップが行われる
  • スケールダウンは段階的にゆっくりと行われる

スケジューリングオートスケール

  • 時間ベースでのオートスケール(Scheduled Scaling)は未対応
  • EventBridge Schedulerで対応可能
  • e.g.
    • 夜間は低いACUでも問題ないが、特定の時間(例えばゲームアプリのイベントのタイミング)にスケジューリングを行いたい場合はEventBridge Schedulerで一定以上のACUに設定することが可能
    • Aurora Serverless v2のオートスケールの性質上、最小ACUが大きいほどスケールアップの速度が上がるため事前に最小ACUを上げることで高速なオートスケールを有効に活用可能

max connection

料金

  • 前提として、ACUはメモリー/CPU/ネットワークを含む料金で、Provisioned Instanceはネットワークの料金や容量がかかる
  • 今回はProvisioned Instanceはインスタンス台のみとするため、実際は増加する
1h 1m
ACU 0.5 0.075 54.75
ACU 1 0.15 USD 112.22
db.r7g.large 0.333 243.09
db.t4g.medium 0.113 82.49

Refs

所感

Aurora Serverless v2の強みはやはり強力なオートスケールだと実感。
最小ACUに応じてスケールアップの速度が変わる点は考慮すべき点であり、開発環境の夜間停止などをさせたい際にもACU0にする条件を認識する必要がある。