カオスエンジニアリング(Chaos Engineering)とは?

カオスエンジニアリング(Chaos Engineering)とは、動画配信サービスを提供しているNetflix社が自社サービスを開発するにあたって「現在稼働中のプロ時ダクション環境(本番環境)に敢えて障害を発生させて、稼働しているシステムのどのような影響を及ぼし、それらを対処していくことによって、実際に発生するトラブルに対してより強靭で回復性の高いシステムを構築しよう」という感が方・取り組みです。

実際に、カオスエンジニアリングを実践してきたNetflixは、2015年に発生した大規模なAWS障害を乗り越え、また、2018年に行われた AWS re:Iventでその取り組みについて大々的に紹介されたこともあり、世界的に有名な取り組みになりました。

カオスエンジニアリングを構成する5つの原則

カオスエンジニアリングを理解するためには、まず、Chaos Engineeringの5つの原則について理解しなければなりませんので、さっそくご紹介していきます。

1.Build a Hypothesis around Steady State Behavior.

定常状態の動作に関する仮説をたてる。

システム全体のスループット、レイテンシ等々の数字はシステムの定常状態を占める重要なデータとなるので注視し、仮説を立てる必要がある。

2.Vary Real-world Events.

直訳するとVaryは、変える。という意味の単語ですが、Changeと異なるのはその対象が「様々な異なるものを持ったもの」が変わるという点です。Changeは、例えるならば0から1に変わる。これがChangeです。変わる対象が異なってきます。ここでいうEeal-world Eventsは、実世界のように事象は多様であり様々なものであることから、システム上で発生するイベントも多様で様々であることを念頭に想定される障害や潜在的影響に優先順位付けを行い対応していくということを示しています。

3.Run Experiments in Production

本番環境でテストを実行する。

実際のトラフィックをサンプリングすることが最も確かで重要であるとしています。

4.Automate Experiments to Run Continuously

テストを自動化して継続的に実行する。手作業によるテストの多くは人でが必要な上、ヒューマンミスも多く、継続的に実施することは難しいので、テストは自動化し継続的に行うものだとしています。

5.Minimize Blast Radius

影響の及ぶ範囲を最小化する。これは、もう当然のことですね。

アンチフラジャイル(Antifragile)なシステムとは?」の記事でも同じことを書きましたが、Netfilixのカオスエンジニアリングの「カオス」は、「混沌)という意味ではありません。カオス理論:chaos theory、複雑系のカオスのことで「複雑な」という意味で使われています。※本当のことはわかりませんが。。

本日は、Netflixが提唱する「Chaos Engineering」についてご紹介してみました。

お疲れ様でした。