4年の新宮です. 今回は現在自分の研究の検証等でカオスエンジニアリングツールを用いているためカオスエンジニアリングについて書いていこうと思います.
カオスエンジニアリングはわざと本番環境で稼働している分散システムに障害を発生させることで実際に発生しうる障害に対処できるように事前に準備を行う手法のことを言います. カオスエンジニアリングは動画配信サービスを提供しているNetflixが用いていることで有名です.
今日の分散システムでは冗長化されており, さらに自動復旧機能を持つように設計されている事が多くそれらが正しく機能するかを確認するためにテスト環境ではなく, 本番環境で障害をわざと発生させます. また, 発生させる障害も様々でノードやコンテナの停止からネットワークの遅延やパケットロス、CPUの負荷などがあります.
わざと障害を発生させるためのソフトウェア群をカオスエンジニアリングツールと呼び, Netflixが開発したkubernetesコンテナに障害を発生させることのできるChaos Monkeyが有名です. ちなみに自分の研究ではDocker Compose上に複数のコンテナを稼働させてそれらの疎通を断ちたかったためPumbaというカオスエンジニアリングツール用いています.
分散システムでは障害を発生させないのではなくて障害が発生しても問題なく稼働し続けることができることが大切であるため, 障害が発生した際の挙動を理解することのできるカオスエンジニアリングという手法が有効であるということが分かりました.