本文へ移動

ホーム / SRE / 第5部 インフラ・セキュリティ・性能・コスト

第5部 インフラ・セキュリティ・性能・コスト・第13章

コスト管理(FinOps)

★☆☆ 発展7トピック・面接 5問

SREの視点からクラウドのコストを扱います。見える化・最適化・運用の考え方、見落としやすい費用、購入オプション、設計段階のトレードオフをまとめます。

ひとことで

コストも信頼性や性能と同じく、計測して改善する「非機能要件」の1つ。FinOpsは、見える化・最適化・運用を回し続け、エンジニアが日々の判断にコストを組み込む考え方。

クラウドでは、エンジニアが設定を1つ変えるだけで毎月の費用が大きく変わります。そのため、コストを財務部門だけの話にせず、設計・運用する人が自分の判断の結果として見えるようにすることが大事です。この考え方をFinOpsと呼び、FinOps Foundationは、見える化(Inform)・最適化(Optimize)・運用(Operate)の3つの段階を繰り返すモデルを示しています。

SREがコストを扱う理由例
信頼性とコストはトレードオフマルチAZ・マルチリージョン・余裕のある台数は、可用性を上げるがコストも上げる。SLOに見合った水準を選ぶ
性能改善はコスト削減になるN+1の解消でDBを小さくできる、キャッシュでインスタンス数を減らせる
障害とコストの急増はつながる無限リトライやログの大量出力、暴走したオートスケールは、障害であり請求の急増でもある
インフラの設計者だから分かるどのリソースが何のためにあるかを一番知っているのはSRE
単位あたりのコスト(ユニットエコノミクス)考え方
1リクエストあたり・1ユーザーあたりの費用総額だけを見ると、利用者が増えて費用が増えたのか、効率が悪くなったのかが分からない
事業の指標と並べる注文1件あたりのインフラ費用、売上に対するインフラ費用の割合
目標を決める「月額をいくら減らす」より「1件あたりを何%改善する」の方が成長と両立する
FinOpsは「見える化 → 最適化 → 運用」を回し続けることコストを財務だけの話にせず、エンジニアが日々の判断に組み込む1 見える化(Inform)タグで誰の何のコストかを分け、単位あたりで見る2 最適化(Optimize)不要の削除・適正化・購入オプション3 運用(Operate)予算・異常検知・設計レビューに組み込む
FinOpsの3つの段階

コストの改善も「計測 → 改善 → 回帰を防ぐ」。性能チューニングと同じ形。

面接ではこう答える

SREにとってコストは、信頼性や性能と同じく計測して改善する対象です。マルチAZや余裕のある台数は可用性とコストのトレードオフなので、SLOに見合った水準を選びます。FinOpsは見える化・最適化・運用を回し続ける考え方で、総額ではなく1リクエストや1ユーザーあたりのコストで見ると、成長と効率を分けて判断できます。

ひとことで

「誰の、何のための、いくらか」が分からないと減らせない。タグで分け、予算と異常検知で早く気づき、設計レビューにコストを入れる。

仕組み内容
コスト配分タグサービス名・環境・チームなどのタグを全リソースに付け、請求画面で有効化する。IaCで必ず付くようにする
アカウントで分けるマルチアカウントなら、アカウント単位で自然に分かれる。最も確実な分け方
Cost Explorerサービス別・タグ別・アカウント別の推移を見る
詳細な請求データ(CUR・Data Exports)S3に出力してAthenaやBIツールで分析。共有リソースの按分にも使う
コンテナの按分ECS・EKSの分割コスト配分データで、タスクやPodごとの費用を見る
AWS Budgets月の予算と予測に対してアラートを出す
Cost Anomaly Detectionいつもと違う急増を自動で検知して通知する
Compute Optimizer・Trusted Advisorサイズの見直しや使われていないリソースの候補を出す
運用に組み込む内容
定例で見るチームごとに月次で推移と単位あたりのコストを確認
設計レビューに入れる新しい構成のときに、月額の見積もりと、規模が10倍になったときの費用を確認
異常の一次対応を決める急増の通知が来たら、誰が何を確認するかを手順にする(障害対応と同じ)
削減の効果を記録施策ごとに削減額を記録し、次の判断に使う

面接ではこう答える

コストを減らすには、まずタグやアカウントで「誰の、何のための費用か」を分けます。Cost Explorerで推移を見て、詳細な請求データをAthenaで分析し、ECSやEKSはタスクやPodごとに按分します。AWS BudgetsとCost Anomaly Detectionで予算超過や急増に早く気づき、設計レビューで月額の見積もりと規模が増えたときの費用を確認します。

13.3コスト最適化

★☆☆ 発展
  • 可視化:タグ付け、Cost Explorer、チーム・サービス単位の按分

  • 購入オプション:Savings Plans、リザーブド、スポット(中断耐性のあるワークロード)

  • 適正化:使われていないリソースの削除、インスタンスサイズの見直し、Graviton への移行

  • 「信頼性とコストのトレードオフ」をどう判断したかを具体例で話せるとよい

第8章「ストレージ」:S3のストレージクラスとライフサイクルを図で詳しく

手段削減の目安注意点
Savings Plans / リザーブドオンデマンド比で最大7割程度1年 / 3年の利用を約束。使用量の見通しが必要
スポットインスタンスオンデマンド比で最大9割程度2分前の通知で中断される。中断に強い処理だけ
Graviton(ARM)同性能でおおむね2割程度安いアプリやイメージの ARM 対応が必要
ライトサイジング過剰なサイズを適正化性能の検証が必要
不要リソースの削除使っていないEBS、スナップショット、開発環境の夜間停止削除前の確認手順
データ転送の削減NAT Gateway 経由の通信を VPC エンドポイントへ、CDNの活用見落としやすいコスト

削減率は利用条件で変わるため、面接では「実際にいくら・何%削減したか」を自分の数字で話すのが一番強い。

ひとことで

インスタンスの費用は目に入りやすいが、通信・ログ・放置されたリソースの費用は気づかないうちに膨らむ。

クラウドの請求は、サーバーの台数や大きさだけでは決まりません。データがどこを通ったか(NAT ゲートウェイ・AZ の間・インターネットへの出口)や、ログの量、消し忘れたリソースにも料金がかかり、構成図を見ても気づきにくいところで膨らみます。

SRE はコストも信頼性と並ぶ運用の指標として見ます。「先月から急に増えた」と聞かれたときに、どの項目から疑うかの当たりを付けられるようにしておきます。

見落としやすいものなぜ膨らむか対策
NAT Gatewayの処理料金S3やECRへの大量の通信がNAT経由になっているS3・DynamoDBはゲートウェイ型のVPCエンドポイント、ECRなどはインターフェース型も検討
AZ間の通信アプリとDB・キャッシュがAZをまたいで大量に通信同じAZのレプリカを優先して読む、通信量の多い経路を確認
インターネットへの転送大きなファイルをCDNを通さずに配信CloudFrontを通す(オリジンからCloudFrontへの転送は無料)
CloudWatch Logsの取り込みデバッグログの出しすぎ、ログの保持期間が無期限ログレベルの見直し、保持期間の設定、S3への移動
使われていないリソース停止を忘れた開発環境、外れたEBSボリューム、古いスナップショット、未使用のElastic IP定期的な棚卸し、開発環境の夜間・休日停止、ライフサイクルの設定
大きすぎるサイズ最初に余裕を持って選んだままCompute Optimizerの推奨、CPU・メモリの実使用量で見直し
公開IPv4アドレス2024年から公開IPv4に時間課金不要なパブリックIPの削除、IPv6の検討
古い世代のリソースgp2のボリューム、古いインスタンス世代gp3への変更、新しい世代やGravitonへの移行
監視・ログのSaaSホスト数・カスタムメトリクス・ログ量で課金が増えるメトリクスのカーディナリティとログ量を管理
見落としやすいのは「通信」のコスト。どこを通るかで料金が変わるリージョン(VPC)AZ-aAZ-cアプリDBアプリNAT GatewayVPCエンドポイント同AZ無料AZ間:有料NAT経由:時間+処理量の料金外部利用者外向き:有料S3・DynamoDBはゲートウェイ型エンドポイントなら無料・S3やECRへの大量の通信をNAT経由にしている ・AZをまたいだ大量の通信(DBやキャッシュとアプリがAZ違い)・CDNを通さない大きなファイルの配信、が典型的な原因。正確な単価はリージョンごとに料金ページで確認する
通信経路とコストの関係

請求書の「EC2-その他」や「データ転送」が大きいときは、まず通信の経路を疑う。

下の「ブラウザで試す」の図では、プライベートサブネットのアプリが外部 API を呼ぶときに NAT ゲートウェイを通る経路と、S3 へのバックアップをゲートウェイ型の VPC エンドポイントに向けて NAT を通さずに届ける経路を順に見られます。表の1行目「NAT Gatewayの処理料金」に関係するのは後半の「NAT GW の料金に注意」の手順で、通ったデータ量ごとに料金がかかる経路と、それをどこで迂回できるかに注目してください。

面接ではこう答える

見落としやすいのは、S3やECRへの通信がNAT Gateway経由になっている処理料金、AZ間の大量通信、CDNを通さない配信、CloudWatch Logsの取り込みと無期限の保持、停止忘れや外れたボリューム・古いスナップショットなど放置されたリソースです。VPCエンドポイント、CDN、ログの保持期間、定期的な棚卸しで対策します。

別のページで開く →

ネットワーク図を読み込んでいます…

ひとことで

いつも使う分は割引契約、増減する分はオンデマンド、止まってもよい処理はスポット。使用量の形に合わせて重ねる。

方式内容向く使い方注意点
オンデマンド使った分だけ払う増減する部分、まだ量が読めないもの最も割高
Savings Plans1年か3年、1時間あたりの利用額を約束して割引。Compute Savings PlansはEC2・Fargate・Lambdaに使える常に使っている計算資源の土台約束した額は使わなくても払う
リザーブドインスタンス特定のサービスの利用を約束して割引RDS・ElastiCache・OpenSearchなどサイズやエンジンの変更に制約
スポットインスタンス余っている容量を大きな割引で使う。2分前の通知で中断されるバッチ、CI、中断に強いワーカー中断を前提にした作り(再実行・チェックポイント)が必要

割引契約は、過去の使用量のうち「最低でも常に使っている量」に合わせて買います。全部を契約で覆おうとすると、使用量が減ったときに無駄が出ます。購入後は、利用率(約束した額をどれだけ使えたか)とカバー率(使用量のうち割引が効いた割合)を定期的に確認します。アーキテクチャの変更(Gravitonへの移行、Fargateへの移行)を予定しているなら、その計画も考えて種類と期間を選びます。

いつも使う分は割引契約で、増減する分はオンデマンド、止まってよい処理はスポットで1日の計算資源の使用量(イメージ)Savings Plans・リザーブド(常に使う分)オンデマンド・オートスケール夜間バッチ:スポット0時6時12時18時24時割引契約は「最低でもこれだけは使う」量に合わせる。多く買いすぎると、使わない分も払うことになる
購入オプションの重ね方

割引契約は「土台」だけ。山の部分はオンデマンドとオートスケールで。

面接ではこう答える

常に使っている土台の部分はSavings Plansやリザーブドインスタンスで割引を受け、増減する部分はオンデマンドとオートスケールで、中断してもよいバッチやCIはスポットで動かします。割引契約は最低限の使用量に合わせて買い、利用率とカバー率を定期的に確認します。移行の予定がある場合は、それに合わせて種類と期間を選びます。

ひとことで

コストは運用で削るより、設計の時点で決まる部分が大きい。信頼性・性能・コストを同じ表に並べて選ぶ。

判断の場面高くつく選択考え方
冗長化の水準すべてをマルチリージョンにサービスごとにSLOとRTO・RPOを決め、必要な水準だけ冗長化
常時稼働かイベント駆動か使われていない時間も動くサーバー利用が少なく波があるならLambdaやFargateのスケールイン、夜間停止
マネージドか自前か自前で運用する人の時間を数えない人件費・運用工数も含めた総コストで比べる
データの置き場所すべてを高速なストレージにアクセス頻度でストレージクラスを分ける(S3のライフサイクル、ログの階層)
データの流れAZやリージョンをまたぐ大量の通信通信の多い組み合わせを近くに置く
監視とログすべてを詳細に、無期限に目的ごとに粒度と保持期間を決める
開発・検証環境本番と同じ大きさで常時稼働小さいサイズ、夜間休日停止、必要なときだけ作る

AWSのWell-Architected Frameworkにもコスト最適化の柱があり、信頼性やパフォーマンスの柱とあわせてトレードオフを検討する考え方が示されています。面接では「コストを下げた経験」に加えて、「信頼性を落とさないためにどこは削らなかったか」を話せると、判断の質が伝わります。

面接ではこう答える

コストは運用での削減より、設計時の判断で決まる部分が大きいです。冗長化の水準はサービスごとのSLOとRTO・RPOで決め、波のある処理はイベント駆動やスケールインで、データは頻度で置き場所を分け、通信の多い組み合わせは近くに置きます。マネージドと自前の比較は運用の人件費も含めた総コストで判断し、どこを削らなかったかも説明できるようにします。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • SREにとってコストも計測して改善する対象であり、信頼性・性能とのトレードオフで判断することを説明できるようにする
  • タグ・按分・予算・異常検知でコストを見える化し、見落としやすい通信やログの費用を押さえる
  • 購入オプションの重ね方と、設計段階でコストが決まる判断を語れるようにする
  • SREとコスト(FinOpsの考え方):コストも信頼性や性能と同じく、計測して改善する「非機能要件」の1つ。FinOpsは、見える化・最適化・運用を回し続け、エンジニアが日々の判断にコストを組み込む考え方。
  • コストの見える化と運用:「誰の、何のための、いくらか」が分からないと減らせない。タグで分け、予算と異常検知で早く気づき、設計レビューにコストを入れる。
  • クラウドで見落としやすいコスト:インスタンスの費用は目に入りやすいが、通信・ログ・放置されたリソースの費用は気づかないうちに膨らむ。
  • 購入オプションの使い分け:いつも使う分は割引契約、増減する分はオンデマンド、止まってもよい処理はスポット。使用量の形に合わせて重ねる。
  • 設計とコストのトレードオフ:コストは運用で削るより、設計の時点で決まる部分が大きい。信頼性・性能・コストを同じ表に並べて選ぶ。

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1SREとしてコストにどう関わりますか?

模範回答

コストも信頼性や性能と同じく計測して改善する対象だと考えています。まずタグやアカウントで誰の何の費用かを見える化し、1リクエストあたりのような単位で推移を見ます。そのうえで、不要なリソースの削除、サイズの適正化、購入オプション、通信経路の見直しで最適化し、予算と異常検知の通知、設計レビューでの見積もりで運用に組み込みます。冗長化の水準はSLOに合わせて決め、信頼性を落とさない範囲で削ります。

深掘りされたら

  • コストと信頼性がぶつかったときの判断の例は?

見られているポイントFinOpsの全体像とSREの役割

Q2ある月、AWSの請求が急に増えました。どう調べますか?

模範回答

Cost Explorerで、どのサービス・アカウント・タグで、いつから増えたかを絞り込みます。使用タイプまで見ると、データ転送なのか、NAT Gatewayの処理量なのか、ログの取り込みなのかが分かります。そのうえで、その時期のデプロイや設定変更、トラフィックの変化と照らし合わせます。無限リトライやログの大量出力、オートスケールの暴走など、障害が原因のこともあるので、メトリクスも確認します。再発防止にCost Anomaly Detectionと予算アラートを設定します。

深掘りされたら

  • NAT Gatewayの費用が大きい場合、まず何を確認しますか?

見られているポイント障害調査と同じ手順で原因を絞れるか

Q3Savings Plansはどれくらい買いますか?

模範回答

過去数か月の使用量のうち、夜間や休日でも常に使っている最低限の量に合わせて買います。全部を覆うと、使用量が減ったときに使わない分も払うことになるからです。購入後は利用率とカバー率を定期的に確認し、Gravitonへの移行やFargateへの移行など、今後の構成変更の予定も考えて、Compute Savings Plansのように柔軟な種類を選ぶか、期間を短めにするかを決めます。

深掘りされたら

  • スポットインスタンスはどんな処理に使いますか?

見られているポイント使用量の形に合わせた判断

Q4コスト削減でやったことを教えてください。

模範回答

STARで話します。たとえば「請求のうちEC2-その他が大きかったので使用タイプを調べ、S3とECRへの通信がNAT Gateway経由になっていることを見つけ、ゲートウェイ型とインターフェース型のVPCエンドポイントに切り替えて月〇万円削減した」のように、どう見つけたか、何を変えたか、いくら減ったか、信頼性への影響をどう確かめたかを数字で話します。

深掘りされたら

  • 削らなかったものはありますか?それはなぜですか?

見られているポイント発見の過程と数字、トレードオフの判断

Q5開発環境のコストを下げるには?

模範回答

本番と同じ大きさで常時動かす必要はないので、小さいサイズにし、夜間や休日は自動で停止します。PRごとの一時環境は、マージや一定時間で自動削除します。DBはスナップショットから必要なときに作る、Auroraならサーバーレスで小さく保つ、といった方法もあります。誰の環境かをタグで分け、放置されたものを定期的に棚卸しします。

深掘りされたら

  • 停止すると困るチームがあったらどうしますか?

見られているポイント具体的な手段と運用