カオスエンジニアリングはわざと本番システムの一部に障害(サーバーダウンや応答遅延)を起こしてすぐ自動復旧させることを繰り返し、本当の障害発生に備える運用方法である。動画配信大手の米ネットフリックス(Netflix)が米アマゾン・ウェブ・サービスのクラウド「Amazon Web Servies(AWS)」上のシステムを対象に実践していることで知られる。
テスト環境ではなくあえて本番環境に障害を起こすのは、自動復旧の仕組みが実際に想定通り動作することを確かめるためだ。テスト環境でうまく動作しても本番環境では問題が起こるリスクがある。このリスクをなくす。
本番環境の一部に障害を起こしてもシステムが継続稼働するように、システムは冗長構成にする。加えて素早く自動復旧する仕組みを設ける。
意図的に本番環境で障害を起こすことを「カオスエクスペリメント」と呼ぶ。カオスエクスペリメントでは「障害注入テスト(FIT=Failure Injection Testing)」を日常的に繰り返して、システムの「弾力性」を検証する。弾力性とは障害が起こってもユーザーに悪影響を与えないことを示す指標である。
ネットフリックスはカオスエンジニアリングのためのツールを開発している。広く知られているのは「Chaos Monkey(カオスモンキー)」「Chaos Gorilla(カオスゴリラ)」「Chaos Kong(カオスコング)」だ。
カオスモンキーは本番環境の仮想マシンをランダムに停止させる。カオスゴリラは1つのアベイラビリティーゾーン(高速ネットワークで結んだデータセンター群)にある同社の本番環境を一気にダウンさせる。カオスコングは複数のアベイラビリティーゾーンで構成されるリージョン単位で同社の本番環境に障害を起こす。
他にも「Latency Monkey(レイテンシーモンキー)」がある。これはシステム内部の連携に使うWeb API(アプリケーション・プログラミング・インターフェース)で意図的に遅延を発生させる。