サービス障害を起こさないために、障害を起こし続ける。逆転の発想のツールChaos Monkeyを、Netflixがオープンソースで公開
米国でビデオオンデマンドサービスを提供しているNetflixは、Amazonクラウド上でわざとシステム障害を起こすためのツール、Chaos Monkeyをオープンソースで公開しました。
Chaos MonkeyはAmazonクラウド上で使うツール。Amazonクラウド上のインスタンスをランダムに落としまくることで、サービスに対して仮想的な障害を引き起こしてくれます。
NetflixはこのChaos Monkeyを実環境で使うことで、本物の障害が起きたとしてもサービスが継続できることをテストし続けてきました。Netflixのブログ「Chaos Monkey released into the wild」から引用します。
There are many failure scenarios that Chaos Monkey helps us detect. Over the last year Chaos Monkey has terminated over 65,000 instances running in our production and testing environments. Most of the time nobody notices, but we continue to find surprises caused by Chaos Monkey which allows us to isolate and resolve them so they don't happen again.
さまざまなシナリオの障害の検出をChaos Monkeyは手伝います。昨年、Chaos Monkeyは本番環境やテスト環境で6万5000以上のインスタンスを強制終了させました。たいがいの場合そのことに誰も気づきませんが、たまにChaos Monkeyが原因で驚くようなことを発見することができ、それを分離し、解決できるようにしてくれます。そのおかげでそれはもう二度と起こりません。
エンジニアがいるときだけ、わざと障害を起こせる
Chaos Monkeyはあくまでも障害を発見し、対策するのを助けるためのツールですから、デフォルトでエンジニアが対応できる時間帯に活動するようにセットされています。
The service has a configurable schedule that, by default, runs on non-holiday weekdays between 9am and 3pm.
サービスはスケジュールが設定可能で、デフォルトでは平日の午前9時から午後3時のあいだ実行するようになっている。
(略)we want to make sure there are people around to resolve and learn from any problems. With this in mind, Chaos Monkey only runs within a limited set of hours with the intent that engineers will be alert and able to respond.
私たちは、問題を解決し、そこから学べるような人がその場にいることを確認しておきたいのだ。このことを念頭に、Chaos Monkeyは限られた時間設定の中でのみ動くようになっており、エンジニアが対応できるようにしている。
Chaos Monkeyは障害を起こす確率も調整可能で、最大でAuto Scaling Groupから1日に1つのインスタンスを強制終了。これを0.2に落とすと週に1回程度になります。
障害があることを日常とする
ずいぶん前に、Netflixが本番環境でわざと障害を起こすツールを日常的に使っている、ということを初めて知ったときには「なんという大胆な発想だろう」と思いました。
しかし、システムが大規模になればなるほど、そのどこかで障害が起きるもの。であれば、あえてわざと管理された範囲内の障害を日常的に引き起こし、それに日常的に対応できていることを証明し続けることで、本物の障害が起きても問題なく対処できることが証明できるわけです。
昼間にわざと障害を起こして、それが何の問題もなくシステム的に乗り越えられていれば、夜中に障害が起きても心配する必要もなく、安心してシステム管理者が眠れることでしょう。クラウド時代だからこそ登場した運用管理の発想といえそうです。
関連記事
JaSST'23 Tokyoのでは、カオスエンジニアリングを定義したケイシー ローゼンタール氏が基調講演を行いました。
AWSやMicrosoft Azureも同様のサービスを発表しています。
- [速報]AWS、クラウド障害をわざと起こす「AWS Fault Injection Simulator」発表。カオスエンジニアリングをマネージドサービスで実現。AWS re:Invent 2020
- Microsoft Azure、わざと障害を発生させてサービスの耐障害性を鍛える「Azure Chaos Studio」発表
その他の関連記事
あわせて読みたい
2012年秋のIT系イベントは盛りだくさん。クラウドごった煮/HTML5 Conference/XP祭り/PyCon/Node.jsなどなど
≪前の記事
Windows Azureの欧州リージョンがダウンした原因は、ネットワークの設定ミスとバグだったとマイクロソフトが報告