Chaos Engineering:意図的にシステムを壊して強くする¶
要約¶
Chaos Engineering は障害を意図的に注入してシステムの耐性を検証する手法。通常のテストが「正常動作するか」を問うのに対し、「障害時に何が起きるか」を問う。Netflix の Chaos Monkey が起源。
代表的な実験¶
- サービスインスタンスの強制終了
- レイテンシ注入(応答遅延)
- ネットワーク分断
- リージョン障害シミュレーション
- 依存サービスの障害
ワークフロー¶
- 定常状態の定義: 正常時のメトリクス基準値を決める
- 仮説設定: 「〇〇が壊れてもシステムは動き続ける」
- 障害注入: 最小スコープから(まずステージング)
- 観察: メトリクス・ログ・アラートで影響確認
- 改善: 仮説が外れた箇所を修正
主要ツール¶
| ツール | 特徴 |
|---|---|
| Chaos Monkey | Netflix 製。AWS インスタンス終了 |
| LitmusChaos | Kubernetes ネイティブ、OSS |
| Gremlin | マネージドサービス、多様な障害タイプ |
| Chaos Mesh | CNCF プロジェクト、K8s 向け |
| AWS FIS | AWS 公式の障害注入サービス |
ポイント¶
- 「仮定」を「検証済みの確信」に変える考え方
- 本番で実施するなら影響範囲を限定するゲームデイから始める
- 定常状態の定義なしに Chaos Engineering をしても意味がない