概要
rightsizingなしの移行試算は精度を持たない
過去のインシデント対応で"念のため"大きく設定したPod requests(4vCPU/16GiB・8vCPU/32GiB)は実測ピークの3倍超。移行前に必ず実測ベースで補正する。
Autopilotは「実行時間分」しか課金されない
月額単価をリソース量にそのまま掛けると実質24時間稼働の試算になってしまう。1日3時間だけ動くバッチなら、正しくは月額約5,138円まで下がる。
比較対象(現状)自体も検証する
「Standard 3ノード常時稼働」を鵜呑みにせず合算リソースを確認すると、実は1ノードで足りることが判明。フェアな比較の土台を作る。
移行コストを含めたROIで語る
月額差分だけでなく移行工数20万円のペイバック期間(約2.5ヶ月)まで示して初めて、意思決定材料として完結する。
問題
ECサイト MOps チームのシニアエンジニアとして、バッチ処理基盤(Argo Workflows on GKE Standard)を GKE Autopilot へ移行すべきか判断してほしいと後輩エンジニアから相談された。後輩は「Autopilotに移行すればコストが68%削減できる」という Bad コスト比較メモを作成し、来週のインフラ定例でこのまま提案する予定だという。以下のメモには 7つの問題点が潜んでいる。
前提数値(正)
| 項目 | 値 |
|---|---|
| Autopilot単価 | vCPU 4,700円/vCPU・月(730h換算) / メモリ 520円/GiB・月(730h換算) |
| Autopilot最小リソース単位 | vCPU 0.25刻み / メモリ 0.5GiB刻みで切り上げ |
| Standardノード単価 | n2-standard-8(8vCPU/32GiB) 84,000円/ノード・月(730h換算) |
| 稼働日数 | 月30日稼働(日次バッチ) |
| ジョブA(クーポン発行) | 実行45分/日。現行requests=4vCPU/16GiB。実測ピーク=1.2vCPU/3GiB |
| ジョブB(レコメンド特徴量生成) | 実行2時間15分/日。現行requests=8vCPU/32GiB。実測ピーク=2.8vCPU/9GiB |
| 常駐システムPod(Argo controller等) | 0.5vCPU/1GiB、24時間稼働 |
| rightsizing後(安全マージン込) | ジョブA=1.4vCPU/3.8GiB / ジョブB=3.3vCPU/10.2GiB |
| エンジニア単価 / 移行工数見積もり | 80万円/月(4万円/人日) / 5人日 |
Bad コスト比較メモ — 問題点サマリー
件名: バッチ処理基盤 GKE Autopilot移行のご提案
現行構成: GKE Standard (n2-standard-8: 8vCPU/32GiB) × 3ノード常時稼働
3ノード × 84,000円/月 = 252,000円/月
← 問題⑤: 3ノードが本当に必要か未検証
Autopilot移行後(現行のPod requests値をそのまま使用):
ジョブA(クーポン発行バッチ): 4vCPU/16GiB
ジョブB(レコメンド特徴量生成バッチ): 8vCPU/32GiB
合計: 12vCPU/48GiB
← 問題①③: rightsizing未実施・最小単位切り上げも未考慮
vCPU: 12vCPU × 4,700円/vCPU・月 = 56,400円
メモリ: 48GiB × 520円/GiB・月 = 24,960円
Autopilot合計: 81,360円/月
← 問題②: 月額単価を直接掛けており実質24時間換算になっている
← 問題④: 常駐Argo controller(0.5vCPU/1GiB)のコストが未計上
← 問題⑦: 1日3時間しか動かないバースト特性が数字に反映されていない
削減額: 252,000円 − 81,360円 = 170,640円/月(68%削減)
よってAutopilotへの移行を提案します。
← 問題⑥: 移行工数(Podスペック調整・Helmチャート改修等)が未算入
ROI/ペイバック期間の議論がない
ヒント(段階的開示)
ヒント1 — 方向性
ヒント2 — アプローチ
- 問題①: 現行requests値(過大設定)をそのままAutopilot試算に使っている → 実測ピーク使用量に安全マージンを加えたrightsizing後の値を使う
- 問題②: Autopilotの「月額」単価をリソース量にそのまま掛けており、実行時間(ジョブA=45分/日、ジョブB=2時間15分/日)を考慮していない → 単価を時間単価に換算し、実際の実行時間(時間/月)を掛ける
- 問題③: rightsizing後の値をAutopilotの最小リソース単位(vCPU 0.25刻み、メモリ0.5GiB刻み)で切り上げていない
- 問題④: 常駐システムPod(Argo controller等、0.5vCPU/1GiB×24時間)のコストがAutopilot試算に含まれていない。Standard側はノード課金に暗黙的に含まれているため見えていなかっただけで、Autopilot移行後は独立したコストとして顕在化する
- 問題⑤: Standard現行の「3ノード」が本当に必要か検証していない。合算リクエスト(rightsizing・切り上げ後)が1ノード(8vCPU/32GiB)に収まるか確認する
- 問題⑥: 移行作業自体のコスト(Podスペック調整・Helmチャート改修・DaemonSet代替検討)が試算に含まれておらず、月額差分のみで結論づけている → 移行コストを算出しROI(ペイバック期間)を計算する
- 問題⑦: 「バッチは1日3時間程度しか動いていない」というAutopilot移行の核心的な理由を定性的には認識しているが、それを定量試算のどこにも反映していない
ヒント3 — 誘導
【Autopilot時間単価への換算】
vCPU時間単価 = 4,700円 ÷ 730時間 = ?円/vCPU時
メモリ時間単価 = 520円 ÷ 730時間 = ?円/GiB時
【rightsizing後・最小単位切り上げ】
ジョブA: 1.4vCPU/3.8GiB → 0.25刻み/0.5刻みで切り上げ = ?vCPU/?GiB
ジョブB: 3.3vCPU/10.2GiB → 切り上げ = ?vCPU/?GiB
【ジョブ別Autopilotコスト(月)】
ジョブA: 実行時間(h/月) = 0.75時間/日 × 30日 = ?時間
vCPUコスト = 切り上げ後vCPU × 実行時間(h) × vCPU時間単価
メモリコスト = 切り上げ後GiB × 実行時間(h) × メモリ時間単価
ジョブB・常駐Podも同様に計算し合計する
【Standard現状の再検証】
合算リクエスト(rightsizing・切り上げ後) が8vCPU/32GiBに収まるか?
【移行コストとROI】
移行コスト = 5人日 × (80万円÷20営業日)
ペイバック期間 = 移行コスト ÷ 月次削減額(Standard適正化後との差分)
問題点分析(7点)
| # | 問題点 | 分類 | 改善方法 |
|---|---|---|---|
| 1 | 現行requests(過大設定)をrightsizingせず流用 | 試算前提 | 実測ピーク+安全マージンで補正 |
| 2 | 月額単価をリソース量に直接掛け実質24h換算 | 課金モデル誤解 | 時間単価×実際の実行時間で計算 |
| 3 | Autopilot最小単位切り上げ未考慮 | 課金モデル誤解 | 0.25vCPU/0.5GiB刻みで切り上げ |
| 4 | 常駐Argo controllerのコスト計上漏れ | 試算漏れ | 24時間稼働分を別立てで計上 |
| 5 | Standard現状「3ノード」を未検証 | 比較の妥当性 | 合算リソースで必要ノード数を再計算 |
| 6 | 移行コストが試算になくROI議論がない | 投資評価 | 工数を金額化しペイバック期間を算出 |
| 7 | バースト特性を定量試算に未反映 | 前提設計 | 実行時間ベース試算で自動的に反映 |
Autopilotコスト内訳とBad vs Good比較(SVG)
模範解答
## 問題点の列挙(7点)
### 問題①: 現行requests(過大設定)をrightsizingせず流用
Bad: 4vCPU/16GiB、8vCPU/32GiBをそのままAutopilot試算に使用
Fix: 実測ピーク(1.2vCPU/3GiB、2.8vCPU/9GiB)に安全マージンを
加えたrightsizing後の値(1.4vCPU/3.8GiB、3.3vCPU/10.2GiB)を使う
### 問題②: 月額単価を直接掛け実質24時間換算になっている
Bad: 12vCPU×4,700円+48GiB×520円という「月額」の掛け算のみ
Fix: 単価を時間単価に換算し、実際の実行時間(h/月)を掛ける
### 問題③: Autopilot最小単位(0.25vCPU/0.5GiB)切り上げ未考慮
Bad: rightsizing後の値をそのまま連続量として扱っている
Fix: 0.25vCPU刻み/0.5GiB刻みで切り上げてから試算する
### 問題④: 常駐Argo controllerのコスト計上漏れ
Bad: バッチジョブ2つのコストのみ計算
Fix: 0.5vCPU/1GiB×24時間稼働分を独立コストとして計上
(実際には合計の過半を占める)
### 問題⑤: Standard現状「3ノード」を未検証
Bad: 3ノード常時稼働を無条件に比較基準として採用
Fix: 合算リクエスト(5.5vCPU/15.5GiB)を計算し、1ノードで
足りることを確認してから比較する
### 問題⑥: 移行コストが試算になくROI議論がない
Bad: 月額差分のみでAutopilot移行を提案
Fix: 移行工数(5人日=20万円)を算出しペイバック期間を示す
### 問題⑦: バースト特性(1日3時間稼働)を定量試算に未反映
Bad: 結果的に24時間換算になっており、短時間稼働のメリットが
数字に出ていない
Fix: 実行時間ベースで試算すれば自動的に反映される
| ジョブ | 現行requests(過大) | 実測ピーク使用量 | rightsizing後(安全マージン込) | Autopilot切り上げ後 |
|---|---|---|---|---|
| A(クーポン発行) | 4vCPU/16GiB | 1.2vCPU/3GiB | 1.4vCPU/3.8GiB | 1.5vCPU/4.0GiB |
| B(レコメンド特徴量生成) | 8vCPU/32GiB | 2.8vCPU/9GiB | 3.3vCPU/10.2GiB | 3.5vCPU/10.5GiB |
| 常駐Pod(Argo controller等) | — | — | — | 0.5vCPU/1.0GiB |
【時間単価への換算】
vCPU時間単価 = 4,700円 ÷ 730時間 ≈ 6.4384円/vCPU時
メモリ時間単価 = 520円 ÷ 730時間 ≈ 0.7123円/GiB時
【ジョブA】実行45分/日 × 30日 = 22.5時間/月
vCPUコスト = 1.5vCPU × 22.5時間 × 6.4384円 ≈ 217.30円
メモリコスト = 4.0GiB × 22.5時間 × 0.7123円 ≈ 64.11円
ジョブA合計 ≈ 281.41円/月
【ジョブB】実行2時間15分/日 × 30日 = 67.5時間/月
vCPUコスト = 3.5vCPU × 67.5時間 × 6.4384円 ≈ 1,521.07円
メモリコスト = 10.5GiB × 67.5時間 × 0.7123円 ≈ 504.84円
ジョブB合計 ≈ 2,025.91円/月
【常駐Pod】24時間 × 30日 = 720時間/月
vCPUコスト = 0.5vCPU × 720時間 × 6.4384円 ≈ 2,317.82円
メモリコスト = 1.0GiB × 720時間 × 0.7123円 ≈ 512.86円
常駐Pod合計 ≈ 2,830.68円/月
Autopilot合計 = 281.41 + 2,025.91 + 2,830.68 ≈ 5,138円/月
合算リクエスト(rightsizing・切り上げ後)
= ジョブA + ジョブB + 常駐Pod
= (1.5+3.5+0.5)vCPU / (4.0+10.5+1.0)GiB
= 5.5vCPU / 15.5GiB
n2-standard-8(8vCPU/32GiB)1ノードに余裕を持って収まる
→ Standardの「3ノード常時稼働」という前提自体が過大
→ 適正化後は 1ノード = 84,000円/月 が公平な比較対象
| 項目 | Bad試算 | Good試算 |
|---|---|---|
| Autopilotコスト | 81,360円/月(rightsizing前を24h換算) | 5,138円/月(rightsizing後・実行時間ベース) |
| 比較対象のStandard | 3ノード=252,000円/月(未検証) | 1ノードに適正化=84,000円/月 |
| 削減額 | 170,640円/月(68%削減) | 78,862円/月(約93.9%削減) |
# 移行コストとROI
移行コスト = 5人日 × (80万円 ÷ 20営業日)
= 5人日 × 4万円/人日
= 20万円
月次削減額(Standard適正化後との差分) = 84,000 − 5,138 = 78,862円/月
ペイバック期間 = 200,000円 ÷ 78,862円/月 ≈ 2.54ヶ月
ポイント解説
Autopilotの本質は「実行した分だけ払う」ことにあり、リソース量×月額単価をそのまま掛けると実質的に「常時稼働」を仮定した計算になってしまい、Autopilotのメリットを正しく評価できない。
過大なrequests値をそのまま使うと、Autopilot側のコストが不必要に膨らみ、正しい削減余地を見誤る。
「現状はこうなっている」を鵜呑みにせず、本当に必要なリソース量かを検証しなければ、フェアな比較にならない。
バッチジョブ自体は短時間で安価でも、コントローラーなどの常駐Podが実は試算の過半を占めることがある。
月額差分だけでなく、移行にかかる工数・期間を含めた投資対効果で語る必要がある。
実務への応用
MOpsチームのバッチ処理基盤(クーポン発行・レコメンド特徴量生成等)は、実行時間が短くバースト的な特性を持つワークロードが多く、Autopilotの実行時間ベース課金と相性が良い。一方で、Argo Workflows controllerのような常駐コンポーネントのコストは見落としやすく、「バッチだけ見て常駐Podを見ない」試算はコスト削減提案の説得力を損なう。今回の「rightsizing→最小単位切り上げ→実行時間ベース試算→比較対象自体の再検証→移行コスト→ROI」という型は、他のワークロード(配送料金計算バッチ、在庫同期ジョブ等)のAutopilot移行検討にもそのまま転用できる。
今日のまとめ
次のステップ
- 発展問題: 常駐Pod(Argo controller等)を専用の小型ノードプール(例: e2-small×1台の固定Standardノード)に分離し、バッチジョブ部分のみAutopilotに移行するハイブリッド構成を検討せよ。この場合のコスト試算と、Autopilot単独構成との比較(運用の複雑さとコストのトレードオフ)を行え。
- 参考: GKE Autopilot Pod単位課金 / GKE Standard ノード課金 / Kubernetes リクエスト/リミット / rightsizing / Argo Workflows controller のリソース設計