🔄 Auto Scaling ウォームプール

3つの運用モードを完全理解!Stopped・Running・Hibernated

🏪 コンビニの店員待機で例えると超わかりやすい!

ウォームプール = 急な来客ラッシュに備えた予備スタッフ

深夜のコンビニで、突然の来客ラッシュに備えて予備スタッフを用意しておく状況を想像してください。
3つの「待機モード」があり、それぞれ コスト すぐに働ける度合い が違います。

どの待機モードを選ぶか で、人件費と対応速度のバランスが変わる!
あなたのビジネスに最適なモードを見つけましょう✨

⏸️
Stopped
自宅待機モード
💰 コスト
最安(EBSストレージのみ)
⚡ 起動速度
遅い(2〜4分)
📊 状態
インスタンス停止
OSとアプリは初期化済み
🎯 向いているケース
• コスト最優先
• 起動まで数分待てる
• 予測可能なトラフィック
▶️
Running
店内待機モード
💰 コスト
最高(通常のEC2料金)
⚡ 起動速度
最速(数秒)
📊 状態
インスタンス起動中
すぐに負荷を受け入れ可能
🎯 向いているケース
• 速度最優先
• 予測不可能なスパイク
• ミッションクリティカル
😴
Hibernated
休憩室で仮眠モード
💰 コスト
中(EBS + RAM保存料)
⚡ 起動速度
速い(1〜2分)
📊 状態
メモリ内容をEBSに保存
実行状態を保持したまま休止
🎯 向いているケース
• バランス重視
• 起動処理が複雑
• 状態保持が重要

🏪 コンビニスタッフの待機状態で理解する

🏠

Stopped
「自宅待機」

📱 シチュエーション:
予備スタッフは自宅で待機。店長から電話がかかってきたら、着替えて店まで来る。
⏱️ 出勤までの流れ:
1. 電話を受ける
2. 制服に着替える
3. 店まで移動(5分)
4. 業務開始

→ 合計2〜4分かかる
💵 コスト:
待機時間は給料なし(制服保管料のみ)
→ 最安!
🏪

Running
「店内待機」

📱 シチュエーション:
予備スタッフは制服を着て店内のバックヤードで待機。いつでもすぐにレジに立てる。
⏱️ 出勤までの流れ:
1. 声をかけられる
2. すぐにレジへ
3. 即座に業務開始

→ 数秒で対応可能!
💵 コスト:
待機中も時給が発生
→ 最高!
😴

Hibernated
「休憩室で仮眠」

📱 シチュエーション:
予備スタッフは制服を着たまま休憩室で仮眠。起こされたらすぐに働ける準備ができている。
⏱️ 出勤までの流れ:
1. 起こされる
2. 目を覚ます(30秒)
3. レジへ移動
4. 業務開始

→ 1〜2分で対応可能
💵 コスト:
休憩手当+休憩室使用料
→ 中間!

⏱️ 起動までの時間を比較

⏸️
Stopped: 2〜4分
処理内容:
1️⃣ インスタンス起動(OSブート) - 60秒
2️⃣ アプリケーション起動 - 30秒
3️⃣ ヘルスチェック合格 - 30秒
4️⃣ ロードバランサー登録 - 30秒

💡 なぜ時間がかかる?
完全に停止した状態から、OSとアプリケーションを一から起動するため。PCの再起動と同じイメージ。
▶️
Running: 数秒〜30秒
処理内容:
1️⃣ ヘルスチェック実施 - 5秒
2️⃣ ロードバランサー登録 - 10秒
3️⃣ トラフィック受け入れ開始

💡 なぜ速い?
既に起動していて、アプリケーションも動いているため。ウォーミングアップ済みのエンジンのようなもの。
😴
Hibernated: 1〜2分
処理内容:
1️⃣ ハイバネーションから復帰 - 30秒
2️⃣ メモリ内容を復元 - 20秒
3️⃣ アプリケーション確認 - 10秒
4️⃣ ロードバランサー登録 - 20秒

💡 なぜ中間?
メモリの状態を保存しているため、OSブートは不要。でもメモリ復元に少し時間がかかる。PCのスリープ復帰と同じ。

📊 詳細比較表

項目 Stopped Running Hibernated
起動時間 遅い (2〜4分) 最速 (数秒) 速い (1〜2分)
コスト(待機時) 最安 (EBSのみ) 最高 (フル料金) 中間 (EBS+RAM)
インスタンス状態 停止中 実行中 ハイバネート中
メモリ保持 ❌ なし ✅ 保持 ✅ EBSに保存
CPUコスト $0 フル料金 $0
EBSコスト ストレージのみ ストレージのみ ストレージ+RAM分
起動プロセス フルブート 既に起動済み メモリ復元のみ
ユーザーデータ実行 ✅ 実行 ❌ スキップ ❌ スキップ
推奨用途 コスト重視
予測可能なトラフィック
速度重視
予測不可能なスパイク
バランス重視
複雑な起動処理
最適なシナリオ バッチ処理
定期的なスケール
eコマース
ゲームサーバー
機械学習
大規模キャッシュ

💰 月額コスト比較(t3.medium換算)

Stopped
$3
月額(1インスタンス)
EBSストレージ (30GB) $3.00
CPUコスト $0.00
メモリコスト $0.00
✅ 最もコスト効率が良い
待機中はストレージ代のみ!
Running
$30
月額(1インスタンス)
EBSストレージ (30GB) $3.00
CPUコスト(常時起動) $25.00
メモリコスト $2.00
⚠️ 最もコストが高い
通常のEC2と同じ料金が発生
Hibernated
$7
月額(1インスタンス)
EBSストレージ (30GB) $3.00
CPUコスト $0.00
RAM保存 (4GB分) $4.00
⚖️ バランスが良い
メモリ保存分だけ追加コスト

💡 コスト削減の計算例

シナリオ: 10台のウォームプールを常時待機

Stopped
$3 × 10台 = $30/月
🎯 90%削減!
Running
$30 × 10台 = $300/月
⚠️ 基準コスト
Hibernated
$7 × 10台 = $70/月
🎯 77%削減!
結論: Stoppedなら年間 $3,240削減!

💼 どのモードを選ぶ?実際のユースケース

🛒

eコマースサイト

課題:
セール開始時に予測不可能な大量アクセスが発生。数秒の遅延も許されない。

最適な選択:
Running

理由:
• 即座にスケールアウト必須
• 機会損失を避けたい
• 高いコストでも売上で回収可能
• ピーク時のユーザー体験が最優先
📊

バッチ処理システム

課題:
毎朝8時にレポート生成ジョブが走る。処理時間は予測可能で、多少の起動遅延は問題ない。

最適な選択:
Stopped

理由:
• スケジュール実行で予測可能
• 2〜3分の起動時間は許容範囲
• コスト削減が最優先
• 毎日23時間は不要
🤖

機械学習推論API

課題:
大量のモデルをメモリにロード。起動に5分かかる。でも常時起動はコスト高。

最適な選択:
Hibernated

理由:
• モデルロード時間を節約
• メモリ状態を保持
• コストと速度のバランス
• 1〜2分の起動時間に短縮
🎮

オンラインゲーム

課題:
プレイヤーのマッチング待ち時間を最小化。サーバー起動の遅延は離脱につながる。

最適な選択:
Running

理由:
• プレイヤー体験が最優先
• 待ち時間による離脱防止
• リアルタイム性が重要
• 課金モデルで収益確保
📰

ニュースサイト

課題:
朝と夜にアクセスが集中。日中は比較的安定。コストを抑えつつ対応したい。

最適な選択:
Stopped

理由:
• ピーク時間が予測可能
• 段階的なスケールアウトでOK
• コスト効率重視
• 2〜3分の立ち上がりは許容
💾

キャッシュサーバー

課題:
大量のデータをメモリにキャッシュ。再起動時のウォームアップに時間がかかる。

最適な選択:
Hibernated

理由:
• キャッシュデータを保持
• ウォームアップ時間を削減
• 起動後すぐに高いヒット率
• メモリ状態の保存が重要

🎯 どのモードを選ぶ?意思決定フローチャート

Q1: 起動時間の要件は?
数秒以内必須
→ Runningへ
1分以上OK
→ Q2へ
⬇️
Q2: コストと速度、どちらを優先?
コスト最優先
→ Stoppedへ
バランス重視
→ Q3へ
⬇️
Q3: メモリ状態の保持が重要?
重要(キャッシュ等)
→ Hibernatedへ
不要
→ Stoppedへ

📌 クイック判定表

Stoppedを選ぶべき:
  • ✅ コスト削減が最優先
  • ✅ 起動まで2〜4分待てる
  • ✅ トラフィックが予測可能
  • ✅ バッチ処理やスケジュール実行
Runningを選ぶべき:
  • ✅ 即座の応答が必須
  • ✅ 予測不可能なスパイク
  • ✅ ユーザー体験最優先
  • ✅ ミッションクリティカル
Hibernatedを選ぶべき:
  • ✅ コストと速度のバランス重視
  • ✅ メモリ状態の保持が重要
  • ✅ 複雑な起動処理がある
  • ✅ 大量のキャッシュデータを持つ
💡 モード選択の黄金ルール
1. まずはStoppedから始めよう:
迷ったら最もコスト効率の良いStoppedから始めて、問題があれば段階的に上げていく。いきなりRunningは避ける。

2. トラフィックパターンを分析:
• 予測可能 → Stopped
• 急激なスパイク → Running
• 緩やかな増加 → Hibernated

3. アプリケーションの起動時間を計測:
実際に計測して、2分以内なら Stopped、5分以上なら Hibernated を検討。思い込みで決めない。

4. ハイブリッド戦略も有効:
• 平日日中: Running (即応性重視)
• 夜間・週末: Stopped (コスト重視)
スケジュールに応じて使い分けるのもアリ!

5. メモリサイズに注意(Hibernated):
Hibernatedは RAMサイズ × EBS料金 が追加で発生。大きなインスタンスタイプだと意外とコストがかかる可能性あり。

6. モニタリングで最適化:
CloudWatchで実際のスケールアウト時間を計測し、必要に応じてモードを変更。データドリブンで判断しよう!

7. 起動時間の内訳を理解:
• OSブート: 30〜60秒
• アプリ起動: アプリ依存
• ヘルスチェック: 30秒
どこがボトルネックか把握して、最適なモードを選択。

🎓 まとめ

🏪 コンビニスタッフの待機 = ウォームプール

Auto Scalingのウォームプールは、急なアクセス増加に備えた「予備インスタンス」
3つの待機モードで コスト 速度 のバランスを調整できる!

⏸️
Stopped

自宅待機
最安だが起動に時間
コスト重視
▶️
Running

店内待機
最速だがコスト高
速度重視
😴
Hibernated

休憩室で仮眠
中間的な性能
バランス型

🎯 選び方の結論:

コスト最優先? Stopped
速度最優先? Running
バランス重視? Hibernated

迷ったら? Stopped から始めて調整!

ウォームプールの運用モードは、 ビジネス要件 に合わせて選択しよう!
正しい選択で、コストを最大90%削減しながら必要な性能を確保できます🎉

実際のトラフィックパターンを分析して、データに基づいた意思決定を!

Created by SSuzuki1063

AWS SAP Learning Resources