見出し画像

[AWS]RDSのI/O-Optimized有効化でスケールアップしつつもコスト削減


概要

株式会社Goals SRE所属の間橋です。 弊社のサービスはAmazon Web Service(以下AWS)を利用しており、RDSのコストを大幅に削減できたのでその内容を記事にしました。

AWSとは

AWSとは、Amazonの関連会社であるAWSが提供しているクラウドサービスです。他クラウドサービスとしてGoogle社のGoogleCloudやMicrosoft社のAzureなどがあります。クラウドサービス開始したきっかけとしてはECサイト側で管理している膨大な在庫や受発注管理するためのサービスが当時は存在しなかったようで、「であれば自社で作ればいい」となり始まったサービスらしいです。

課金形態

AWSのクラウドサービスは従量課金性です。使ったら使った分をお支払いというスタイルで、全く使わなければアカウントは存在していたとしても支払いは0円です。さらに初回は無料枠というのがあり、ある程度利用したとしても料金はかかりません。(2024/1/29時点)

何にコストがかかっていたのか

タイトルでも記載はあるのですが、弊社でコストがかかっているのはデータベース Amazon Relational Database Service (Amazon RDS)のAmazon Auroraというサービスです。ちなみにAmazon AuroraはAWS独自のデータベースエンジンでMySQL、PostgreSQLと互換性があるだけで実際は別物になります。余談ですが、Amazon Auroraという名称は「クラウド(雲)の上にある」というところからきているらしいです。Amazon Auroraの主な課金される内容は以下の通りです。

  • CPU/Memory

  • ストレージ

  • Input/Output(以下I/O処理)

CPU/MemoryやストレージはiPhoneやMacなどを例にすると性能が良いほどコストがかかるというのは想像しやすいのかなと思います。ただ、弊社で特にコストがかかっていたのはI/O処理であり、AWSのコスト半分ぐらいを占めていました。

I/O処理でのコストイメージ

I/O処理はシステムにおいて書き込みと読み込みで当たり前の処理です。当初コストだけを見た時にAWSのコスト単価高すぎじゃ。。と率直に思いました。ただ実際1ヶ月分のI/O 処理の数字を原稿用紙に例えてみると350万枚分ほどの処理を行っている計算になり、コストがかかっているのも頷けるかなと納得した覚えがあります。



対応内容

入社前の面談時、Amazon RDSのコストが問題になっているということは伺っていたので、リザーブドインスタンス(年間契約することでの割引)などでコスト対策は図れるなと考えていたものの、当時はアプリケーションの実装でI/O処理を減らすしか対策はありませんでした。そんな中2023年5月AWSから魅力的なアップデートが展開されます。

I/O 最適化とは

色々記載がありますが、端的に言えば、CPU/Memory、ストレージの料金に上乗せ課金してもらえればI/O処理の金額は支払いしなくていいよ。ということです。I/O処理がそこまでなければ損してしまう可能性がありますが、弊社はI/Oのコストが非常に高いので有効化することでコストメリットがでるのは明確だったため有効化する方針で決めました。

有効化までの障壁

I/O 最適化を有効にするにはPostgreSQL 14.7以上が必要でした。当時弊社で利用していたのは14.5であったためアップグレートが必要でしたが、マイナーバージョンアップグレードであったため影響は軽微であろうということで検証環境のアップグレードを行いました。アップグレード後、QA担当者から連絡があり14.5では5分ほどで完了するクエリ処理が30分以上かかっているとのことで、AWSサポートと協力しながら色々切り分けたところどうやらAurora PostgreSQL 14.7以上のみで発生する事象らしく性能が劣化する原因および対策を検討する必要がありました。

障壁をどう乗り越えたか

結論からいうと障壁に対して僕は何も実施していませんw 弊社のスーパーエンジニアが問題となっていたクエリを発行する必要がないことをキャッチしリリースしてもらったおかげで性能劣化することがなくなったため、一気にアップグレードする計画を進めることができました。


結果

問題となっていたクエリは発行しなくなったものの、それ以外にも性能が劣化する処理がある可能性を捨てきれなかったためI/O最適化の有効化に合わせてスケールアップも実施しました。本来であればスケールアップするとコストがあがるのですが、I/O最適化のコスト効果が大きく、結果的にコスト削減になりました。

RDSコスト

まとめ

僕はSRE所属でしたが、チームの垣根を超えて各々がオーナーシップをもって対応やキャッチしていただけたおかげでI/O最適化有効とコスト削減をトラブルなく完了することができました。対応するまでに時間がかかってしまいましたが、エンジニア組織としての醍醐味みたいなのがここにあるのかなと実感できました。コストを下げてサービスの品質を保つ というのは飲食で例えるならば今まで一万円で美味しい料理を提供していたのを千円でできるようにする ということに似ていると感じており、ビジネスという大きな枠組みでは分野問わず同じ課題だったりするのかもしれないと思っています。

この記事が気に入ったらサポートをしてみませんか?