TL; DR:カオスモンキーた2010年に開発されたのはNetflixと2012年に野生の中に放出の一部であるサル軍、の間で大人気の献身的な信者。カオスエンジニアリングの原則に基づいて構築された軍隊は、システムに絶え間ない障害を注入することにより、障害に対する回復力を高めます。
概念
Chaos MonkeyはAWS用に特別に開発されたもので、Auto Scaling Group内のインスタンスをランダムに強制終了します。エンジニアが警戒し、発見された障害に迅速に対応できる営業時間中に実行することを意図しています。
シミアン軍
軍隊のメンバーは他の手段で混乱をまきます:
他のサルは役に立ち、群れの弱いメンバーを取り除きます:
Conformity Monkeyは、ベストプラクティスに従っていないインスタンスをシャットダウンします。
Security Monkeyは、構成およびサービスの既知のセキュリティ脆弱性を探します。
Doctor Monkeyは、特定のメトリックに適合しない不健全なインスタンスをシャットダウンします。
Janitor Monkeyは、未使用のリソースを探して回収します。
失敗は避けられない
システムの障害は避けられないものであり、常に何かがうまくいかないでしょう。何を選択することはできないかもしれませんが、いつ選択するかを試すことができます。1日を通して小さなエラーを導入することにより、エンジニアの存在を確認できます。準拠していないサービスを迅速に強制終了することにより、展開の前に障害が頻繁に発生するようにします。環境をより敵対的にすることで、サービスが本番環境に入る前に問題に遭遇するのは開発者であることを保証します。新しいサービスと古いサービスの統合フェーズでは、障害はすぐに明らかになりますが、それは問題ありません。古い本番サービスはすでに回復力があるからです。
ペットではなく牛
誰もが最近あなたに言うでしょう:あなたのサーバーをペットとして扱わないでください。数には力があり、単一障害点はシステムをダウンさせます。サーバーをどれだけうまくチューニングして最適化しても、どんなにハードなハードウェアを手に入れても、どれだけ処理できても、小さなスケーラブルなインスタンスの群れには決して合いません。カオスモンキーは、遅かれ早かれ、モンキーがやってくるので、すべての障害点を取り除くことを考えることをお勧めします!誰もが失敗し、Amazon S3でさえ予測不可能な停止がありました。
耐脆弱性
それでは、理論とは何で、なぜ機能するのでしょうか?Nassim Nicholas Talebは、Antifragileの本で、生きている自己認識システムが、ランダム性のわずかなレベルから利益を得て、逆境に直面して実際に良くなるという概念を説明しています。これはアニーリングに似ています。
彼はまた、システム内の部品の脆弱性が全体の反脆弱性に移行している進化的な方法についても説明しています。転送は次の2つのレベルで発生します。
小さなランダムなバリエーション(開発者が変更を加える)により、環境に最も適したものが存続して伝播し、テストに合格してデプロイされます。標準開発ライフサイクル。
環境内のより大きなレベルのランダム性に耐えることができない部分の故障により、それに耐えることができた残りの部分は、全体として以前よりも変化する環境によりよく対処できるシステムを構成します。これは本質的にカオスモンキーです。
2番目のアプローチを使用すると、より大きなレベルのランダム性に耐えることができます。