記事の内容
CAMPFIRE社内で使用している検証環境(社内では、QA環境と呼ばれている)をSlackから停止して、コスト削減した話
自己紹介
こんにちは、CAMPFIRE SREの榊原です。
本日はCAMPFIREアドベントカレンダーの一つとして、QA止める君(SREチームの方が命名してくれました笑)についてお話したいと思います。
CAMPFIREの検証環境について
検証環境って大切ですよね。
新しい機能をリリースする際に、ローカルだけではなく、ちゃんと本番と同じ構成のインフラ上で動作させて、挙動を確認したり。
企業によっていろいろな検証環境があると思います。
例えば、
- 小規模なスタートアップでしたら、プロダクション環境とステージング環境のみがあって、ステージングで動作確認をする
- 中規模な企業でしたら、ステージング・プロダクションとは別に、検証環境用のインフラがあり、そこにリリースして、検証が終了したら、他のエンジニアに譲る(一つの検証環境をみんなで使い回す)
などなど。
CAMPFIREの検証環境(QA環境)
CAMPFIREでは、githubのブランチに qa
というプレフィックスをつけてpushすると、自動で検証環境が一つ出来上がるようになっています。
そのため、アプリケーションエンジニアは、自分が作りたいだけ検証環境を作成することができます。
この環境は、非常にエンジニアフレンドリーで、QA環境の取り合いが起こることがないのですが、1点問題があります。
コスト問題
それは、コストが肥大化すること。
CAMPFIREのインフラ構成は、ECS(EC2)で動いているため、検証環境の数だけEC2が増えていきます。
定期的に検証環境を削除するバッチが走っているのですが、データを保持し続けたい検証環境も存在するため、高頻度で削除バッチを回すことができず、ちょっとした修正の検証環境も1週間ほど残り続け、コストが肥大化する問題がありました。
QA止める君
そこで、QA止める君(SREチームの方が命名してくれました笑)を作成しました。
QA止める君の概要
QA止める君は
- slackのアクションにて、現在のQA環境一覧を取得する
- 停止したいQA環境を選択
- 停止ボタンを押す
だけで、作成したQA環境を停止することができます。
コスト削減できたのか?
はい!
CAMPFIREでは、DatadogとAWSを連携して、毎月のコストを確認しています。そこで、QA環境のみのEC2のコスト推移を確認しているのですが、QA止める君の導入以降、QA環境のコストが削減できました。
QA止めるくんの技術構成
- slack
- API Gateway
- Lambda
にて作成しています。
slackからAPI Gatewayのエンドポイントを叩き、API Gatewayと連携したLambdaが停止の処理を行っています。
まとめ
コスト削減は大事!
SREチームは基本的にユーザーが直接使う機能をリリースしないため、サービスの売上への貢献度が曖昧になりがちです。
しかし、コスト削減は確実に会社の利益に直結するかつ、SREの腕の見せどころでもあるため、これからもコスト削減に取り組んでいきたいと思います!
We are hiring
CAMPFIREでは、一緒にCAMPFIREの信頼性を担保してくれるSREエンジニアを募集しています。
少しでも、興味がある方は、是非、応募してください!