開発環境用のAuroraインスタンスでdb.t3.medium
を使っていたのですが、CPUUtilization
(CPU使用率)が10 %前後とリソースをかなり持て余していました。
各インスタンスの料金を比べてみたところ、ACU(Aurora Capacity Unit)が最小容量(0.5)近くで運用されていれば、Serveless v2の方が安くなりそうだということがわかり、インスタンスを変更してみました。
インスタンス料金(Aurora Standard, Tokyo)
-
db.t3.medium
: 0.125 USD/hour - Severless v2: 0.15 USD/ACU
なんかコストが上がった..
インスタンス変更後、ACUの使用状況を確認するためにServerlessDatabaseCapacity
メトリクスを確認したところ、変更直後は2 ACU近くまで上昇しましたが、その後は安定して0.5 ACU付近で稼働していました。
おっしゃ!想定通りコスト下がった!と思い、Cost Explorerを確認してみたところ、なぜか7 USD/dayくらいコストが上がっていました..
コスト増の原因
Cost Explorerで「使用タイプ」ごとにグループ化して料金の内訳を確認したところ、APN1-RDS:Proxy-ASv2-Usage
が約10 USD/dayものコストを占めていることがわかりました。
そもそもインスタンス変更前はAPN1-RDS:ProxyUsage
という表示だったのに、Serverless v2に変更後は APN1-RDS:Proxy-ASv2-Usage
という異なる項目になっていました。
公式ドキュメントでRDS Proxyの料金を確認してみたところ、Aurora Serverless v2では「最低8 ACU分の料金が発生する」という記載を発見しました。
実は、「Lambda + RDS Proxy + Aurora」構成から「ECS + Aurora」構成へ移行する過渡期だったため、RDS Proxy をそのまま残して運用していました。これがコスト増加の原因でした..
コスト比較
-
APN1-InstanceUsage:db.t3.medium
: 約3.00 USD/day -
APN1-Aurora:ServerlessV2Usage
: 約2.21 USD/day -
APN1-RDS:Proxy-ASv2-Usage
: 約10 USD/day
インスタンスコストだけで比較するとServerless v2の方が約1 USD安くなっていました。RDS Proxyを削除し、Aurora Serverless v2単体で運用することで、コストを最適化することができました。
補足: Auroraバージョンによるさらなるコスト最適化
今回使用したAurora MySQLのバージョンは3.07.0でした。このバージョンではACUの最小容量が0.5ですが、3.08.0以降では最小ACUが0に設定可能とのことです。
これにより、アイドル時にはさらにコストを削減できそうです。