カオスモンキーとは何ですか?カオスエンジニアリングの説明

Chaos Monkeyは、DVDの配布からストリーミングビデオ用の分散クラウドシステムの構築への移行中にNetflixのホールから開拓され、あらゆる形状とサイズのソフトウェア開発組織に採用されているエンジニアリングの原則を導入しました。つまり、システムを意図的に破壊することによって、それらをより弾力的にすることを学ぶことができます。

2011年7月にクラウドおよびシステムインフラストラクチャのディレクターであったYuryIzrailevskyと、ストリーミング会社のクラウドソリューションのディレクターであるAriel Tseitlinによって公開された、このトピックに関する元のNetflixブログ投稿によると、ChaosMonkeyはそのAmazonWeb Servicesインフラストラクチャにより、Netflixエンジニアがより優れた自動回復メカニズムを構築することで解消できる弱点が明らかになります。

キャッチーな名前は、「データセンター(またはクラウドリージョン)で武器を使って野生の猿を解き放ち、インスタンスをランダムに撃ち落とし、ケーブルを噛むというアイデアに由来します。その間、中断することなくお客様にサービスを提供し続けます」とブログ投稿状態。

実際には、これには、「各クラスターからランダムにインスタンスを選択し、営業時間中のある時点で、警告なしにインスタンスをオフにする」という単純なアプリケーションが含まれます。元NetflixのエンジニアであるNoraJonesとCaseyRosenthalが、O'Reilly Mediaから出版されたトピックに関する包括的な本、Chaos Engineeringで詳しく説明されているように、これは毎日行われるでしょう。

エンジニアは、自分の弱点がどこにあるかを学習することで、問題と戦うための自動トリガーを設定し、何か問題が発生した場合に深夜に電話をかけないようにすることができます。それ以来、カオスモンキーは、カオスエンジニアリングの旗印の下で、あらゆる種類のカオス原理に進化してきました。

Netflixのカオスモンキー

Chaos Monkeyは、2010年頃にNetflixでのエンジニアリングの取り組みから生まれました。このとき、現在Microsoftが所有するGitHubで働いているGreg Orzellは、会社の新しいクラウドベースのアーキテクチャに復元力を構築する任務を負っていました。

「カオスモンキーについての私の考え方は、エンジニアリングの大きな偉業ではありません」とOrzell氏は語りました。「それがもたらす価値は、DVDの出荷からインターネット経由のストリーミングに移行したときに重要だった考え方の変化です。」

当初、Netflixのエンジニアは、オープンソースツールの「SimianArmy」を使用してシステムにさまざまな停止や問題を導入しました。ChaosMonkeyがAWSクラスターを削除するなど、それぞれが特定の種類の障害を説明していました。

元の軍隊(現在はほとんどが新しいツールを支持して引退)には、RESTfulクライアントサーバー通信レイヤーに人為的な遅延を引き起こすLatency Monkeyや、各インスタンスで実行されるヘルスチェックを利用するDoctorMonkeyなどが含まれていました。 、およびその他の外部の正常性の兆候(CPU負荷など)を監視して、異常なインスタンスを検出し、必要に応じてサービスから削除します。

Chaos Kongは、AWSアベイラビリティーゾーン全体の停止をシミュレートすることで、ChaosMonkeyを次のレベルに引き上げました。「AWSリージョンが利用できなくなることは非常にまれですが、実際に発生します」と、2015年のNetflixブログ投稿で概説されています。 

「地域の停止をシミュレートする実験を定期的に実行することで、システムの弱点を早期に特定して修正することができました」と投稿は続けています。「US-EAST-1が実際に利用できなくなったとき、私たちのシステムはすでにトラフィックフェイルオーバーを処理するのに十分な強度を備えていました。」

ジョーンズとローゼンタールが彼らの本で概説しているように、インフラストラクチャでカオスコングを解き放つことは、「ストリーミングサービスのすべての側面を監視するために組み立てられた「戦争室」を備えた白いナックル事件であり、それは数時間続きました」。

2年後の2017年7月、NetflixはChAP、Chaos Automation Platformを導入しました。これは、「ユーザー指定のサービスの展開パイプラインに問い合わせます。次に、そのサービスの実験クラスターと制御クラスターを起動し、少量のトラフィックをそれぞれにルーティングします」とブログ投稿は述べています。

カオス工学の原理

基本的なカオスモンキーの実践は急速に進化し、カオスコングを介した展開はますます大きくなり、後にカオスエンジニアリングとして形式化されました。Netflixは、2015年まで独自の正式なカオスエンジニアリングチームを構築しませんでした。そのチームは、現在StitchFixのエンジニアリングディレクターであるBruceWongによって率いられました。

カオスエンジニアリングの原則は、カオスモンキーの原作者の何人かによって正式に照合され、その実践を次のように定義しています。

実際には、これは4段階のプロセスの形をとります。

  1. システムの「定常状態」を定義して、通常の動作のベースラインを設定します。
  2. この定常状態は、対照群と実験群の両方で継続すると仮定します。
  3. サーバーのクラッシュ、ハードドライブの誤動作、ネットワーク接続の切断など、実際のイベントを反映する変数を導入します。
  4. 対照群と実験群の違いを探して、仮説を反証してみてください。

定常状態を中断するのが難しい場合は、堅牢なシステムがあります。弱点がある場合は、修正する必要があります。

「 『The Principles』が発行されてから5年間で、カオスエンジニアリングが進化し、新しい業界の新しい課題に対応できるようになりました」とジョーンズとローゼンタールは述べています。「実践の原則と基盤は、採用がソフトウェア業界を通じて新しい垂直市場に拡大するにつれて進化し続けることは確実です。」

カオスモンキーによるカオスエンジニアリング

Chaos Monkeyのオープンソースバージョンを実行するには、GitHubで概説されているように、システムが特定の一連の前提条件を満たしている必要があります。

Chaos Monkeyはサービスとして実行されないため、GitHubページで概説されているようにcronジョブを設定する必要があります。その後、Chaos Monkeyを週に1回呼び出して、終了のスケジュールを作成します。

このバージョンのChaosMonkeyを使用するには、Netflix独自のオープンソースの継続的デリバリープラットフォームであるSpinnakerを使用している必要があります。これにより、特定の組織がこの方法を採用する能力が制限される可能性があります。Chaos Monkeyには、MySQL互換のデータベースバージョン5.6以降も必要です。

サービス所有者は、Spinnakerを介してChaosMonkey構成を設定します。Chaos Monkeyは、Spinnakerを介して、サービスのデプロイ方法に関する情報を取得し、指定した頻度とスケジュールでランダムにインスタンス(仮想マシンまたはコンテナー)を終了します。

もちろん、Chaos Monkeyの実装は、システムの復元力の問題を解決するという困難で複雑なタスクの始まりにすぎません。カオスモンキーは、システムの弱点を明らかにするだけです。その場合、原因を特定して解決策を考え出すのは、DevOpsまたはシステムエンジニアリングチームの責任です。

「工具自体は高価ではありませんが、工具に反応するために投資する必要があります」とOrzell氏は述べています。カオスエンジニアリングに取り組むには、リソースを新機能の構築から回復力の強化にシフトする必要もあります。「すべてのビジネスはそのスペクトルの異なるポイントにあり、それぞれがそのスペースでダイヤルアップまたはダイヤルダウンする量を決定する必要があります」と彼は付け加えます。

ジョーンズとローゼンタールは、初期の頃、Netflixのエンジニアは「特に金融機関から多くの反発を受けた」と述べています。

銀行の利害関係は高いものの、依然として停止に苦しんでいたため、「大規模で制御されていない結果を防ぐためにリスクを理解するためのカオスエンジニアリングなどのプロアクティブな戦略」を慎重に実施することで、これらの組織の多くは考え方を変えました。本に詳述されているように、採用者。

カオスエンジニアリングリソース

ここでも、話題の最新かつ決定的な本ですカオスエンジニアリング2017本でコンパイル、元Netflixの作品の多くに、それらの著者を構築する2020年4月に発表されたエンジニアノラ・ジョーンズとケーシー・ローゼンタール、、、そして他の人がカオスエンジニアリング。より実用的な概要については、RussMilesのLearningChaosEngineeringを参照してください。

Netflixは、チュートリアル、多くのドキュメント、エラーカウンター、停止チェッカー、復号化ツールなど、GitHubのトピックに関する豊富なリソースを提供します。

カオスエンジニアリング実験を実行するための商用ツールのプロバイダーであるGremlinは、独自の包括的なリソースセットを提供しており、オンラインおよびPDF形式で無料で入手できます。同社はまた、ChaosConfやSlackチャネルなどのさまざまなコミュニティの取り組みを支援しています。

O'Reillyには、このトピックに関する本やビデオの便利なプレイリストなど、豊富なリソースもあります。