Netflixが障害時の負荷分散について説明。優先順位を付けトラフィックを制限
NurPhoto via Getty Images

コロナ禍の中、Netflixの視聴者数は増加しており、それに伴いサーバー負荷も増大していると考えられます。にもかかわらず、地域によっては1時間程度の停止などは発生しているものの、2020年には全世界でのサービス停止などを伴う大規模な障害は発生していません。これは偶然ではなく、Netflixの努力があってのこと。Netflixは11月2日(現地時間)、障害発生時にサービスを停止することなくトラフィックを管理する、優先順位を付けた負荷分散の仕組みについて詳しい解説を公開しました。

Netflixはもともと、中央集権的なものではなく、小さなサービスが集まって全体を構成するマイクロサービスの形を取っています。このため一部のサーバーでハード障害が発生したとしても、サービス全体が停止する可能性は低くなっています。これを利用し、常に障害を起こし続けることで自動復旧の動作確認を行い、大規模障害に備えるカオスエンジニアリングを採用しているのは有名な話です。

とはいえ、システムの一部が停止することで、他の部分のトラフィックが増加するなどし、2次的な障害の発生も考えられます。このため、Netflixでは、トラフィックの重要度を3段階に分け、ユーザーの視聴体験に直接影響しないトラフィックを制限することで、サービス停止を回避する方法を導入しました。この重要度の判別を行っているのがAPIゲートウェイサービスのZuulで、そのソースコードはGithubで公開されています。

実際のところ、2020年にも2019年に発生していた世界規模のサービス停止と同様の障害が発生していたにもかかわらず、この仕組みによりサービスが停止することなく復旧できたとのことです。Netflixは、今後も負荷制限の閾値を調整するなどのアプローチを続けていくとしています。

なお、2020年3月には、欧州でビットレート制限を実施していましたが、これはNetflixの負荷分散のためではなく、欧州全体でネットワークを流れるデータ容量を削減するためのものでした。

Netflix、EUで30日間ストリーミングの画質低下。データ消費量が25%削減の見通し

source: Netflix