LESSON 25分

ストーリー

高橋アーキテクト
キャッシュ設計はできた。でも、本当にピーク時の3000 RPSに耐えられるかどうか、どうやって確認する?

高橋アーキテクトが問いかけた。

あなた
本番にデプロイして祈る…ですか?
高橋アーキテクト
祈りはエンジニアリングじゃない。負荷テストで事前に確認するんだ。テストの種類によって分かることが違う。まずはその違いを理解しよう

4つの負荷テスト

1. ロードテスト(Load Test)

想定される通常の負荷をかけて、システムが要件を満たすか確認するテストです。

// ロードテストの特性
const loadTest = {
  purpose: '通常負荷での性能確認',
  pattern: '段階的に負荷を上げ、一定時間維持し、下げる',
  duration: '10-30分',
  targetRPS: '通常時の想定負荷(例: 1000 RPS)',
  checkPoints: [
    'レスポンスタイムがSLA内か',
    'エラー率が許容範囲か',
    'リソース使用率が適切か',
  ],
};
VU数
 100│    ┌────────────┐
    │   ╱            ╲
  50│  ╱              ╲
    │ ╱                ╲
   0│╱                  ╲
    └──────────────────── 時間
     0  5  10  15  20  25分

2. ストレステスト(Stress Test)

システムの限界を超える負荷をかけて、限界値と崩壊パターンを確認するテストです。

const stressTest = {
  purpose: 'システムの限界値と崩壊時の挙動確認',
  pattern: '限界を超えるまで段階的に負荷を上げ続ける',
  duration: '30-60分',
  targetRPS: '想定負荷の150-300%',
  checkPoints: [
    '限界RPS(飽和点)はいくつか',
    '限界を超えた時にグレースフルに劣化するか',
    'エラーメッセージは適切か',
    'リカバリーにかかる時間は',
  ],
};
VU数
 500│              ╱ ← 限界突破
    │            ╱
 300│          ╱
    │        ╱
 100│      ╱
    │    ╱
   0│──╱
    └──────────────── 時間

3. スパイクテスト(Spike Test)

突然の急激なトラフィック増加に対するシステムの回復力を確認するテストです。

const spikeTest = {
  purpose: '突発的なトラフィック急増への耐性確認',
  pattern: '通常負荷 → 突然ピーク → 通常負荷に戻す',
  duration: '15-30分',
  targetRPS: '通常の5-10倍のスパイク',
  checkPoints: [
    'スパイク時にシステムが落ちないか',
    'オートスケーリングが正しく機能するか',
    'スパイク後に正常に戻るか',
    'スパイク中のエラー率はどの程度か',
  ],
};
VU数
 500│    ╱╲
    │   ╱  ╲
 300│  ╱    ╲
    │ ╱      ╲
 100│╱        ╲─────────

   0│
    └──────────────────── 時間
     0    5    10   15分

4. ソークテスト(Soak Test / Endurance Test)

長時間にわたって通常負荷をかけ続け、メモリリークや性能劣化を検出するテストです。

const soakTest = {
  purpose: '長時間運用での安定性確認',
  pattern: '通常負荷を長時間維持',
  duration: '4-24時間',
  targetRPS: '通常時の想定負荷',
  checkPoints: [
    'メモリ使用量が時間とともに増加していないか',
    'レスポンスタイムが徐々に悪化していないか',
    'コネクションリークはないか',
    'ログファイルの肥大化で問題が起きないか',
  ],
};
VU数
 100│ ┌──────────────────────────────────┐
    │ │                                  │
  50│ │ 長時間一定負荷を維持             │
    │ │                                  │
   0│─┘                                  └─
    └───────────────────────────────────── 時間
     0    2    4    6    8   10  12時間

テスト種類の選択ガイド

テストいつ実施するか何が分かるか
ロードテストリリース前通常運用で要件を満たすか
ストレステスト容量計画時限界値とスケーリング計画
スパイクテストセール・イベント前急激な負荷増への耐性
ソークテスト定期的(月1回)メモリリーク、長期安定性

まとめ

ポイント内容
ロードテスト通常負荷で性能確認
ストレステスト限界値と崩壊パターン確認
スパイクテスト突発的な負荷急増への耐性
ソークテスト長時間運用の安定性確認
選択目的に応じて適切なテスト種類を選ぶ

チェックリスト

  • 4つの負荷テストの違いを説明できる
  • それぞれの負荷パターン(グラフの形)をイメージできる
  • テスト種類の選択基準を理解した

次のステップへ

次は「テストシナリオの設計」を学びます。現実的なテストシナリオをどう設計するかを理解しましょう。


推定読了時間: 25分