見出し画像

AWS費用一割カットできるかな?

はじめに

はじめまして、株式会社ココペリでSREグループマネージャーをしている高橋です。
ココペリのSREグループでは様々なタスクに取り組んでいますが、今回は上期に実施したAWSコストの削減についてお話しできればと思います。同じ課題に直面している方の一助になればと思います。


コスト削減の基本

コスト削減を行うに当たって弊社が気をつけた点は以下の5点です。これらの点を意識しながらコストカットに取り組みました。

1.コストカットを目的としない(超重要)
事業に対する費用対効果を意識 (効果を上げるか、費用を下げるか)
・落とすのは「贅肉」だけ。必要な「筋肉」まで削らないようにする
2.会社の利益にコミットできる手段
利益 = 売上 - コスト。コストを下げることは売り上げを上げることと同義3.削減額と必要な工数は常に意識
削減できる額が高くても実施に時間が掛かったり工数が高い施策は優先度を下げる
4.削減効果が高い物から優先的に実行
発生するコストは時間とのかけ算。効果が高い物からなるべく早く実行する
5.削減コストは可視化して他の部署・チームに随時共有
お願い事の協力を得やすくなる・助けてもらいやすくなる
・会社全体への意識付けにもなる

これらの点を常に頭に入れておくことで、最後までぶれずに取り組めたと思います。

具体的な削減戦略

それでは弊社が削減を行った際のフローを振り返ってみます。
コストの発生源は無数にあり1度の調査では中々出きらない場合もあるため、実際には1~5番の対応を何度も回していくことになります。

1.まずはCost Explorerをくまなくチェック
直近一週間分をくまなく見る
・続けて一ヶ月〜三ヶ月程度のトレンドも見る
  ・月初はWorkSpaceなどの月額料金が課金されるタイミング
  ・その他動かしているサービス次第では増加するタイミングも

削減当初のCost Explorerの様子

2.サービス毎にコスト要因を深掘り
サービスでフィルター後、ディメンションで使用タイプとAPIオペレーションそれぞれ設定してみてコスト要因を深掘り

Cost Explorerのディメンションで使用タイプを指定したときのグラフ

3.CloudWatch、CloudTrailなどからさらに深掘り
CloudWatchメトリクスやCloudTrailログなどでさらに深掘り
・S3 Storage Lensのように分析機能が備わっている場合も

CloudWatchメトリクスのグラフ
CloudTrailのログを集計した様子

4.削減できるコストと対応に必要な工数を見積もり
削減できそうなコストが高いからといってすぐ飛びついてはいけない
・削減できるコストとそれに必要な工数をしっかり意識する

5.リスト化して優先順位が高い順に実施
優先順位は削減予定コストと必要工数の比率
・実施前に実施して良いか関係各所に確認
 ・大抵の場合出来ていたことが出来なくなる
 ・理由と削減額も伝えて納得してもらう

事例紹介

ここからは弊社で行ってきたコスト削減の事例をご紹介します。 これがそのまま他の環境で出来る訳ではありませんが参考になればと思います。

1.RDSログ出力停止
RDSのクエリログの停止
・CloudWatch Logsのロググループ一覧からログサイズ肥大化を確認
・開発で使っていないか、会社的に停止して良いのか確認
・パラメータグループのlog_statementを変更

CostExplorerでDataProcessing-Bytesが減った様子

2.S3コスト最適化
S3ストレージクラスの変更とバックアップスクリプトの改修
・Storage LensとCloudWatchメトリクスからサイズ肥大化を確認
 ・利用部署に利用用途の確認・削減の相談
 ・ストレージクラスの変更
 ・最小サイズ、追加料金、最小期間など注意

Cost ExplorerでTimedStorageが減った様子

3.ECSネットワークモード変更
高頻度ECSバッチタスクのネットワークモードの変更
・CloudWatchとCloudTrailからConfigへの記録が増えていることを確認
 ・タスク開始&終了でConfigへの記録が複数回行われる
・Fargate -> EC2 (ブリッジモード)に変更
 ・EC2のENIが共用で使われるためConfig記録のコストが抑えられる

Cost ExplorerでConfigurationItemRecordedが減った様子

4.その他
EBS容量削減・ボリュームタイプ最新化
・DynamoDBプロビジョンドキャパシティ変更
・EFSプロビジョンドキャパシティ変更
・ElastiCacheサイジング
・ログ出力改修 (開発チームに依頼)
・Workspace整理
・Container Insights無効化
・不要サブスクリプション削除
など

コスト増加の事例と対策

順調に無駄なコストを削減していく一方で思いがけずコストが急騰してしまう場合もありました。
このような場合は増加額に応じて適切に優先度を設定し、折角削ったコストが帳消しにならないよう迅速に対応していく必要があります。

1.セキュリティアプライアンス暴走事件
S3のアンチウイルスサービスの料金が突然爆上がり
・費用対効果の問題で優先度が低かったオブジェクトアップロード削減対応を急遽実施して解消

アンチウイルスサービスの利用料金が上がった様子

2.NAT Gateway通信量高騰事件
Cost ExplorerのEC2その他の料金が突然上がる
・Cost Explorerから対象のアカウント・サービス・利用タイプを絞りNAT Gatewayに原因を絞る
・CloudTrailログ+アプリケーションログから利用ライブラリの不具合が原因で短時間にECSタスクが立ち上がり続けた事が判明
 ・ECRからのイメージpullが原因

CloudWatchメトリクスで当該NAT Gatewayの通信量が急増している様子

成果と今後の展望

これまでの取り組みにより表題の通り昨年比1割削減に成功しました。
SREだけではなく事業部全体の取り組みの賜物です。今後も様々な視点から模索しながら更なる効率化とコスト削減を目指していきます。


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