Qiita社では去年の8月からコスト最適化プロジェクトとして、私と @wataru86 の2名が中心となり、複数のインフラコスト削減施策に取り組みました。
行った施策の大半は Qiita社でインフラコストを抑えるためにやった取り組みを公開する #AWS - Qiita で公開していますが、今回はどのようにプロジェクトを進めていったかを記載します。
施策候補の洗い出し
まず現状把握をしつつ、コスト削減できそうな施策候補を可能な限り洗い出します。
AWSのCost Explorer、Google Cloudのレポートなどを使って現在のコスト状況を確認し、費用が高い場所を中心に改善案があるか調査します。
また、過去に作成したIssueや、各メンバーの頭の中にある「こうすると安くなるんじゃないか」という施策案も収集して情報をできるだけ取りこぼさないようにしましょう。
削減額が一見小さそうな施策案でも、ここでは実施するかどうかを切り捨てずに案として書き残しておきましょう。
最後に、今後不必要なコストを増やさないための監視施策ついても考えておきましょう。今回減らせてもまた増やしてしまっては意味がありません。
施策候補の見積もり
施策候補がある程度出揃ったら、各施策の削減額・かかる工数・制約をそれぞれ見積もったり確認したりしましょう。
制約は行う時期やタスク間の順序関係などです。例として以下のようなものがあります。
- RIで購入しているインスタンスのインスタンスタイプを変更する
- 現在購入しているRIの、有効期限に近いタイミングで変更を行う必要がある
- Datadogを月ごとの契約から年間契約への切替
- ECS on EC2からECS on Fargateへの移行など、料金に影響のあるインフラの変更を一通り済ませた後に行う必要がある
施策を行う順序・アサイナーの決定
施策の削減額・かかる工数・制約がわかったら、どの施策から行うか・誰が担当するかを決めます。
コストインパクトの大きい試作と、優先度の高い制約(EOL等)がある施策を中心に考えると自然にどの施策から行うかは決まってくると思います。
誰が担当するかはメンバーのスキルや希望などを天秤にかけて決めてください。
Qiitaの場合は、コストインパクトが一番大きいものの少々骨の折れる、CloudWatchに保存していたRDSのAuditログのS3移行を @wataru86 が、インパクトはそこそこだが工数が少ない複数の施策を私がまず第一に取り組むこととしていました。
施策に取り組む
やることが決まればあとは遮二無二やっていきます。
たまに新しい施策案が見つかったりするので、その際は優先度の見直しを行ってください。
振り返りをする
施策はやりっぱなしにせず振り返りを行いましょう。
どれくらい施策によってコストダウンができたのか確認するのはもちろん、施策を進めている時のKPTも考えるとなお良いでしょう。
共有する
振り返りをしたら、プロジェクト外のメンバーやチーム外の社員に施策結果を共有しましょう。
アピールになるのはもちろん、自分達にはない視点のFBをもらえたり、そこから新たなアイデアが生まれることもあります。
最後に
今回紹介した手順は、他のプロジェクトでも大きくは変わらないと思います。
取り組み候補を洗い出して、見積もったのちに優先度を決めて取り組む、終わったら振り返りをして共有という流れはどこでも自然とやっているのではないでしょうか?
型を一度覚えると、他のプロジェクトにも応用しやすくなりスムーズに進められると思います。
プロジェクトオーナーを初めて担当する場合などは、まず先述の流れを意識してプロジェクトを進めてみると良いでしょう。