Chaos Engineering
制御された障害実験で弱点を発見し、システムの耐障害性を高める
よくあるシナリオ:本番で初めて知る弱点
決済クライアントで外部決済APIが落ちたとき、自社システムがどう動くか誰も知らなかった。タイムアウト設定が間違っていてユーザーが30秒フリーズ、エラーメッセージも不適切。テスト環境では「動く」が本番の複雑さは全く別物だった。
- 外部サービスが落ちたときの挙動を誰も知らない
- テスト環境では再現できない本番固有の障害
- 障害時に「とりあえず再起動」しか手がない状態
- ランブックが実際のシナリオと乖離している
カオス実験サイクル
カオス実験サイクル
核心概念を押さえる
制御された障害を意図的に発生させ、システムの弱点を事前に発見する実践。破壊ではなく「科学的実験」。
例:「Redisが落ちてもAPIはDBに直接アクセスして動き続けられる」という仮説を検証
「〇〇が壊れても△△は動く(定量的指標付き)」という形式で事前に立てる。定量化することで客観的に評価できる。
例:「DBが1台停止してもエラー率は1%以内に収まり、60秒以内にフェイルオーバーする」
実験が影響を与えうる範囲。最初は最小限(ローカル/ステージング)から始め、徐々に本番へ拡大。
例:Stage1: docker killでローカルプロセス停止 → Stage4: 本番の一部サーバーに適用
実験前に「エラー率X%を超えたら即中断」という条件を決めておく。これがないと単なる障害になる。
例:エラー率5%超過 または SEV2以上のアラート発火で実験を即時中止
チーム全体で定期的に模擬障害シナリオを実行する訓練。SpotifyやAmazonが定期開催し、障害対応の筋肉を維持。
例:四半期ごとに「本番DBが落ちたシナリオ」でチーム全員が対応訓練を実施
一部が壊れても全体が動き続ける能力。Circuit Breaker・タイムアウト・リトライ・フォールバックの4パターンで実現。
例:決済APIが落ちた場合、UI上は「後払いを選択してください」と代替フローを提示
Blast Radius(爆発半径)の段階的拡大
docker kill / tc netem で単一プロセスに障害
本番に近い環境で実験。ユーザー影響なし
カナリアや1台のみに適用。モニタリング必須
Netflix Chaos Monkey レベル。完全な自動化と監視が前提
AI で SRE の仕事はどう変わるか
- 実験仮説をエンジニアのブレインストーミングで立案
- 実験結果のレポートを手書きで作成
- システムトポロジーを手動で把握して脆弱点を推測
- ゲームデーのシナリオを毎回一から考案
- サービスマップを解析し「最も壊れやすい依存関係」を提案(Gremlin AI)
- 実験レポート・学習サマリーを自動生成(AWS FIS + Bedrock)
- 過去インシデントから「未検証の弱点」を自動発見(Chaos Genius)
- 実験中のメトリクスをリアルタイム解析し自動中断判断(Steadybit AI)
- 本番環境でのBlast Radius拡大の承認判断
- ビジネス影響を考慮した実験優先度の決定
- AI発見の弱点に対するアーキテクチャ改善設計
- 耐障害性の文化・方針をチームに根付かせる
主なツール:Gremlin AI、AWS FIS + Bedrock、Chaos Genius、Steadybit AI、OpenChaos
この先の見通し:2027年にはAIエージェントが自律的にカオス実験を設計・実行・分析し、「常にシステムの弱点を探し続ける」継続的な耐障害性検証が実現。人間は実験ポリシーの設計と大規模アーキテクチャ変更の意思決定に専念できる。
導入による効果の目安(業界の一般的な傾向)
- 年間実験数
- 3倍
- AI支援による実験加速
- 障害発見コスト
- -80%
- 本番障害vs事前実験の差
- 未知の脆弱性
- -60%
- 継続的実験による網羅
- ランブック精度
- +90%
- 実験で検証済みの手順