コンテンツにスキップ

Chaos Engineering:意図的にシステムを壊して強くする

要約

Chaos Engineering は障害を意図的に注入してシステムの耐性を検証する手法。通常のテストが「正常動作するか」を問うのに対し、「障害時に何が起きるか」を問う。Netflix の Chaos Monkey が起源。

代表的な実験

  • サービスインスタンスの強制終了
  • レイテンシ注入(応答遅延)
  • ネットワーク分断
  • リージョン障害シミュレーション
  • 依存サービスの障害

ワークフロー

  1. 定常状態の定義: 正常時のメトリクス基準値を決める
  2. 仮説設定: 「〇〇が壊れてもシステムは動き続ける」
  3. 障害注入: 最小スコープから(まずステージング)
  4. 観察: メトリクス・ログ・アラートで影響確認
  5. 改善: 仮説が外れた箇所を修正

主要ツール

ツール 特徴
Chaos Monkey Netflix 製。AWS インスタンス終了
LitmusChaos Kubernetes ネイティブ、OSS
Gremlin マネージドサービス、多様な障害タイプ
Chaos Mesh CNCF プロジェクト、K8s 向け
AWS FIS AWS 公式の障害注入サービス

ポイント

  • 「仮定」を「検証済みの確信」に変える考え方
  • 本番で実施するなら影響範囲を限定するゲームデイから始める
  • 定常状態の定義なしに Chaos Engineering をしても意味がない