💰

AWS Aurora で I/O-Optimized を使ったらコストが半額になった

2024/05/01に公開

背景

NE株式会社の SRE チームでは業務の1つにコストの監視があります。
日々インフラの変更が行われていく中で想定通りのコスト変動が起きているかどうかを確認する作業は予算にも関わる業務であり、重要であると考えています。

その中で、弊社が提供するサービスは以前から Aurora のコストがその大半を占めていることが分かっていました。10年以上続くサービスではありますが、いわゆるレガシーコードはやはり存在しており、それは Aurora への読み書きのコストにも影響している側面があります。

継続的な改善をしている背景はありつつも、既存の重要なロジックに関わる処理のリファクタや SQL の最適化は非常に困難を極めています。

そんな中で Aurora v3 への更新が行われることになりました。
v3 ではストレージのコストとインスタンスのコストを通常よりも多く支払うことで読み書きのコストを 0 にすることができる I/O-Optimized という料金体系が使用可能になります。

この料金体系は Aurora への読み書きが多い弊社のアプリとマッチするのではと考え、適応してその効果を測定することにしました。

削減量を見積もってみる

まずは I/O-Optimized に変更した時にどの程度コストが削減できるか計算してみます。
AWS 公式の RDS の料金体系の説明を見てみます。

東京リージョン(ap-northeast-1)における利用料金は以下の様になっています。

コンポーネント Aurora Standard Aurora I/O 最適化
ストレージ料金 USD 0.12/毎月の GB あたり USD 0.27/毎月の GB あたり
I/O 料金 USD 0.24/100万リクエスト 利用料に含まれる

通常プラン(Aurora Standard)と比較してデータを保存しておくストレージのコストについては 125% 増加、I/O 料金が背景でも説明した通り タダ になります。

また、インスタンス料金に関しては通常プランと比較して 30% のコスト増加が行われます。

CPU や メモリ性能にも依存しますが、つまるところ(効率的ではない)SQL をどれだけ実行してもリクエストに対するコストが増加しないということになります。

以上をまとめると、ストレージ料金の差分 + インスタンス料金の差分 < I/O 料金 の条件を満たしているのであればコストの削減が可能ということになります。

弊社の事例

以前から I/O 料金の占める割合が高いと言われていたサービスについて I/O-Optimzied 一部適応し、試験的に運用して効果測定を行います

通常プラン

下図は I/O-Optimzied 適用前の料金の試算です。
※ 下図には載っていませんが実際にはインスタンス料金が掛かっており、18.83 を足した $ 50.56 が実際のコストです。

I/O 料金が 30.76、インスタンス料金 + ストレージ料金が 19.45 となっており、約 60 % が I/O 料金に費やされていることが分かります。

I/O-Optimized

続いては I/O-Optimized に変更した時の料金です。
※ こちらの図にはインスタンス料金が含まれています。

I/O 料金が 0 になり、インスタンス料金 + ストレージ料金が微増して 25.77 となっています。

比較

効果測定の結果を表にまとめてみました。

コンポーネント Aurora Standard Aurora I/O 最適化
インスタンス料金 18.83 USD/day 24.28 USD/day
ストレージ料金 0.62 USD/day 1.49 USD/day
I/O 料金 30.76 USD/day 0 USD/day
合計 50.21 USD/day 25.77 USD/day

通常プランと比較すると全体で 約 50% のコスト削減になっていることが分かります。

まとめ

今回の事例では、料金プランを変更するだけで Aurora のランニングコストが半分になりました。

しかしながら、読み書きの量が減ったわけではなく CPU やメモリに関する使用量はそのままです。サービスの規模が大きくなるとデータベースの読み書きの量が必然的に増えてゆき、サービス維持のためのコストの多くがデータベースに掛かってしまうことが散見されます。

今後もコストをモニタリングを行いコストを削減していく施策を続けつつ、SQL のリファクタによって読み書きの量自体も減らしていく取り組みをしていきたいです。

NE株式会社の開発ブログ

Discussion