Amazon Aurora Serverless v2+Amazon RDS Proxyの場合、RDS Proxyの最低料金は8ACU分です

記事タイトルとURLをコピーする

こんにちは。アプリケーションサービス部所属、DevOps推進派の兼安です。

今回は、Amazon RDS ProxyとAmazon Aurora Serverless v2のお話です。
Amazon Aurora Serverless v2はコストの柔軟性が高いサービスではありますが、Amazon RDS Proxyと組み合わせた場合、一定の金額は必ずかかることになります。
このことについて、どのような理由で発生するのかをお話します。

本記事は2024年6月時点の情報を基に記述しています。

本記事の対象者

おそらく本記事の内容は、Amazon Aurora Serverless v2とRDS Proxyの組み合わせを使ったことがある方は、すでにご存知かと思います。
従って本記事は、Amazon Auroraは使ってはいるが、Serverlessの方は使ったことがない、これからサーバーレス構成を検討される方を対象としています。

Amazon Aurora Serverless v2とは

Aurora Serverless v2 は、Amazon Aurora 用のオンデマンドのオートスケーリング設定です。

docs.aws.amazon.com

データベースに対する需要に応じて、自動的にリソースをスケーリングすることができます。
Aurora Serverless v2におけるスケーリングは、インスタンスサイズを変化させるスケールアップ/ダウンのことです。
Application Load BalancerとAmazon EC2の組み合わせでできる、オートスケーリングとは方式が異なります。

Aurora Serverless v2 は、ACUという単位でリソースを割り当てます。

docs.aws.amazon.com

これは、CPU、メモリ、ネットワークのリソースを組み合わせたもので、Aurora Serverless v2は、
データベースサーバの需要が割り当てられたACUで、対応しきれない場合、自動的にスケールアップします。
今私が需要という言葉を使いましたが、これは、ACUはCPU、メモリ、ネットワークのリソースを組み合わせたものなので、単純にリクエスト数やCPU使用率だけではACUを測れないからです。

Amazon RDS Proxyとは

Amazon RDS Proxy は、Amazon RDS データベースの接続プールを管理するフルマネージドのプロキシです。

aws.amazon.com

AWS Lambdaを始めとしたサーバーレスアーキテクチャを利用した場合、リクエストの増減に強くなりますが、その分、多数のデータベース接続が発生することがあります。
これは、サーバーレスアーキテクチャでコネクションプーリングのような機能を実現するのは、不可能ではないものの実装の難易度が比較的高いためです。

RDS Proxyは、データベースへの接続をプロキシすることで、データベースへの負荷を軽減します。
この機能は、特にサーバーレスアーキテクチャを利用した場合に有効です。

Amazon RDS Proxyはサーバーレスアーキテクチャにおいてコネクションプーリングの役割をします

Amazon Auroraの1時間の最低料金

まずはAurora本体の料金を調べていきます。
今回は、Aurora PostgreSQL互換エディションを使用した場合の料金を調べます。

aws.amazon.com

Aurora Serverless v2の場合、1ACUあたり0.20USDです。
ACUの下限は0.5なので、1時間の最低料金は以下のようになります。

0.2USD × 0.5ACU = 0.1USD

上記のページのプロビジョンされたオンデマンドインスタンスは、Aurora Serverless v2ではなく通常のインスタンスタイプを選んだ場合のケースを指します。
インスタンスの設定画面で言うと、メモリ最適化クラスバースト可能クラスなどを選択したケースです。

Amazon Auroraのインスタンスの設定部分

プロビジョンされたオンデマンドインスタンスの場合、一番コストが低いのはdb.t4g.mediumで、1時間の料金は以下のようになります。

0.113USD

最低料金だけ見ると、そんなに変わらないですね。
なお、本記事ではプロビジョンされたリザーブドインスタンスのパターンは省略させていただきます。

Amazon RDS Proxyの1時間の最低料金

Amazon RDS Proxyの料金は、Aurora Serverless v2の場合はACUに依存します。
それ以外の場合は、インスタンスのvCPU数に依存します。

aws.amazon.com

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のオートスケーリングの「設定」です。
この設定の有効・無効化は、インスタンスの設定から行います。

Amazon Auroraのインスタンスの設定部分

インスタンスの設定を変えるだけであり、性能面を除いて、機能性、振る舞いに変化はなくインスタンス・クラスの変更と同等の扱いです。
従って、Aurora Serverless v2と有効・無効を切り替えても、移行作業は伴いません。
ただし、ダウンタイムは発生しますので、念の為疎通確認はあった方がいいかもいいかもしれません。

Aurora Serverless v2とそれ以外は、デーベースの挙動が同じなので、開発時はAurora Serverless v2以外を使い、本番はAurora Serverless v2に切り替えるという使い分けをしてもよいと思います。

まとめ

Aurora Serverless v2とRDS Proxyを組み合わせた場合、最低料金が発生し、プロビジョンされたオンデマンドインスタンスを使用した時よりも割高になることがあります。
挙動が違うわけでないので、開発時はコスト重視でプロビジョンされたオンデマンドインスタンスを使う選択肢もあると思います。

兼安 聡(執筆記事の一覧)

アプリケーションサービス部 DS3課所属
AWS認定全冠、認定スクラムマスター
広島在住です。今日も明日も修行中です。