こんにちはUTです。 この記事は Gunosy Advent Calendar 2023 の 18 日目の記事です。 17 日目の記事は k.oshiro さんの 社内勉強会での発表内容の紹介 〜MessagePackの仕様を読む〜 - Gunosyデータ分析ブログ でした。
最近広告チームからLLMのチームに異動したのですが、今回紹介する話は広告チームでの話になります。
今年は円安だったのでクラウドインフラコストを削減するというネタをいくつかアドベントカレンダーで流れてくるのを見ました。 例にもれず、自分のチームでもコスト削減をしようという話があがりました。
しかし、以下で記事を記載した通り大きなコスト削減はすでに実施しており、大幅な削減は見込めない状況でした。
そこでコスト削減をする箇所をひねり出す必要があり、今回はその際に実行したことを紹介しようと思います。
やったこと
コスト削減は現在進行系で進めていますが、今回は何を実施したかではなくどのように進めているかに焦点を当てて紹介していきたいと思います。
コスト削減のフォーマット化
大きな削減対象があれば、それ一つに取り掛かることで削減が期待でき成果もしっかり出るので、そのタスクに集中すればよいかなと思います。 しかし、ある程度大きなコスト削減をしてしまうと、あとは残った小規模なものを実施していかなければなりません。
そこで、以下のようにスプレッドシートを作成し、チーム全員で思いつく限り削減案を書いてもらいました。
スプレッドシートを図にあるようなカラム構成にしました。
- タイトル
- 起票者
- 概要
- 削減見込み:実施することによる削減費用の見込み
- 工数:細かい工数を出すのは大変なので、ざっくり
- 実際に発生する作業:ざっくりどんなことをするか想像ができる程度に
- 優先度:実際の優先度
- 担当者:担当者
- 削減結果:削減結果
これらを書き出す理由は、どれに取り組めば一番コスパよく削減できるかを可視化するためです。 細かい簡単な改善のタスクはたくさん出すことはできますが、実際時間は有限なので何を実施して何を実施しないかを決める必要があります。
コストエクスプローラ
AWSであれば、コストエクスプローラとにらめっこするのが大きな削減を見つける方法の一つになります。
AWSのサービスごと、タグごとなど色々なグルーピングからコストが大きくかかっているところを見て削減幅は無いかをドリルダウンしていきます。
担当していたチームは広告だったので、特にS3のコストが依然として大きく、ここから探していくことになりました。
SREチームとの相談
弊社では基本的にプロダクトチームでインフラからアプリケーションまで面倒を見ているので、コスト削減に関してもチーム主導で動いています。
弊社のSREチームは、セキュリティやクラウドインフラのベストプラクティスなどを検討しているチームとなります。 いろんなチームのクラウドインフラを見ているので、細かいプロダクトのドメインはわからなくても、アイディアは色々持っています。
そこで、プロダクトチーム内のブレストとは別に、SREチームともコスト削減のブレストを行いました。 結果、自分たちが完全に見落としていた削減案が提案され、別視点での提案の重要性を感じることができました。
削減例
1. S3の不要なログの削除
とりあえずで取っていたログなど、特に使っていなかったものを削除しました。 また全期間保存する必要が無いログに関して、lifecycleを設定しました。
2. k8sのpod数の削減
直近以下のようなAPIサーバーの安定性に対して修正を行い、少ないpod数でさばけるようになっていたのですが、 pod数を減らしていなかったので、段階的に削減しました。 さらにノードのサイズも小さくしていき、クラスタ全体をスリム化しました。
3. 各種スナップショットを削除
RDS,EBS,Redshiftなどなどスナップショットは意外に使い終わったあとも消さずに放置しがちです。 特にRDSやRedshiftなどデータ容量が多いもののスナップショットはそれだけで結構コストがかさみます。
今回そこまで削減幅はありませんでしたが、時間対比では重要な削減でした。
まとめ
今回はすでに大幅なコスト削減を実施済みの状態から、更なるコスト削減をどうひねり出したかを紹介しました。 削減例で記載しているものは当たり前のものですが、どうやって削減案を出していくかのところに焦点をおいて記事を作成しました。
うまく複数人で考えられるよう仕組み化して効率的に仕事を回す方法を引き続き模索していこうと思います。
読者のみなさんの参考になれば幸いです。