猿が暴れてクラウドの障害に強くなるNetflixのシステム

http://techblog.netflix.com/2013/10/introducing-chaos-to-c.html

1 comment | 0 points | by Jshiike 3年以上前


Jshiike 3年以上前 | ▲upvoteする | link

歴史上の有名な開発プロジェクトからまなぶべきこと」をまとめていたときに、Videoの中で、ある大型ロケットエンジンの開発において、信頼性テストのために小型爆弾をエンジンの噴射口辺りで爆発させて耐性を調べた云々のエピソードが紹介されていて、更に続いて「ネット業界で同じようなことをやってるのはNetflixぐらいだ。」という説明がありました。その時は何のことだかよくわからなかったのでブログでは取り上げなかったのですが、今回見つけました。


以前紹介したように、北米のインターネットトラフィックの30%以上を占めるNeflixはインフラをAmazonに全面的に移行しています。クラウドに移行した後の学びとして、



自社データセンターの時は、個別のハードウェアインスタンスが障害になる可能性はかなり低く、ネットワークも超高速の信頼性の高いものだった。AWSは高度に分散化しているが、障害によりインスタンスを統合する必要性がでることと、ネットワークのスピードがマチマチであることを前提に考えなくてはいけない。


個々のコンポーネントが100%稼働する前提ではないクラウドのインフラにおいては、個別のコンポーネントの障害がシステム全体に影響を及ぼさない仕組みにする必要がある。何らかの障害でレスポンスが遅くなっても、ユーザ別のレコメンドタイトルよりも全体に人気のあるタイトルの配信を担保するとか、検索結果スピードよりもストリーミング配信の担保を優先するとかの対応ができるようなシステムが求められる。



を挙げています。そこでつくられたのがChaos Monkeyというツールで、AWSを利用したNetflixのアーキテクチャ内で、ランダムに本番環境のインスタンスを無効にします。そして、それがシステム全体、ひいてはエンドユーザに影響を与えないことを確認することを目的としています。野生の猿がクラウド内で暴れるイメージで命名されたChaos Monkey (暴れ猿) の成功を受けて、更に同社は、



Latency Monkey (遅延猿): サービスのグレードダウンをシミュレーションするために、RESTfulクライアントサーバのコミュニケーションレイヤを遅延させ、上流のサービスが適切にレスポンスできているかどうか確認するシステム。また、大幅な遅延をつくりだすことにより、サービスがダウンして、どう復旧するのかというテストにも使える。


Conformity Monkey (遵守猿): ベストプラクティスに従った設定ができていないインスタンスを見つけ、強制的にシャットダウンし、担当部門に再設定 & 再起動を促すシステム。


Doctor Monkey (医者猿): インスタンスを巡回し、稼働状況の確認やCPU負荷などの他指標も確認し、問題があれば本番サービスから強制的にはずし、担当部門に根本原因の確認を促す & 必要あらば完全に無効にするシステム。


Janitor Monkey (掃除夫猿): 未利用のリソースを見つけ、廃棄するシステム。


Security Monkey (警備猿): セキュリティポリシー違反もしくは脆弱性を見つけ、関連するインスタンスを無効にする。SSL & DRM証明が有効性であることも確認する。


10-18 Monkey (|10n-i18n, ローカリゼーション/インターナショナライゼーション猿): 複数言語に対応するインスタンスの設定とランタイムの問題を検知する。


Chaos Gorilla (暴れゴリラ): Chaos Monkeyと同じ機能を、AWSの地域ゾーン全体に反映するシステム。Netflixのサービスが、ユーザに影響なく、かつ手動対応なしで、自動的に障害に対応してバランスを取ることができるかどうか確認する。 



導入しています


また、Chaos Monkeyの詳しい説明はこちら。最近の動きはこちら。ソースコードはGithubで公開されています



ワザノバ TOP100 アクセスランキング [8/25-10/12]



#netflix #aws #障害対応 #自動化

Back