カオスエンジニアリング
かおすえんじにありんぐ
English: Chaos Engineering
意味
カオスエンジニアリングとは、本番稼働中の分散システムに対して、意図的にサーバーダウンや通信遅延などの障害(カオス)を注入し、システムが予期せぬ事態に耐えられるかという回復力(レジリエンス)を検証・強化する手法。
概要
分散システムにおいて、本番環境であえて疑似的な障害(サーバーを落とす、通信を遅らせるなど)を発生させることで、システムの弱点を見つけ出し、耐障害性を高める取り組み。 「壊れないように祈る」のではなく、「実際に壊してみることで、壊れない仕組みを作る」という逆転の発想です。
Chaos Monkey
動画配信サービスのNetflixが開発したツールが有名です。AWS上のサーバーをランダムにシャットダウンさせるプログラムで、「訓練されたサルがデータセンターで暴れ回っても、サービスが止まらないか?」を確認するために作られました。
原則
- 仮説を立てる: 「このDBが落ちても、キャッシュが効いてトップページは表示されるはずだ」。
- 実験する: 実際に落としてみる(本番環境でやるのが理想)。
- 検証する: 仮説通りだったか?想定外のエラーが出なかったか?
これにより、大規模災害などが起きても、システムが自律的に回復できる力(レジリエンス)を養います。