こんにちは。アプリケーションサービス部所属、DevOps推進派の兼安です。
今回は、Amazon RDS ProxyとAmazon Aurora Serverless v2のお話です。
Amazon Aurora Serverless v2はコストの柔軟性が高いサービスではありますが、Amazon RDS Proxyと組み合わせた場合、一定の金額は必ずかかることになります。
このことについて、どのような理由で発生するのかをお話します。
本記事は2024年6月時点の情報を基に記述しています。
- 本記事の対象者
- Amazon Aurora Serverless v2とは
- Amazon RDS Proxyとは
- Amazon Auroraの1時間の最低料金
- Amazon RDS Proxyの1時間の最低料金
- Amazon Aurora + RDS Proxyの1時間の最低料金
- Aurora Serverless v2とそれ以外の使い分け
- まとめ
本記事の対象者
おそらく本記事の内容は、Amazon Aurora Serverless v2とRDS Proxyの組み合わせを使ったことがある方は、すでにご存知かと思います。
従って本記事は、Amazon Auroraは使ってはいるが、Serverlessの方は使ったことがない、これからサーバーレス構成を検討される方を対象としています。
Amazon Aurora Serverless v2とは
Aurora Serverless v2 は、Amazon Aurora 用のオンデマンドのオートスケーリング設定です。
データベースに対する需要に応じて、自動的にリソースをスケーリングすることができます。
Aurora Serverless v2におけるスケーリングは、インスタンスサイズを変化させるスケールアップ/ダウンのことです。
Application Load BalancerとAmazon EC2の組み合わせでできる、オートスケーリングとは方式が異なります。
Aurora Serverless v2 は、ACUという単位でリソースを割り当てます。
これは、CPU、メモリ、ネットワークのリソースを組み合わせたもので、Aurora Serverless v2は、
データベースサーバの需要が割り当てられたACUで、対応しきれない場合、自動的にスケールアップします。
今私が需要という言葉を使いましたが、これは、ACUはCPU、メモリ、ネットワークのリソースを組み合わせたものなので、単純にリクエスト数やCPU使用率だけではACUを測れないからです。
Amazon RDS Proxyとは
Amazon RDS Proxy は、Amazon RDS データベースの接続プールを管理するフルマネージドのプロキシです。
AWS Lambdaを始めとしたサーバーレスアーキテクチャを利用した場合、リクエストの増減に強くなりますが、その分、多数のデータベース接続が発生することがあります。
これは、サーバーレスアーキテクチャでコネクションプーリングのような機能を実現するのは、不可能ではないものの実装の難易度が比較的高いためです。
RDS Proxyは、データベースへの接続をプロキシすることで、データベースへの負荷を軽減します。
この機能は、特にサーバーレスアーキテクチャを利用した場合に有効です。
Amazon Auroraの1時間の最低料金
まずはAurora本体の料金を調べていきます。
今回は、Aurora PostgreSQL互換エディションを使用した場合の料金を調べます。
Aurora Serverless v2の場合、1ACUあたり0.20USDです。
ACUの下限は0.5なので、1時間の最低料金は以下のようになります。
0.2USD × 0.5ACU = 0.1USD
上記のページのプロビジョンされたオンデマンドインスタンス
は、Aurora Serverless v2ではなく通常のインスタンスタイプを選んだ場合のケースを指します。
インスタンスの設定画面で言うと、メモリ最適化クラス
・バースト可能クラス
などを選択したケースです。
プロビジョンされたオンデマンドインスタンス
の場合、一番コストが低いのはdb.t4g.mediumで、1時間の料金は以下のようになります。
0.113USD
最低料金だけ見ると、そんなに変わらないですね。
なお、本記事ではプロビジョンされたリザーブドインスタンス
のパターンは省略させていただきます。
Amazon RDS Proxyの1時間の最低料金
Amazon RDS Proxyの料金は、Aurora Serverless v2の場合はACUに依存します。
それ以外の場合は、インスタンスのvCPU数に依存します。
Aurora Serverless v2の場合はACUに依存するため、データベースの負荷が低い場合は、RDS Proxyの料金も低くなります。
しかし、ここで注意なのは料金の表に最低料金が記述されていることです。
Aurora Serverless v2の場合、RDS Proxyの最低料金が8ACUに基づいて計算されます。
従って、1時間の最低料金は以下になります。
この金額が最低料金なので、Aurora Serverless v2の負荷が低く、ACUが8未満でもこの料金になります。
これを1日24時間を1ヶ月30日でフル稼働したとする計算をすると、0.2USD × 24 × 30 = 144USD
となります。
なかなかの金額ですね。
0.025USD × 8ACU = 0.2USD
次に、プロビジョンドインスタンス
の方を計算してみます。
上記のページのプロビジョンドインスタンス
は、Aurora Serverless v2ではなく通常のインスタンスタイプを選んだ場合のケースを指します。
プロビジョンドインスタンス
の場合は、最低料金は2個のvCPUとあるので、以下のようになります。
0.018USD × 2vCPU = 0.036USD
Amazon Aurora + RDS Proxyの1時間の最低料金
RDS ProxyとAmazon Auroraを合わせた場合の最低料金をまとめると以下のようになります。
なお、今回はストレージやネットワークの料金は省略しています。
インスタンスの設定 | ACU/インスタンスサイズ | Auroraの最低料金(1時間) | RDS Proxyの最低料金(1時間) | 合計 (1時間) |
---|---|---|---|---|
Aurora Serverless v2 | 0.5ACU | 0.1USD | 0.2USD | 0.3USD |
Aurora Serverless v2以外 | db.t4g.medium | 0.113USD | 0.036USD | 0.149USD |
動かすことだけを考えた場合、主にRDS Proxyが原因で最低料金はServerlessが割高になります。
更に、RDS Proxyには停止という概念がないので、DB本体のインスタンスの起動停止を駆使すると更に割高に見えるでしょう。
もちろん、本番でアクセスが増えた場合、逆転する可能性もあります。
ただし、開発時においては、Serverlessの方がコストがかかることが多々ありそうなので、注意が必要だと考えます。
Aurora Serverless v2とそれ以外の使い分け
Aurora Serverless v2は、Amazon Auroraのオートスケーリングの「設定」です。
この設定の有効・無効化は、インスタンスの設定から行います。
インスタンスの設定を変えるだけであり、性能面を除いて、機能性、振る舞いに変化はなくインスタンス・クラスの変更と同等の扱いです。
従って、Aurora Serverless v2と有効・無効を切り替えても、移行作業は伴いません。
ただし、ダウンタイムは発生しますので、念の為疎通確認はあった方がいいかもいいかもしれません。
Aurora Serverless v2とそれ以外は、デーベースの挙動が同じなので、開発時はAurora Serverless v2以外を使い、本番はAurora Serverless v2に切り替えるという使い分けをしてもよいと思います。
まとめ
Aurora Serverless v2とRDS Proxyを組み合わせた場合、最低料金が発生し、プロビジョンされたオンデマンドインスタンスを使用した時よりも割高になることがあります。
挙動が違うわけでないので、開発時はコスト重視でプロビジョンされたオンデマンドインスタンスを使う選択肢もあると思います。
兼安 聡(執筆記事の一覧)
アプリケーションサービス部 DS3課所属
2024 Japan AWS Top Engineers (Database)
2024 Japan AWS All Certifications Engineers
認定スクラムマスター
広島在住です。今日も明日も修行中です。