ど素人社内SEが売上数千億の会社でCCoEもどきなことをしている話(3)-恐怖のコスト編
※注意
誰の役にも立たないとは思いますが、アウトプットの練習も兼ねてこれまで経験してきたことを整理したくて書いています!「今後書いていく技術ブログもこの程度のゆるさか」と分かってもらえると、ハードルが下がるので嬉しいです(笑)
この記事は(1)、(2)を先に読んでいただくことをおすすめします!m(__)m
4. コストが恐い((((;゚Д゚))))ガクガクブルブル!!
利用したいという部門がどんどん増えてきました。
アカウント管理の考え方としては、以下のような役割分担で運用していました。
- 全体環境に関わるアカウント:情シス部門(僕ら)が管理
- 各システムの個別アカウント:各ビジネス部門(現場)が管理
「アカウントごとに請求が分かれるから分かりやすいはず!」と思っていたのですが、現実はそう甘くありません。以前の記事でも書いた通り、現場の担当者がAWSに精通しているわけではないのです……。
その結果、 「意味不明なコスト」 が発生しては、
「クラウドにしたから高くなったじゃないか!(# ゚Д゚)」
というお叱りをたくさん受けることになりました。
実際に震え上がった事例をいくつかご紹介します。
事例①:S3の「怨念」ファイルたち
- 事象:バックアップ用S3バケット。古いファイルを消す設定にしていたはずが、実は裏で生き残り続けてコストを垂れ流していた。
- 被害:約1年間放置。気づいた時には……(うっ、頭が……!(>_<))
-
理由:ライフサイクル設定で「現行バージョンの削除」は入っていましたが、「非現行バージョン(以前のバージョン)」の削除設定が漏れていました。
※別件で「S3 Storage Lens」を使って調査したついでに全体見てみよーと眺めていたときに、異常なデータの量を見つけてマジで震えました。
事例②:エラーでも消えない「ゾンビEC2」
- 事象:AWS Step Functionsでバッチを回していたが、エラー終了した際に起動したEC2が残り続け、コストが爆増。
- 被害:1ヶ月で僕の月収以上の請求が……(あっ、フラフラする(;´・ω・))
- 理由:単純にシステムのエラー処理(例外処理)が不十分で、異常終了時にEC2を落とす処理が動いていませんでした。「エラーになったから再実行」を繰り返すたびに、ゾンビEC2が倍々で増えていく地獄絵図でした。
事例③:RI(リザーブドインスタンス)を買ったのに安くならない!
- 事象:コスト削減のためにRIを購入したはずが、なぜかEC2のコストが以前より高くなる。
- 被害:これも月収超え……(もうだめ、バタッ(´゚д゚`))
- 理由:RI購入前に検証で使っていた 「オンデマンドキャパシティ予約」を解除し忘れていました。
恐ろしい経験から学んだ対策
これらの失敗を経て、血の滲むような思いで学んだことは一つ。
「大原則:コスト算出(見積もり)をせずに利用しだすな!!」
どのケースも、最初に「どうなったら課金が止まるか」をしっかり握らずにスタートしていました。運用が始まってから請求書を見て驚いても、その時にはすでに「ムダ金」が確定しています。
これを受け、全体管理側(CCoEもどき)として以下の運用を徹底することにしました。
- 異常検知の強化:Organization全体で、前月比でコストが跳ねているアカウントをチェック。
- 通知の「横取り」:各アカウントへのAWSからのお知らせメール通知メールを全体管理側へも飛ばし、月1回は「危ないやつ」がないか確認。
- AWS Budgetsの設定:予算設定がないアカウントには、設定を強く依頼。
- 重要PJへの介入:規模の大きなプロジェクトには、設計段階から参加させてもらう。
どれも当たり前のことなのですが、この「当たり前」を徹底するのがいかに難しいかを痛感しました……。
恐ろしいので、皆さんは私の真似をせず、最初からコストはしっかり管理してくださいね。
次回は、通知量に絶望!!!大量のセキュリティアラートに悪戦苦闘したお話をさせていただきます!
追伸
こういう記事を書くのは初めてなのですが、「いいね!」がついていると地味にやる気が出るので、優しい方はポチッとしていただけると嬉しいです!笑
(次回へ続く)
Discussion