TT Lab
はじめる
学ぶ 学習パス コース

コストとアーキテクチャ判断

請求書を読んで減らす

TT Labで続きを見る

目標

クラウドのコストは、どこに付いているかを知らなければ減らせません。 そして、たいてい「高いもの」ではなく、「何もしていないのに起動しているもの」に付いています。

あるチームの1か月分の請求書が、項目に展開されています。読んで、直して、どれだけ減ったかを確認します。

開始

cp -r /opt/lab/cost/* . && python3 cost.py

合計はおよそ$3,191になります。

ファイル

ファイル 役割
architecture.json 料金とリソース。これを直していきます
cost.py 項目別に計算します。直しません

各リソースの메모を必ず読んでください(韓国語で「メモ」を意味するフィールド名です)。無駄は、数字ではなくメモに書かれています。

採点

ステップ3からは、採点ツールが自分のarchitecture.jsonで直接計算します。 数字だけを書いて出しても通過しません。

ステップ

  1. 項目別の比率 → 01-breakdown.txt
  2. 遊んでいる時間 → 02-idle.md
  3. 直すとどれだけ減るか → 03-fix-idle.txt
  4. スナップショットの保管 → 04-snapshot.txt
  5. 経路の変更 → 05-path.txt
  6. AZ間のトラフィック → 06-az.md
  7. 使っていないもの → 07-unused.txt
  8. 整理 → 08-notes.md

参考

料金は、事業者やリージョンごとに違います。重要なのは、桁と「何が何に比例するか」です。

請求書を項目に分ける

/opt/lab/cost/をコピーしてpython3 cost.pyを実行し、最も大きい項目3つとそれぞれの比率を01-breakdown.txtに残してください。

cp -r /opt/lab/cost/* . && python3 cost.py

コストを減らすとき、最初にやることがこれです。項目に分ける前は、どこに手を付けるべきかわからず、たいてい目に付くもの(=小さいもの)から手を付けてしまいます。

合計は、おおよそ$3,191になるはずです。

最も大きい項目が実際にどれだけ稼働しているかを見る

1位の項目の메모を読み、実際に稼働している時間と請求される時間を比較して、02-idle.mdに書いてください(韓国語で「メモ」を意味するフィールド名です)。

architecture.jsonの메모を見てください。1日2時間のバッチなのに、インスタンスは730時間起動しています。

コストの90%以上が、何もしていない時間に付いています。 クラウドのコストで最もよくある無駄で、CPU使用率だけを見てもわかりにくいものです。平均が低くても「元々そういうワークロード」と見過ごしてしまうからです。

直すとどれだけ減るかを確認する

architecture.jsonをarchitecture.jsonのまま残してコピーを作り、バッチが実際に必要な時間だけ動くように直してください。ファイル名はarchitecture.jsonを上書きしてもかまいません。直したあと、python3 cost.pyの結果を03-fix-idle.txtに残します。

1日2時間×30日=60時間です。가동시간を730から60に変更してください(韓国語で「稼働時間」を意味するフィールド名です)。

採点ツールは、自分のarchitecture.jsonで直接計算して確認します。数字だけを書いて出しても通過しません。

1行直して、どれだけ減ったかを見てください。これが「どこから手を付けるべきか」の答えです。

消していないものを整理する

スナップショットの項目のメモを見て、保管ポリシーを決めたうえで、その分だけ減らして04-snapshot.txtに書いてください。なぜその期間なのかも書きます。

7か月分の日次スナップショットがたまっています。30日保管にすると、およそ7分の1に減ります。

保管期間は、コストではなく復旧要件が決めます。 「どれだけ古い時点まで戻れなければならないか」に答えがあり、その答えがなければ誰も消せません。だから7か月分がたまります。

経路を変えてなくすコスト

NATの項目のメモを見て、処理量の料金がなくなる構造に変えて、05-path.txtに残してください。

NATには、時間あたりの料金と処理量あたりの料金が別々にかかります。処理量の大部分がオブジェクトストレージへ向かうトラフィックなら、ゲートウェイエンドポイントを使えば、その経路はNATを通りません。

처리GBを減らしてみてください(韓国語で「処理GB」を意味するフィールド名です)。トラフィックはそのままで、経路だけを変えてコストがなくなります。時間あたりの料金は残ります。NAT自体は依然として必要ですから。

AZをまたぐトラフィックを見る

cross-azの項目がなぜ3000GBなのかをメモから探し、減らす方法を06-az.mdに書いてください。

WebとDBが別のAZにあるため、リクエストのたびにAZをまたぎます。GBあたりの料金は小さくても、量が多いので積み上がります。

ただし、ここには落とし穴があります。同じAZにまとめると、そのAZが落ちるときに一緒に落ちます。 この項目は「減らすべき無駄」ではなく、可用性に支払う対価かもしれません。何を買うお金なのかを区別して書いてください。

誰も使っていないものを探す

メモに目を通して今は誰も使っていないリソースを探して削除し、最終的な合計を07-unused.txtに残してください。

3か月前に使っていたロードバランサーが、まだ起動しています。

金額は小さいです。しかし、こういうものは見つけるのが最も簡単で、リスクも最も低いのです。コスト削減を始めるときにここから始めると、チームが進め方を身につけながら成果が出ます。大きなものから手を付けると、たいてい議論で終わります。

整理する

08-notes.mdに3行以上書いてください。どこから手を付けるべきか、無駄と可用性のコストをどう区別するか、経路を変えてなくなるコストの例です。

本文に비중、가용성、경로が含まれている必要があります(韓国語で、順に「比率」「可用性」「経路」を意味する語です)。