見出し画像

冗長化の難しさとNetflixの答え

この世には、ダウンすることが許されないシステムが存在する。金融機関の基幹系、原子力発電所や鉄道の制御システム、流通業の物流管理システムなどはもちろんであるが、最近ではtoCのサービスでもダウンタイムが長くなると大事件として騒がれ、ヤフトピに載ってしまったりする。

ではダウンへの対策はどうするかというと、いくつか手法はあるのだけど代表的なのは「冗長化」である。簡単に言うと、全く同じシステムを裏側に待機系として用意して、有事の際は自動的に切り替わるようにしておくのである。素朴だが、殆どのシステムではこの種の仕組みを用意している。

それでうまくいけばいいのだけど

じつは、この待機系への切り替えというのは鬼門であり、高確率で失敗する事になる。

[続報]東証のシステム障害、原因はハードウエア故障後の切り替えミス
http://itpro.nikkeibp.co.jp/article/NEWS/20120202/380044/

東証で半年ぶりシステム障害、切り替えに失敗(Tdex+)
https://www.bloomberg.co.jp/news/articles/2012-08-08/M8DXRW1A74E901

富士通館林システムセンターの電源装置故障はUPSの切替動作障害
http://control.shado.jp/2012/0714193402.html

切り替え自体は滅多に発生しないものだし、待機系は普段は稼働していないわけで、いきなりドドンとぶっつけ本番でスイッチする事になり、なんかかんか上手くいかなくて障害になる。パッと思いつくだけでも、

・常用系と同じ不具合があり共倒れ
・切り替え装置に不具合
・時間が立つにつれ、待機系と常用系の仕様乖離が発生
・待機系が負荷に耐えられない

など色々な原因が思いつく

Netflixさんの逆転の発想

Netflixは有名な動画配信サービスで、Amazonのクラウドで運用されている。そのインフラでは、もちろん冗長化施策が色々行われているわけだが、なんと本番稼働しているサーバーをランダムに落としまくり、待機系に無事に移行できるかを確かめている。

サービス障害を起こさないために、障害を起こし続ける。逆転の発想のツールChaos Monkeyを、Netflixがオープンソースで公開
http://www.publickey1.jp/blog/12/chaos_monkeynetflix.html

理屈は分かるのだが、本当にやろうと思うのが凄い。クラウドのような究極な仮想化環境だとまだ実現しやすいとは思うが、本番環境でやるとなると腰が引けてしまうと思う。

Chaos MonkeyのOSS版はいまでもメンテされていて、最近だとDockerコンテナにも対応するようになった。

Netflix/chaosmonkey
https://github.com/Netflix/chaosmonkey

いやはや

毎日実際に火災を起こして避難訓練をするようなものですよね。でも、エンジニアの稼働時間内にダウンをセットしておけば、イレギュラーなケースにも対応できるし、全体の可用性を上げる上で示唆深い設計だなあと思いました。

こんぴゅです! 外苑前から皆様に役立つテックな話題をお届けしております。もし100円でもサポいただければ励みになります。記事もグレードアップします。何卒よろしくお願いいたします