この記事は、Ateam LifeDesign Advent Calendar 2024 の記事になります。
はじめに
現在、Aurora MySQLを使用しており、毎年12月時点でリザーブドインスタンスを購入していました。
今後、リザーブドインスタンスのことを、RI
と記載させていただきます。
今年もRIを購入しようとしたとき、ふとチームで「Serverlessにしたらどうかな?」と声が上がりました。
Serverless
に関して、何となく料金が安くなる?ぐらいしか理解できていなかったので、これを機に調査して、乗り換えるか検討をしてみました。
本記事では、Serverlessに乗り換えるかを検討した内容を記載させていただきます。
本記事の対象者
- Serverlessについて、ざっくり理解したい方
- Serverlessに乗り換えを検討している方
解説していないこと
- Serverlessの構築手順
- 実際の運用例
結論
最初に結論ですが、今回はServerless
ではなく、RI
を購入しました。
「今回は」と記載したように、乗り換えを全て諦めたわけではないです!
ただ、なぜRI
を購入したかの理由を、以下に記載していきます。
Aurora Serverless とは
その前にまずは、ざっくりとServerless
を解説いたします。
Amazon Aurora のオンデマンドの自動スケーリング設定です。アプリケーションニーズに応じて、自動的に起動、シャットダウン、および容量をスケールアップまたはスケールダウンします。
記載の通り、Serverless
では、自動的にスケーリングを行います。
これにより、需要に応じてリソースが動的に割り当てられ、高負荷時にもパフォーマンスが維持されます。一方、オンデマンドインスタンスを使用する場合、手動でインスタンスを追加しなければならないことがあります。容量が不足するとインスタンスを追加する必要があり、逆に容量が余っているときにはリソースを無駄にしてしまう可能性があります。
↑ 上記を見るだけだと、「お、料金安くなりそうだなぁ」と思いますよね。
次に料金を見ていきます。
料金
(※ Serverless v2の料金で見ていきます。)
測定 | リージョン | Aurora Standard(ACU時間あたり) |
---|---|---|
Auroraキャパシティーユニット | アジアパシフィック(東京) | USD 0.15 |
上記のようになります。
ここで、ACU
という単位が出てきたので、調べてみます。
ACU
Aurora Serverless v2 の単位は Aurora 容量単位 (ACU)になります。
各 ACU では、約 2 ギビバイト (GiB) のメモリに相当します。
となると、オンデマンドインスタンスと比較すると、以下の通りになります。
オンデマンド | Serverless |
---|---|
db.t4g.medium(4GiB) | 2ACU |
db.r7g.large(16GiB) | 8ACU |
なので、現在使用しているインスタンスと比較して、計算してみると良いかなと思います。
ここまでわかったら試算!と行きたいところですが、先ほど記載したように、Serverlessは、自動でスケーリングしてくれます。
なので、次はスケーリングに考慮していきます。
スケーリング
オンデマンドインスタンスは、db.t4g.medium
でいうと、常時4GiBを使用しています。
Serverlessは、常時ではなく、使用量によってスケーリングしてくれます。
では、どのようにスケーリングを想定していくかというと...。
こればかりは、実際に運用してみないとわかりませんでした。
Cloud Watchなどで、CPU利用率などをみて判断することは一定できますが、実際Serverlessが、どういう挙動でスケーリングするかは、調べてもわかりませんでした。
ここでは、以下のように仮定しようと思います。
- 9:00 ~ 20:00の11時間は、営業時間に該当するため、
2ACU
とする - 残りの時間は、
1ACU
とする
ここまで出せたら、いよいよ試算になります。
試算
オンデマンドとServerlessで、db.t4g.medium
をもとに、それぞれ比較してみようと思います。
ストレージ使用量やI/Oも料金に含まれますが、インスタンスによって料金が変わる箇所ではないので、試算には含んでいません。
オンデマンド
RI:710 USD/年 = 約60 USD/月
Serverless
(2ACU × 11時間 × 0.15USD) + (1ACU × 13時間 × 0.15USD) = 3.3USD + 1.95USD = 5.25USD/日
5.25USD/日 = 162.75 USD/月
月で比較すると、約100 USD分
、Serverlessの方が高くなります。
1 USDを160円で計算すると、月で16,000円になります。
料金は高くなっていますが、Serverlessのメリットと比較しても、許容できる料金かなとは思いました。
まとめ
ただ、まだわかっていないこともあります。
- Serverlessに移行する際の開発工数
- 今後の保守性
料金試算と上記あたりを事業と会話して、今回はRI購入という結論になりました。
RIは1年間の購入にしたので、この1年間でstaging等での検証をしていこうと思います。
最後に
今回は、db.t4g.medium
で比較してみましたが、実際の運用しているサービスで比較する材料になっていただければ、幸いです。
最後までご覧いただき、ありがとうございました。