はじめに
JAWS PANKRATION 2024で発表させていただいた内容を日本語訳でブログにまとめます。
触れること
・Aurora Serverless V2を利用した大規模コスト削減事例
・Aurora Serverless V2のパフォーマンスとスケーリング
・Aurora Serverless V2の選定ポイント
Aurora Serverless V2とは?
Aurora Serverless V2は、以下の特徴を持つリレーショナル・データベースです。
・負荷に応じた自動スケーリング
・高い可用性
・高い拡張性
・高いコスト効率 ※注意が必要 別途解説
・サーバレスとプロビジョニングインスタンスの共存が可能
また、スケーリング単位として、ACUという単位があります。
1ACUとして、2GBのメモリが利用可能であり、最低0.5から最大128までスケーリングすることが可能です。
1ACUあたり東京リージョンでは0.2USD/hとなり、利用したACU分が課金対象となります。
事例紹介
少しぼやかしていますが、以下のようなシステムをAWSに移行した事例となります。
・WEBAP
・50万人のユーザ
・一日1000〜50万件程度のアクセス
・1時間5万回のシステム連携イベント
・レスポンスタイム3秒
・24/365稼働
・プライベートクラウドで動作
移行にあたって解決したい問題や意識すべき特徴が複数ありました。
・平日9時〜17時が主な利用時間帯だが、休日や夜間利用もある
・必要な需要予測が難しい
・高い可用性が要求される(ダウンすれば他システムにも影響が出る)
・クラウドの拡張性、柔軟性を活用したい
・EC2はオートスケーリングで需要に合わせた柔軟なスケールが実現できるが、DBは最大の性能を用意する必要があり、無駄が多い
・24時間稼働のため、メンテナンスや見直しが容易ではない
こういった課題を解決するために、Aurora Serverless V2を選択したという事例となります。
コスト比較と削減事例
まず初めに、プロビジョニングインスタンスと、ServerlessV2のコストを比較したいと思います。
下の図からわかるように、プロビジョニングに比べて、約4.6倍もコストが高くなることがわかります。
ちなみにr6gインスタンスはr5インスタンスよりコストパフォーマンスにすぐれており、当たり前ですが、リザーブドインスタンスが最も安い金額となります。
仮に、プロビジョニングインスタンスと同一コストとする場合、下記に示す通り、プロビジョニングインスタンスでは128GBのメモリが利用できるのに対し、ServerlessV2では平均28GBまでのメモリ使用量まで抑える必要があります。
この結果から分かる通り、Aurora ServerlessV2のコストパフォーマンスは良いとは言い難いですね。
とはいえ、単純に性能とコストで比較するのは早すぎます。Aurora ServerlessV2にすることで、減る運用コストも加味する必要があるのです。たとえば、変更や見直しのコストです。変更には、人員を配置し、検討やテスト、変更作業などのコストがかかります。この部分のコストも加味して選定をする必要があるのです。
我々のケースでは、ServerlessV2を選択したことで、月4000USD以上のコストを削減しています。これは運用コストを含んでいません。
なぜ高い単価であるServerlessV2でコスト削減できたのか、その理由は以下にあると考えています。
・大きな需要変動
・常に最大負荷に備えておく必要がある
・需要予測が難しい
・ピーク負荷がかかることがあまりない
・24時間稼働であり、継続的な見直しが容易ではない
・要件の最大性能値と平常負荷のギャップ
性能
AuroraServerlessV2は最低ACUと最大ACUが指定可能であり、最低ACUは選定ロジックに注意が必要です。
ACUを下げれば下げるほどコストは削減可能ですが、同時にスケーリングスピードが遅くなります。このあたりは性能試験のポイントになるでしょう。
次にスケールアップとスケールダウンを見てみましょう。
スケールアップは非常に迅速に行われます。現在利用しているACUが大きければ大きいほど、スケーリングパフォーマンスはより迅速になります。
スケールダウンは、負荷に応じて段階的に行われ、需要が下がったからといっていきなり下がるのではなく、徐々にダウンしていくというより安全サイドに倒れたものとなります。
我々の事例でも、CPU負荷が高まると迅速にACUが増加し、低いレイテンシのパフォーマンスを維持していることがわかります。
選定ロジック
Aurora ServerlessV2に向いている特徴として以下5つが挙げられます。
・高いパフォーマンス要件に対して通常時の低い使用率
・需要予測が難しい
・スケーリングの手動運用が難しい
・スケーリングにおけるダウンタイムが許容できない
・スケーリングによってコスト効率を改善したい
上記の特徴を踏まえ、選定ロジックを作成しました。
以下フローに従うと、どのタイプを選定すればよいか検討するうえでの一助になるかと思います。
是非参考にしてみてください。
まとめ
Aurora Serverless V2は非常にフレキシブルなスケーリングを実現するサービスで、今回の事例にもありますが、正しい利用をすれば大きなコスト削減につなげることが可能です。
一方で、単純比較した場合コストは高めという特徴があるため、ケースに合わせて、選定することをおすすめします。
また、運用コストを意識すること、クラウド利用料のシミュレーション、パフォーマンスのテストは必須です。必ず実施しましょう。
この事例からわかるように、大抵の選択はトレードオフであり、何かを選択することは何かを捨てることと同義になります。すべてのケースにあった、万能なソリューションはありません。ケースに合わせて、正しい選択を心がけたいものですね。AWSのサービスも料金も変化していきますので、その変化に追従することも重要ですので、継続的に学んでいきましょう。
最後に
このような機会を設けていただき、運営いただいたメンバの方に感謝申し上げます。
クレイジーなグローバルイベントで楽しかったです。