待たせたな！噂のAuroraサーバーレスv2がGA。初心者にも分かりやすくまとめてみた

長い長いプレビュー期間をついに卒業！

https://aws.amazon.com/jp/blogs/aws/amazon-aurora-serverless-v2-is-generally-available-instant-scaling-for-demanding-workloads/


# おさらい
### そもそもAuroraって何だっけ？
AWSが提供するマネージドDBサービス「RDS」の上位ラインナップ。
RDSで選択可能なDBMSエンジンにはOracle、PostgreSQL、MySQLなど複数あるが、その中でやや特殊な上位ラインナップとしてRDS（Aurora）エンジンとして存在する。

https://aws.amazon.com/jp/rds/aurora/?aurora-whats-new.sort-by=item.additionalFields.postDateTime&aurora-whats-new.sort-order=desc

RDS（Aurora）はさらに2種類のバリエーションがあり、PostgreSQL互換もしくはMySQL互換が選択可能。

### RDS（Aurora）の何がいいのか？
通常のRDSと比べて…
- 高性能。クラウドに最適化してイチから設計されているため、互換先のDBMS比で3〜5倍高速。
- 高可用性。DBインスタンスおよびストレージが3AZに自動分散される。

### で、Aurora Serverlessっていうのは何？
まず、DB系サービスのマネージド度合いは３段階ある。

|セルフマネージド|マネージド|サーバーレス|
|-|-|-|
|EC2（自分でDBMS導入）|RDS<br>RDS（Aurora）|DynamoDB<br>Aurora Serverless|

オンプレチックにEC2へDBMSを自前導入することももちろん可能だが、RDSを使えばOS層以下はAWSがよろしく管理してくれる。ただしDBインスタンスのキャパシティ管理はユーザーが実施する必要あり。

このキャパシティ管理すらも自動でやってくれる（自動で起動停止/スケーリングする）のがサーバーレスで、DynamoDBが代表的だがこいつはリレーショナルDBではなくNoSQL（キーバリュー型）。
そこに颯爽と登場したRDB、しかも高性能なAuroraのサーバーレス版というのがAurora Serverlessだった。

https://aws.amazon.com/jp/rds/aurora/serverless/


# Aurora Serverless v2って何がすごいの？
上記のとおり大変期待できそうなAurora Serverlessだったが、フタを開けてみると結構微妙だった。

### Aurora Serverless v1の微妙だったところ
- シングルAZのみ対応…。障害時は他AZへF/Oする（が結構モタつく）
- クエリー実行中はオートスケーリングできない
- コールドスタート（アイドル状態からの復帰に1分程度かかる）
- 手動で再起動ができない
- 互換DBMSのバージョンがかなり限定される
- Auroraの機能で使えないものが結構ある
- VPC外からアクセスできない

https://dev.classmethod.jp/articles/lessons-learned-from-up-and-running-aurora-serverless/

ということでAuroraが活躍しているようなミッションクリティカルな商用ワークロードをバンバン捌く用というよりかは、あまりシビアでない開発環境のコストダウン目的などで、機能制約を呑みつつ利用されるケースが多かったと思われる。

### Aurora Serverless v2で良くなったところ
- マルチAZに対応。F/O所要時間も短縮
- クエリー実行中でも即スケーリング可能
- コールドスタートが解消
- Auroraの一部機能が使えるように（以下一例）
    - グローバルDB
    - リードレプリカ
- VPC外からのアクセス可能（パブリックIP付与OK）
- 通常Auroraクラスターとの混在も可能（ReadのみServerless利用など）

https://dev.classmethod.jp/articles/reinvent-2020-new-launch-aurora-serverless-v2/

GA版の詳細な機能比較は公式ドキュメント参照。

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.upgrade.html#aurora-serverless.comparison

### でも、お高いんでしょう？
Aurora Serverless v2はv1の倍の単価が設定されているが、AWSさん曰く…
- 多くのケースでv1よりも安く済む（スケーリングが細やかになった恩恵）
- 通常Auroraより最大9割のコスト削減が可能


# 実際にちょっと触ってみた
### まずは通常のAurora（＝プロビジョンド版）
RDSコンソールから「データベースの作成」をクリック
![スクリーンショット 2022-04-23 18.32.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/a79f5eba-a20d-5e07-72e8-20afee73c9ef.png)

ここで「エンジンのタイプ」から「Amazon Aurora」を選ぶとRDS（Aurora）、およびAurora Serverlessを作成できる。
![スクリーンショット 2022-04-23 18.34.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/7695eb5d-258b-5610-c9ae-acaccc0fadae.png)

エディションとしてポスグレ版を選択し、そのままポチッと作成。
少し待つとクラスターが作成されました。リーダー/ライターのインスタンスがマルチAZで構成されているのが分かる。
![スクリーンショット 2022-04-23 20.09.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/a89e0fa9-f40d-7099-7c7a-90801e2c93ed.png)

### 次にServerless v1
通常のRDS（Aurora）同様、エンジンとしてAmazon Auroraを選択する。
[Serverless v1に対応したエンジンバージョン](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.relnotes.html)を確認し選択しておく。（v2の対応バージョンと異なるため注意）
![スクリーンショット 2022-04-24 11.26.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/8c69e5f5-43cd-e710-2ff6-b364e22d71a2.png)

するとインスタンスクラスの設定画面で「サーバーレス」が選択でき、「Serverless v1」がプルダウン表示されていることが分かる。
![スクリーンショット 2022-04-24 11.28.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/24b453f8-5f30-52fe-f10f-92439f9016af.png)

ポチッと作成してみると、通常のプロビジョンドAuroraでは3行表示（クラスター名＋2インスタンス）だったのに対し、Serverless v1では「サーバーレス」というロールの1行のみが表示されている。
「サイズ」列を見てみると、通常のインスタンスクラスではなくACU（Aurora Capacity Unit）の数のみが表示されている。
![スクリーンショット 2022-04-24 11.44.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/5d650536-8181-c78d-b9fe-2008a430b017.png)


### そしてServerless v2
通常のRDS（Aurora）やServerless v1同様、エンジンとしてAmazon Auroraを選択する。
このときフィルターオプションでServerless v2に対応するバージョンのみを絞り込むことが可能。
![スクリーンショット 2022-04-23 20.26.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/4a9ce787-2e80-cd0c-1816-652f437f6c88.png)

Serverless v2対応のエンジンバージョンを選択していると、インスタンスクラスとして「サーバーレス」が選択可能になる。
![スクリーンショット 2022-04-23 20.31.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/bbc4fe4f-2e32-9798-b26a-1e361dd5fc6c.png)

ポチッと作成してみると、通常のプロビジョンドAurora同様にライター/リーダーがマルチAZで配置される。ここがServerless v1と大きく異なる点。
「サイズ」列を見ると動的なスペック設定（ACU ＝ Aurora Capacity Unit）になっていることが分かる。
![スクリーンショット 2022-04-23 20.58.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/e39ba3e1-9d9d-b02b-62c1-d450b22b7ca8.png)



# 早速コミュニティでも盛り上がる
### JAWS-UG横浜支部（2022/4/23配信）
GAホヤホヤのタイミングで早速扱ってくれているのは流石！

https://jawsug-yokohama.connpass.com/event/246103/

AWSさんの解説＆ツイッターQAより抜粋
- Serverless v2のプレビュー版とGA版は別モノと考えてよい。プレビュー中にうけたフィードバックを取り込み、大幅な機能改善を取り込んでいる。
- オートスケーリングはスケール「アウト」ではなく「アップ」。インスタンスの置き換えではなくそのまま拡張されるため、ウォーミング時間も短縮される。
- 同一クラスター内に通常のAuroraとServerless v2のインスタンスを混在させることが可能。
    - 既存のAuroraクラスターへとりあえず足してみる、といったおためし導入にも有用。
- グローバルデータベースで活用すれば、コストを抑えつつ有事にセカンダリーリージョン側で即座にインスタンスを起動することが可能。
- Performance Insightsの利用には2 ACU（Aurora Capacity Unit）を消費するため、サイジングに注意すること。
- 引き続き未対応のAurora機能：DAG、バックトラックなど複数あり

※残念ながら、大阪リージョンには未対応のようです。DR対応でも活きそうなので、AWSさん是非お願いします！


# さいごに
まだまだ情報出始めの時期のため、間違っている情報や補足などあればコメント頂けると嬉しいです！ m(_ _)m
（4/24：[AWS Samurai 2021の織田さん](https://note.com/shigeru_oda/n/n0fc9287a1e48)よりServerless v1の選択方法について補足をいただき取り込みました。ありがとうございました！！）