Netflix面白いですね。
何と言ってもオリジナルドラマのクオリティが高い。
最近では、「DEVILMAN」、新しく始まった 「ブラックライトニング」、次シリーズが待ち遠しい「ルシファー」、セカンドシーズンが始まった「スタートレック・ディスカバリー」、「Godless (ゴッドレス-神の消えた町)」も興味あるし、MARVELのヒーローたちの次シーズンも楽しみです。
ドラマとは思えないほどのクオリティと変なスポンサーのご機嫌取りをしている昨今の映画より素晴らしい。
何より、2時間前後の制約がないため脚本に無理がない。
と冒頭から熱く語ってしまったわけですが、
今回の「小僧の教えてIT」では、膨大な作品を世界中に配信しているNetflixのシステム面での凄さをお伝えいたします。
題して「Netflixの驚異的なトラブル対応 カオスエンジニアリングとは、何か?」
今回も小難しい専門分野をやさしく説明いたします。
最後までお付き合いいただけたら幸いです。
スポンサーリンク
目次
Netflixの規模
Netflixは2018年1月22日に2017年第4四半期(2017年10~12月)の業績を発表
米国 総加入者 5,475万人
国外 加入者数 6,283万人
全世界で190カ国で事業展開
この3ヶ月で833万人の利用者が増加
さらに2018年にはオリジナル動画のコンテンツ制作費用として70億ドル~80億ドル(約9,000億円)を投資
もう、ここまできたら映画なんてレベルではありません。
半端ない規模になっていますね。
ネット配信という世界だからできるものもあります。
しかし、これだけの視聴者に向けて映像を配信するというからには、かなり大規模なシステムが必要なはずです。
もっと言えば、システムのトラブルも多いはず。
しかし、自分が知る限り
「いつでも快適に視聴できています」
いったいどうなっているんだろう?
Amazon Web Servicesって凄い
Netflixは、Amazon Web Services(AWS)のクラウド上で動作しています。
Amazon Web Servicesというのは、あのネット通販のAmazonです。
Amazon Web Services(以後 AWSと略します)は、クラウド業者では、世界一です。
米調査会社のSynergy Researchは2017年7月27日、第2四半期の世界のクラウド市場のシェアを公表しました。
AWSのシェアは約34%
これをMicrosoftのAzureとGoogleCloudとIBMが追っかけています。
https://www.srgresearch.com/articles/leading-cloud-providers-continue-run-away-market
日本のクラウド会社は、NTTと富士通が10位以内にランキングされていますが、トップ3
AWS,Microsoft Azureの足元にも及びません。
さて、1億人以上の契約者に対して的確にストレスなく映像を送るシステムは、15万台以上の仮想マシン(サーバと置き換えてもかまいません)上で動いています。
15万台って??? PCだったらどんだけの高さ?
仮に1台のPCの高さが20cmとして3,000,000cm = 30000m=30Km
30Kmって成層圏 飛行機がせいぜい10Kmですから、どんだけ数が多いのか想像できないです。
AWSって凄い!
※クラウドとは?
「クラウド」とは、クラウドサービスプラットフォームからインターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソースをオンデマンドで利用することができるサービスの総称です。
ユーザーはワガママ
15万台の機器がトラブル無しで動作するとは、現実的ではありません。
必ず、トラブルがあるはずです。
システムは、人が造ったものである限り「必ず問題」があるはずです。
さらに言えば、インターネット回線のトラブル、AWSの障害もあるでしょう。
1億人以上の視聴者に対して「いつでも」「どこでも」「快適に」ドラマを配信しているわけですから
「自分が見たいときに見られない」
とかなりストレスが溜まりますよね。
「ええい! こんなサービスやめてやる」
「Amazonプライムビデオに行ってやる」
なんてなるかも知れません。
見たいものが見たいときに見られないと、人は、「こんなサービス許せない」と短絡的になる人もいます。
インターネットの世界では、匿名性があるため、SNSに悪口を書いて評判を落としてしまうかも知れません。
人は、ネット上のサービスで一度、ダメと決めつけたものをなかなか許さないものです。
そんな、わがままなユーザーに対して、想定されるあるいは、想定外のトラブルに対処をしないとサービスは破綻します。
カオスエンジニアリング
これだけ膨大で視聴者を世界中に抱えているNetflix
「カオスエンジニアリング」という手法を使って対応しています。
「カオスエンジニアリング」とは、
- 「自動復旧システム」が動作していることが前提
- 動作中にわざとサーバーダウンや応答遅延などの障害を発生させる。
⇒「カオスエクスペリメント」と呼ばれています。 - 「カオスエクスペリメント」を本番稼働中に日常的に発生させる。
- 自動復旧システムが復旧できるか確認する。
簡単に4項目で説明したのですが、これは、一歩間違えば、サービスを停止させる危険があります。
しかし、サービス中に試験をすることによって「自動復旧システム」が正常に稼働するかを常にチェックできます。
日本でも時々こんなニュースが流れます。
「緊急のときに動作しなかった」
とか
「予備の装置に切り替えできるはずだったのに予備が動作しなかった」
Netflixでは、常に予備、緊急に備えて本番中に試験を続けています。
これが、「カオスエンジニアリング」と呼ばれるものです。
[amazonjs asin="B016KDOC3Q" locale="JP" title="ネットフリックスの時代 配信とスマホがテレビを変える (講談社現代新書)"]
サルの軍団(Simian Army)
「カオスエンジニアリング」で使われる、障害を発生させるシステムのことをNetflixでは、「Simian Army(サルの軍団)」と呼んでいます。
カオスシステムで障害を発生させる「サルの軍団(Simian Army)」は、さらに細かくツールとして分類されています。
例えば
「Chaos Monkey(カオスモンキー)」
「Chaos Gorilla(カオスゴリラ)」
「Chaos Kong(カオスコング)」
下にゆくほど強そうですね
そうです、下にゆくほど 障害発生の規模や深刻度が増します。
「Chaos Kong(カオスコング)」
が最強で複数で一気に障害発生させるそうです。
また
「Latency Monkey(レイテンシーモンキー)」
というツールは、わざと「遅く」するシステムで遅くなったら「自動復旧システム」が、遅くならないように自動で解消します。
この「サルの軍団(Simian Army)」すべてGitHubというところで公開 しています。
簡単に言えば、今使っているシステムで「サルの軍団(Simian Army)」を飼う(使う)ことができます。
この技術を公開してしまっているというところが凄いです。
秘密主義の会社では、絶対に有り得ない。
でも一番すごいのは、「サルの軍団(Simian Army)」に対処できている「自動復旧システム」です。
スポンサーリンク
自動復旧システム
「サルの軍団(Simian Army)」に負けないように強化された「自動復旧システム」こそNetflixの技術人の努力の結晶だと思います。
さらに、万が一「サルの軍団(Simian Army)」が強かったり予想以上の問題が起きても本番に影響が少ないようにする「ChAP(チャップ=カオス・オートメーション・プラットフォーム)」というシステムも開発しています。
これらは、会社での内製(会社に所属しているエンジニアが造ったシステム)だからこそできることです。
日本のように「外注に丸投げ」では、絶対にできません。
断言できます。
この内製こそ、米国ITサービスの強さです。
まとめ
実際にサービスを行っているシステム上でわざとトラブルを発生させて自動復旧できるかの試験を常に実施しているNetflix
この「カオスエンジニアリング」は、Netflixだけではなく、米国内の金融機関でも行われているそうです。
Netflixのシニアカオスエンジニアであるノラ・ジョーンズ氏は、
「大規模な金融機関や製造業、ヘルスケア業界などでも適用されている」
と話しています。
金融機関のほうがシステムダウンで発生する影響がでかいですから、当然といえば当然です。
米AWSのエイドリアン・コッククロフト氏は
「多くの企業がオフィス火災の避難訓練を実施しているが、(カオスエンジニアリングのような)ITの避難訓練をしている企業は少ない」
さてさて、日本の企業でここまでのことをしているシステムはあるのかな?
このようなシステムの上でドラマが配給されているわけです。
どうりでNetflixは、快適なはずだ!
スポンサーリンク