長い長いプレビュー期間をついに卒業!
おさらい
そもそもAuroraって何だっけ?
AWSが提供するマネージドDBサービス「RDS」の上位ラインナップ。
RDSで選択可能なDBMSエンジンにはOracle、PostgreSQL、MySQLなど複数あるが、その中でやや特殊な上位ラインナップとしてRDS(Aurora)エンジンとして存在する。
RDS(Aurora)はさらに2種類のバリエーションがあり、PostgreSQL互換もしくはMySQL互換が選択可能。
RDS(Aurora)の何がいいのか?
通常のRDSと比べて…
- 高性能。クラウドに最適化してイチから設計されているため、互換先のDBMS比で3〜5倍高速。
- 高可用性。DBインスタンスおよびストレージが3AZに自動分散される。
で、Aurora Serverlessっていうのは何?
まず、DB系サービスのマネージド度合いは3段階ある。
セルフマネージド | マネージド | サーバーレス |
---|---|---|
EC2(自分でDBMS導入) | RDS RDS(Aurora) |
DynamoDB Aurora Serverless |
オンプレチックにEC2へDBMSを自前導入することももちろん可能だが、RDSを使えばOS層以下はAWSがよろしく管理してくれる。ただしDBインスタンスのキャパシティ管理はユーザーが実施する必要あり。
このキャパシティ管理すらも自動でやってくれる(自動で起動停止/スケーリングする)のがサーバーレスで、DynamoDBが代表的だがこいつはリレーショナルDBではなくNoSQL(キーバリュー型)。
そこに颯爽と登場したRDB、しかも高性能なAuroraのサーバーレス版というのがAurora Serverlessだった。
Aurora Serverless v2って何がすごいの?
上記のとおり大変期待できそうなAurora Serverlessだったが、フタを開けてみると結構微妙だった。
Aurora Serverless v1の微妙だったところ
- シングルAZのみ対応…。障害時は他AZへF/Oする(が結構モタつく)
- クエリー実行中はオートスケーリングできない
- コールドスタート(アイドル状態からの復帰に1分程度かかる)
- 手動で再起動ができない
- 互換DBMSのバージョンがかなり限定される
- Auroraの機能で使えないものが結構ある
- VPC外からアクセスできない
ということでAuroraが活躍しているようなミッションクリティカルな商用ワークロードをバンバン捌く用というよりかは、あまりシビアでない開発環境のコストダウン目的などで、機能制約を呑みつつ利用されるケースが多かったと思われる。
Aurora Serverless v2で良くなったところ
- マルチAZに対応。F/O所要時間も短縮
- クエリー実行中でも即スケーリング可能
- コールドスタートが解消
- Auroraの一部機能が使えるように(以下一例)
- グローバルDB
- リードレプリカ
- VPC外からのアクセス可能(パブリックIP付与OK)
- 通常Auroraクラスターとの混在も可能(ReadのみServerless利用など)
GA版の詳細な機能比較は公式ドキュメント参照。
でも、お高いんでしょう?
Aurora Serverless v2はv1の倍の単価が設定されているが、AWSさん曰く…
- 多くのケースでv1よりも安く済む(スケーリングが細やかになった恩恵)
- 通常Auroraより最大9割のコスト削減が可能
実際にちょっと触ってみた
まずは通常のAurora(=プロビジョンド版)
ここで「エンジンのタイプ」から「Amazon Aurora」を選ぶとRDS(Aurora)、およびAurora Serverlessを作成できる。
エディションとしてポスグレ版を選択し、そのままポチッと作成。
少し待つとクラスターが作成されました。リーダー/ライターのインスタンスがマルチAZで構成されているのが分かる。
次にServerless v1
通常のRDS(Aurora)同様、エンジンとしてAmazon Auroraを選択する。
Serverless v1に対応したエンジンバージョンを確認し選択しておく。(v2の対応バージョンと異なるため注意)
するとインスタンスクラスの設定画面で「サーバーレス」が選択でき、「Serverless v1」がプルダウン表示されていることが分かる。
ポチッと作成してみると、通常のプロビジョンドAuroraでは3行表示(クラスター名+2インスタンス)だったのに対し、Serverless v1では「サーバーレス」というロールの1行のみが表示されている。
「サイズ」列を見てみると、通常のインスタンスクラスではなくACU(Aurora Capacity Unit)の数のみが表示されている。
そしてServerless v2
通常のRDS(Aurora)やServerless v1同様、エンジンとしてAmazon Auroraを選択する。
このときフィルターオプションでServerless v2に対応するバージョンのみを絞り込むことが可能。
Serverless v2対応のエンジンバージョンを選択していると、インスタンスクラスとして「サーバーレス」が選択可能になる。
ポチッと作成してみると、通常のプロビジョンドAurora同様にライター/リーダーがマルチAZで配置される。ここがServerless v1と大きく異なる点。
「サイズ」列を見ると動的なスペック設定(ACU = Aurora Capacity Unit)になっていることが分かる。
早速コミュニティでも盛り上がる
JAWS-UG横浜支部(2022/4/23配信)
GAホヤホヤのタイミングで早速扱ってくれているのは流石!
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の織田さんよりServerless v1の選択方法について補足をいただき取り込みました。ありがとうございました!!)