AWSのコストが最適なのかそうじゃないかわからなくて困っていた話

こんにちは。freeeでITストラテジーというチームでIT戦略的なサムシングをやっています、みり(Twitter)です。これは、freee Developers Advent Calendar 2021 - Adventarの11日目の記事です。

ITストラテジーって何やってるの

freeeにおけるITストラテジーチームは、2020年7月に爆誕しました。もともとGYOMUハックという仕事をしていた私が、IT戦略を考えていきたいと思っていたことと会社のニーズがマッチしたことによってスタートしました。

GYOMUハックについてはこちら codezine.jp

強い気持ちとしては、"ITを使って会社を成長させていくための戦略を練る"というようなことをやりたいと思っています。が、チームができてからの実情としては今までできていなかったITツールの取りまとめやフローの整備、予算と実績の管理など細々としたものを必死に整備して見える化していく一年間でした。

MISSION

freeeの中長期的な成長のために、IT戦略とそれに関わるあらゆる改善とその挑戦を全社視点でのアプローチで、 高いレベルの理想ドリブン*1と突き抜けた HackEverything★*2 を持って推進する。

freeeのカルチャーについてはこちら

数字と向き合う地味で地道で孤独な作業をちくちく行っていたわけですが、おかげで見える化と仕組み化が進み、今年度*3は少しずつ戦略的なことも考えられるようになってきました。各種ITツールの費用対効果をトラッキングしていくなどのチャレンジもしています。

大物AWSのコストとの戦い

さて、そんなこんなでITツールの予算やら実績やらと向き合っていたというお話をしましたが、弊社で利用している様々なサービスの中で一番の大物がAWSです。

2012年からAWSを利用しており、プロダクトの数が増えるに従ってエンジニアの人数も増え、それにともなってAWSのコストもどんどん増えていくようになりました。

f:id:mirygoaround:20211209164419p:plain
プロダクトリリースとエンジニア数

次第にAWSのコストが果たしてプロダクト規模に対して最適なのかがわからなくなり、予算をどう試算するのかなど様々な課題が山積みとなってブラックボックス化していったのです。

なんで困ってたの

そもそもどんなことが課題だったのかというと、

  • コストの妥当性を経営陣に説明できない
  • コストの妥当性を計測する指標がない
  • コストが増減した場合の要因把握が難しい
  • コストの予測が難しい

といったことが挙げられます。

AWSはプロダクトを横断して利用されているサービスであり、AWSの様々な機能を利用していて課金体系も機能ごとに異なるため、そもそも把握が難しいものでした。また、エンジニアが開発の際にある程度自由に利用できる環境のため、なにか大きな変更があると価格が変動する状態でした。 ITストラテジー発足以前はSREチームが善意でコスト削減を行なっていたり、予測をしたりしてくれていましたが、組織が巨大になるにつれてその体制にも無理が出てきてしまったのです。

予算との差が大きくなり、明確な担当者もいないためその要因についても詳細を説明できず、経営層の不信感が増してしまうと"エンジニアが自由に開発できる環境"を提供することが難しくなる可能性が高くなり、見える化と分析が急務となっていたのです。

どんなことをやったのか

そんな中で発足したITストラテジーの最初の任務がAWSコストの最適化でした。しかし、私自身はそこまでAWSに詳しくなくどうすればいいのか全くわからない状態からのスタートとなりました。

とりあえず、最初はインターネットの世界に答えを求めてCookpadさんの開発者ブログを知り、中の人にお話を聞くところからスタートしました。Cookpadさんではかなり仕組み化、システム化されており、本当にお手本のような世界が広がっていたのでぜひブログを読んでみてください!(宣伝しちゃった テヘ)

ということで、ヒアリングの結果インスパイアされて行なったことは以下です。

  • タグのついていないリソースにタグつけ&必須化
  • AWSの現在の利用状況の深掘り
  • 予測ロジックのみなおし
  • 毎月予測との差額の要因分析

タグつけ

AWSではリソースに対してタグを設定することができます。調べた当時は半分以上のリソースにタグがついておらず、まずはタグを設定するところから始めました。

タグを設定するにあたっては、現在利用している全てのインスタンスをCSVでダウンロードして、インスタンス名や設定されているタグの内容から最適だろうと思われるタグをスプレッドシート上で割り当てて、SREに反映してもらいました。 (インスタンス名から推測してタグをつける作業はかなり大変だったのでもう二度とやりたくないです。)

今はタグつけを必須化してもらっています!

深掘り

今まではAWS全体のコストという大きな塊で見ていたのですが、まずはサービスごとに細分化して8グループに分類してみることにしました。大きな塊で見てもよくわからないし、小さすぎてもわからないので、とりあえず以下の8分類に分けています。

  • EC2
  • RDS
  • S3
  • OpenSearch
  • その他サービス基盤ツール
  • その他ツール
  • 分析系
  • セキュリティ

サービスの特性と、利用しているアカウントからそれぞれ分類しています。

f:id:mirygoaround:20211209192030p:plain
分類されたグラフ
直近はEC2が増えていますね。どうにかしないといけません。

予測

今までの予測は全体の金額をトレンドラインで予測して見ていましたが、今は分類ごとに分けてそれぞれの予測ロジックをたてています。分類によって予測精度を出し、どれくらいずれが発生する可能性があるのかも合わせて出すようにしました。 EC2やRDSなどは、アクセス数や季節性なども考慮して予測を立ててみました。

これによって、以前よりもぐんと予測精度は上がりました👏

分析

予測の精度は上がったとはいえ、完璧ではないのと予想外の増減は発生します。そこで毎月請求額を分類して、予想外の動きをしているものをCost Explorerで見つけて、タグなどをみてなんの要因で増減しているのかまで確認するようにしました。

タグつけや分類ごとにわけたことによって、誰に聞けばわかるのかまで特定できるようになり、分析の時間がかなり短縮されました。Cost Explorerをぽちぽちしていろいろなフィルタをかけて、グルーピングして内容を見るのがとても楽しいです。

あえて共有

分析がいろいろできるようになったことで、よりAWSのコストの内訳がわかるようになりました。そこで、ITストラテジーでは次の取り組みをしています。

SRE定例

AWSの変更に真っ先に気付けるのがSREチームです。エンジニアが環境を変更したりする際、必ずSREに相談が行くため、直近のリリース予定も把握していたりします。

そのためSREと毎月定例を行い、コストが増えた要因はなにか、コスト削減施策や調査の進捗確認を行なっています。 これによってある程度コスト増減の予測がたつようになりました。SREのみなさまには本当に頭が上がりません。

エンジニアへの分析結果レポート

現場の最前線にいるエンジニアにもAWSコストの分析結果を共有することにしました。自分たちの開発によってどれくらいのコストがかかっているのか、というところを少しでも知ってもらう取り組みです。

そこで個人的にかなり気を使ったのが、カネカネうるさくして窮屈に感じさせないこと、でした。 あくまでも、無駄使いに気をつけよう、コストが増えそうな時は教えてね、という精神で押し付けがましくならないように表現などに気を使って社内共有しています。

この匙加減はかなり難しいのですが、今のところどんな感じか聞いてみた人には押し付けがましい感じはしないというフィードバックをうけているので、これからも気をつけて発信していこうと思います。

個人的に一番嬉しかったのは、こうして発信するようになってからエンジニアの皆さんがITストラテジーにいろいろ事前に教えてくれるようになったことです!

AWS投資委員会

もともとの課題で一番困っていた経営陣とのコミュニケーション。これは、3ヶ月に1度の定例を設け、分析結果とこれからの予測を共有するようにしました。そこで経営陣からのフィードバックを受け、さらに報告内容をブラッシュアップしています。

  • 予実差の要因
  • 精度が高めの予測ロジック
  • 影響の大きい施策&コスト削減施策
  • vs ARR、vs アクティビティ数 etc

といった内容を、報告しています。

たとえばOpenSearchの利用コストが増えたときに、OpenSearchがどのような効果を出していて、その効果が増えたコストに見合うのかなどを考えるために必要な数字を出したりします。

f:id:mirygoaround:20211209195613p:plain
OpenSearch導入前後の性能比較

この定例は個人的に成長ポイントでした。経営陣がどういったことを考え、どういう情報が欲しいということが最初はわからず、今思えばかなり曖昧な内容になっていたと思います。 フィードバックを受けて回を重ねるごとに内容が精査されて、喜んでもらえるようになったので、もっと頑張ろうと思います。やっていき。

さいごに

いろいろチャレンジをしてきましたが、まだまだ頑張りが必要です。予測精度をもっとあげたり、コスト削減を頑張ったりと、まだまだチャレンジが続きます。

AWSのコスト最適化に大事なことは、

  • 徹底的な見える化
  • 現場との良好なコミュニケーション
  • 地道な努力と折れない心

だと思うので、同じような悩みを抱えている方に届くといいなと思います!正直私は何度も心が挫けました。笑

また、ITストラテジー的にはAWSだけでなく他の全てのIT戦略を考えていかないといけないので、ロジカルで攻められるように頑張っていきます。ということで、FinTechやCCoE頑張ってる人と仲良くなりたいので、ぜひ連絡ください!!!

読んでくださりありがとうございました🤗

明日は、freeeのAPI番長 Nickさんの担当です!お楽しみに!

*1:理想から考える。現在のリソースやスキルにとらわれず挑戦しつづける。

*2:取り組んでいることや持っているリソースの性質を深く理解する。その上で枠を超えて発想する。多くのことは楽しいだけで よりインパクトが大きくなる。

*3:7月が年度始め