カオスエンジニアリング
本番に近い環境でわざと障害を起こし、システムが耐えられるかを実験で確かめて改善する実践です。「落ちないこと」ではなく「落ちても大丈夫」を検証します。
- 1.カオスエンジニアリングは、本番に近い環境で意図的に障害を注入し、システムの耐障害性を“実験”で検証・改善する手法。
- 2.進め方は仮説(定常状態)を立て→現実の障害を1つ注入→影響を観測→学びを反映、を小さく安全に回す。
- 3.目的は壊すことではなく、未知の弱点を“本番が暴れる前に”見つけること。爆発半径を絞り、すぐ止められる安全装置が必須。
カオスエンジニアリングとは
カオスエンジニアリング は、本番に近い環境でわざと障害を起こし、システムがその障害に耐えられるかを実験で確かめる 実践です。Netflix が有名な「Chaos Monkey」(本番のインスタンスをランダムに落とすツール)で広めました。
発想の転換が肝です。分散システム(/architecture/microservices/)は複雑すぎて、「どこがどう壊れると何が起きるか」を机上で完全には読めません。そこで 「いつか必ず起きる障害」を、こちらが主導権を持って・安全な状況で先に起こし、システムの本当の反応を観測する。「落ちないこと」を祈るのではなく、「落ちても大丈夫」を確かめる わけです。
カオスエンジニアリングは無謀なイタズラではありません。仮説に基づいた管理された実験 です。影響範囲(爆発半径)を絞り、異常が出たら即座に止められる安全装置を用意したうえで行います。無計画に本番を落とすのは、ただの障害です。
4つの原則
カオスエンジニアリングの実験は、次の流れで設計します(principlesofchaos.org が示す枠組み)。
- 定常状態を定義する:「正常」を 計測可能な指標 で表す。例:注文成功率、レイテンシ、スループット。CPU 等の内部値より ユーザー体験を表す指標(/devops/sre-slo/ の SLI)が望ましい。
- 仮説を立てる:「この障害を入れても、定常状態は維持されるはず」と予想する。
- 現実に起こりうる障害を注入する:サーバ停止、ネットワーク遅延、依存サービスの応答不能など、実際に起きうる事象 を再現する。
- 仮説を検証する:定常状態が崩れたか観測する。崩れたら そこが弱点。学びを設計や対応手順に反映する。
ポイントは「システムを反証しにいく」姿勢です。仮説が崩れた(=弱点が見つかった)ときこそ、本番障害になる前に直せる最大の収穫になります。
注入する障害の例
「現実に起こりうること」を再現するのが原則です。代表的なものを挙げます。
- リソース系:CPU・メモリ・ディスクを枯渇させる。
- ネットワーク系:遅延(レイテンシ)注入、パケットロス、特定サービスへの通信遮断。
- インスタンス系:仮想マシンやコンテナ、Pod を突然停止させる。
- 依存先の異常:DB や外部 API が エラーを返す/遅くなる 状況を模す。
これらを通じて「再試行は効くか」「タイムアウトは適切か」「フォールバックは動くか」「監視は気づけるか」を一度に試せます。サービスメッシュ(/devops/service-mesh/)を使うと、遅延やエラーの注入をアプリ改変なしで行えます。
進め方:小さく安全に始める
いきなり本番で大暴れさせるのは禁物です。爆発半径(blast radius)を最小から広げていく のが鉄則です。
| 段階 | 環境 | 爆発半径 | 狙い |
|---|---|---|---|
| 1 | ステージング | 最小 | 実験設計と安全装置の検証 |
| 2 | 本番(ごく一部) | 1インスタンス等に限定 | 現実の挙動を低リスクで観測 |
| 3 | 本番(徐々に拡大) | 段階的に増やす | 実運用規模での耐性確認 |
各段階で 「異常を検知したら即時に実験を中止し、元に戻す」アボート条件 を必ず先に決めます。定常状態の指標が閾値を割ったら自動で停止する、という安全弁です。
ツールでの自動注入の前に、人が集まって計画的に障害シナリオを試す「ゲームデー」 から始めると安全です。「この依存が落ちたらどうする?」をチームで実演し、対応手順(/devops/incident-postmortem/)の穴も同時に洗い出せます。
前提条件:先に整えるもの
カオスエンジニアリングは、それ単体では成立しません。先に揃えるべき土台があります。
- オブザーバビリティ:障害を入れた影響を 観測できなければ意味がありません。メトリクス・ログ・トレースが整っていることが前提(/devops/observability/)。
- すぐ戻せる仕組み:実験を即中止し、健全な状態へ戻せること。
- 障害対応の体制:万一実験が想定外に波及したときに対応できること。
何が起きているか見えないシステムに障害を注入しても、得られるのは「なんか壊れた」という情報だけです。まず可観測性を整える。カオスエンジニアリングは、観測基盤が整った組織の次の一手です。
まとめ
- カオスエンジニアリングは 意図的な障害注入でシステムの耐性を実験的に検証・改善 する手法。
- 定常状態の定義 → 仮説 → 現実的な障害の注入 → 検証 のループを回す。
- 目的は破壊ではなく、本番が暴れる前に未知の弱点を見つける こと。
- 爆発半径を絞り・即中止できる安全装置・観測基盤 を前提に、小さく始めて広げる。
DevOps/インフラ Article
カオスエンジニアリングを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
カオスエンジニアリング
比較で見る軸
難易度: advanced / カテゴリ: DevOps/インフラ / タグ数: 4
導入後に効く点
進め方は仮説(定常状態)を立て→現実の障害を1つ注入→影響を観測→学びを反映、を小さく安全に回す。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- DevOps/インフラ
- タグ数
- 4
判断チェックリスト
- 自社の用途が「カオスエンジニアリング / 信頼性」に近いか確認する。
- 強みである「カオスエンジニアリングは、本番に近い環境で意図的に障害を注入し、システムの耐障害性を“実験”で検証・改善する手法。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。