Aurora Serverles V2の選定ポイント、大規模コスト削減事例

# はじめに
JAWS PANKRATION 2024で発表させていただいた内容を日本語訳でブログにまとめます。

https://jawspankration2024.jaws-ug.jp/ja/timetable/TT-64/

https://speakerdeck.com/kawakawa2222/case-study-saving-over-4000-dollars-per-month-with-aurora-serverless-v2

# 触れること
・Aurora Serverless　V2を利用した大規模コスト削減事例
・Aurora Serverless V2のパフォーマンスとスケーリング
・Aurora Serverless　V2の選定ポイント

# Aurora Serverless V2とは？
Aurora Serverless V2は、以下の特徴を持つリレーショナル・データベースです。
・負荷に応じた自動スケーリング
・高い可用性
・高い拡張性
・高いコスト効率　※注意が必要　別途解説
・サーバレスとプロビジョニングインスタンスの共存が可能

![スクリーンショット 2024-08-24 13.54.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/8be8516f-e05a-34cc-5226-c0c398fbc27a.png)


https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.html


また、スケーリング単位として、ACUという単位があります。
１ACUとして、２GBのメモリが利用可能であり、最低０．５から最大１２８までスケーリングすることが可能です。
１ACUあたり東京リージョンでは0.2USD/hとなり、利用したACU分が課金対象となります。

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

![スクリーンショット 2024-08-24 13.54.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/07e4bc26-1bb6-2119-046e-929909edb775.png)

# 事例紹介
少しぼやかしていますが、以下のようなシステムをAWSに移行した事例となります。
・WEBAP
・５０万人のユーザ
・一日１０００〜50万件程度のアクセス
・１時間５万回のシステム連携イベント
・レスポンスタイム３秒
・２４/365稼働
・プライベートクラウドで動作

![スクリーンショット 2024-08-24 13.55.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/6ed93de7-5968-5d42-9a6e-6672c99fa50f.png)

移行にあたって解決したい問題や意識すべき特徴が複数ありました。
・平日９時〜１７時が主な利用時間帯だが、休日や夜間利用もある
・必要な需要予測が難しい
・高い可用性が要求される（ダウンすれば他システムにも影響が出る）
・クラウドの拡張性、柔軟性を活用したい
・EC2はオートスケーリングで需要に合わせた柔軟なスケールが実現できるが、DBは最大の性能を用意する必要があり、無駄が多い
・２４時間稼働のため、メンテナンスや見直しが容易ではない

![スクリーンショット 2024-08-24 13.58.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/a0b3eb09-f9db-f77f-aef3-faf9342f73c1.png)

こういった課題を解決するために、Aurora Serverless　V2を選択したという事例となります。

![スクリーンショット 2024-08-24 14.02.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/394f3eba-6a27-555c-0cb8-fad277c5ee41.png)

# コスト比較と削減事例
まず初めに、プロビジョニングインスタンスと、ServerlessV2のコストを比較したいと思います。
下の図からわかるように、プロビジョニングに比べて、約4．６倍もコストが高くなることがわかります。
ちなみにr6gインスタンスはr5インスタンスよりコストパフォーマンスにすぐれており、当たり前ですが、リザーブドインスタンスが最も安い金額となります。
![スクリーンショット 2024-08-24 14.13.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/0f2f4a52-0ce8-32ca-306a-23193c489246.png)

仮に、プロビジョニングインスタンスと同一コストとする場合、下記に示す通り、プロビジョニングインスタンスでは１２８GBのメモリが利用できるのに対し、ServerlessV2では平均２８GBまでのメモリ使用量まで抑える必要があります。
この結果から分かる通り、Aurora ServerlessV2のコストパフォーマンスは良いとは言い難いですね。
![スクリーンショット 2024-08-24 14.15.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/1dd34158-62c6-33da-3612-7024dbfe2c58.png)

とはいえ、単純に性能とコストで比較するのは早すぎます。Aurora ServerlessV2にすることで、減る運用コストも加味する必要があるのです。たとえば、変更や見直しのコストです。変更には、人員を配置し、検討やテスト、変更作業などのコストがかかります。この部分のコストも加味して選定をする必要があるのです。

![スクリーンショット 2024-08-24 14.18.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/2590ce01-d282-ab04-a0bd-4190f5207889.png)

我々のケースでは、ServerlessV2を選択したことで、月４０００USD以上のコストを削減しています。これは運用コストを含んでいません。
![スクリーンショット 2024-08-24 14.19.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/f2bef323-78e8-57b3-7c90-06df430ef038.png)

なぜ高い単価であるServerlessV2でコスト削減できたのか、その理由は以下にあると考えています。
・大きな需要変動
・常に最大負荷に備えておく必要がある
・需要予測が難しい
・ピーク負荷がかかることがあまりない
・２４時間稼働であり、継続的な見直しが容易ではない
・要件の最大性能値と平常負荷のギャップ
![スクリーンショット 2024-08-24 14.21.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/3720dee6-9003-d0fe-9174-9551f0c90e1e.png)

# 性能
AuroraServerlessV2は最低ACUと最大ACUが指定可能であり、最低ACUは選定ロジックに注意が必要です。
ACUを下げれば下げるほどコストは削減可能ですが、同時にスケーリングスピードが遅くなります。このあたりは性能試験のポイントになるでしょう。
![スクリーンショット 2024-08-24 14.24.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/50b155b7-6d83-66de-65f0-2990b7c67882.png)

次にスケールアップとスケールダウンを見てみましょう。
スケールアップは非常に迅速に行われます。現在利用しているACUが大きければ大きいほど、スケーリングパフォーマンスはより迅速になります。
スケールダウンは、負荷に応じて段階的に行われ、需要が下がったからといっていきなり下がるのではなく、徐々にダウンしていくというより安全サイドに倒れたものとなります。
![スクリーンショット 2024-08-25 22.49.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/3ab5d25c-3ce1-0c6b-8313-3cde795d676d.png)

我々の事例でも、CPU負荷が高まると迅速にACUが増加し、低いレイテンシのパフォーマンスを維持していることがわかります。
![スクリーンショット 2024-08-25 22.51.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/beedac1f-5a22-f25d-085b-f1eae19ee6cb.png)

# 選定ロジック
Aurora ServerlessV2に向いている特徴として以下５つが挙げられます。

・高いパフォーマンス要件に対して通常時の低い使用率
・需要予測が難しい
・スケーリングの手動運用が難しい
・スケーリングにおけるダウンタイムが許容できない
・スケーリングによってコスト効率を改善したい

![スクリーンショット 2024-08-25 22.52.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/4ad5ab30-2946-68c8-b1ad-ae796891f6ac.png)

上記の特徴を踏まえ、選定ロジックを作成しました。
以下フローに従うと、どのタイプを選定すればよいか検討するうえでの一助になるかと思います。
是非参考にしてみてください。

![スクリーンショット 2024-08-25 22.59.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/3cc90273-558b-d3b8-4d8a-4569ec82eb9f.png)

# まとめ
Aurora Serverless　V2は非常にフレキシブルなスケーリングを実現するサービスで、今回の事例にもありますが、正しい利用をすれば大きなコスト削減につなげることが可能です。
一方で、単純比較した場合コストは高めという特徴があるため、ケースに合わせて、選定することをおすすめします。
また、運用コストを意識すること、クラウド利用料のシミュレーション、パフォーマンスのテストは必須です。必ず実施しましょう。
この事例からわかるように、大抵の選択はトレードオフであり、何かを選択することは何かを捨てることと同義になります。すべてのケースにあった、万能なソリューションはありません。ケースに合わせて、正しい選択を心がけたいものですね。AWSのサービスも料金も変化していきますので、その変化に追従することも重要ですので、継続的に学んでいきましょう。

![スクリーンショット 2024-08-25 22.59.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/7326d020-ed52-3eaa-1d41-0d8487f4a89a.png)

![スクリーンショット 2024-08-25 22.59.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/82201a35-bdd0-64b9-f4fc-a65ec512a780.png)

# 最後に
このような機会を設けていただき、運営いただいたメンバの方に感謝申し上げます。
クレイジーなグローバルイベントで楽しかったです。