ブログ | NGINX

Netflix が CDN の中核として NGINX を選んだ理由

NGINX-F5 水平黒タイプ RGB の一部
トニー・マウロ サムネイル
トニー・マウロ
2015 年 3 月 25 日公開

導入から数年で、Netflix のオンライン ビデオ ストリーミング サービスは 40 か国で 5,000 万人を超える加入者にサービスを提供するまでに成長しました。 Netflix のソフトウェア開発エンジニアが従来のモノリシック開発プロセスから継続的デリバリーとマイクロサービスに移行する際に採用したベストプラクティスのいくつかについては、 「Netflix でのマイクロサービスの採用」ですでに紹介しています。 建築デザインのためのレッスン そして Netflix でのマイクロサービスの導入: チームとプロセス設計のための教訓

グレブ・スミルノフ-nginx.conf2014
NGINX 開発者 Gleb Smirnoff 氏 (nginx.conf2014)

この記事では、Netflix の成功に大きく貢献したもう 1 つの要素であるコンテンツ配信ネットワーク (CDN) である Open Connectについて説明します。 NGINX がすべての Open Connect 配信アプライアンスで実行され、Netflix がビデオ サービスの爆発的な成長に対応する上で重要な役割を果たしていることを私たちは誇りに思っています。 NGINX の Gleb Smirnoff は 2 年以上 Open Connect チームと連携しており、昨年 10 月のユーザー カンファレンス nginx.conf2014 では、Netflix がビジネスのこの重要な部分を強化するために NGINX (および FreeBSD) を選択した理由について説明しました。

Netflix が独自の CDN を構築した理由

Netflix は当初、ストリーミング ビデオ配信を 3 つの大手 CDN ベンダー (Akamai、Level3、LimeLight) に委託していました。 サービスの人気が高まるにつれ、Netflix はいくつかの理由から、独自の CDN を構築して管理することが合理的であると判断しました。

  • 現実的な観点から見ると、CDN ベンダーは、Netflix のビデオストリーミングに対する顧客の需要の増加に合わせたペースでインフラストラクチャを拡張するのに苦労していました。
  • 財務的な観点から見ると、ストリーミングされるビデオの量が増加するにつれて、アウトソーシングにかかる費用は急速に高額になってきました (これは、多くの一般的なアプリケーションや Web プロパティが経験している課題です)。
  • ビジネスの観点から見ると、ビデオストリーミングがDVDレンタルに取って代わりNetflixの主な収入源になっていることは明らかであり、同社の主要事業の重要な部分をアウトソーシングすることは意味がありませんでした。

最も重要なのは、Netflix がアプリケーションの配信とユーザー エクスペリエンスをより細かく制御するために独自の CDN を構築したことです。 顧客に最適なストリーミング メディア配信を提供するために、Netflix は配信チェーンの 3 つの基本コンポーネントを最大限に制御する必要がありました。

  • ユーザーのビデオ プレーヤー。 Netflix は、顧客が Netflix コンテンツを視聴するために使用するすべてのデバイス固有のアプリを同社の開発者が作成しているため、このコンポーネントをすでに管理しています。
  • ユーザーと Netflix サーバー間のネットワーク。 このコンポーネントを直接制御する方法はありませんが、Netflix は、ISP のデータセンターにアプライアンスを収容するためのラックスペースと引き換えに、ISP に無料のビデオストリーミングアプライアンスを提供することで、顧客とのネットワーク距離を最小限に抑えています。 (アプライアンスは、サードパーティの機器の収容に関心のない ISP の顧客にサービスを提供するために、インターネット エクスチェンジ ポイント (IXP) にも配置されます。) ビデオ ストリーミングは、TCP/IP に固有のパケットの遅延と損失、順序の乱れ、予測不可能な (ジッタのある) ラウンドトリップ時間の影響を特に受けやすく、ネットワーク距離を最小限に抑えることで、これらの異常が発生する可能性が低減します。
  • ビデオ サーバー (Open Connect 自体)。 独自の CDN を運用することで、Netflix は CDN ソフトウェアを自由に調整し、インターネットの異常を可能な限り補正できるようになります。 カスタム TCP 接続制御アルゴリズムと HTTP モジュールを実行できます。 また、サーバーとネットワークの問題を非常に迅速に検出し、クライアントを代替サーバーにリダイレクトしてから、サーバーのハードウェアにログインして「内部から」トラブルシューティングを行うこともできます。

Netflix は、ベンダーが提供する一般的な CDN では不可能な方法で、ビデオ ストリーミング用に Open Connect を最適化することができました。 Open Connect により、Netflix は低コストで優れたユーザー エクスペリエンスを提供し、世界中のアプリケーションのパフォーマンスをより詳細に把握できるようになります。

Netflix が NGINX と FreeBSD を選んだ理由

当初から、Netflix の目標は、グレブ氏の言葉を借りれば、「単一のボックスから 1 秒あたりのギガビット数をどんどん増やすこと」でした。 具体的には、Netflix は各アプライアンスが同時に対応できる加入者の数を最大化する必要がありました。 Open Connect のエンジニアは、この目標を達成するにはソフトウェアを微調整する必要があると予想し、無制限の拡張性を持つオープンソース ソフトウェアを選択することにしました。

前述のように、Netflix は可能な場合はビデオストリーミングアプライアンスを顧客の ISP のデータセンターに配置します。 アプライアンス上で実行されるソフトウェアは第三者の手に渡るため、Netflix は GNU パブリック ライセンス (GPL) ではなく BSD スタイルのライセンスを使用するプロジェクトを選択しました。

Netflix が選択した具体的なオープンソース プロジェクトは次のとおりです。

  • オペレーティング システムとしてはFreeBSD を選択しました。高速で安定していることが知られているためです。 開発者コミュニティは強力であり、ベンダーと協力する意欲があります。
  • ストリーミング メディア サーバーとしてのNGINX 。 Netflix は、開始するために微調整する必要なく、できるだけ早く Open Connect を立ち上げたかったため、実証済みの速度と安定性が重要でした。 CDN が稼働すると、Netflix はトラフィック パターンを調べ、NGINX 設定を微調整できるようになりました。

    NGINX のもう 1 つの利点は、オープン ソース ソフトウェアが BSD スタイルのライセンスに基づいて配布されているにもかかわらず、そのコア開発者全員が NGINX, Inc. のフルタイム従業員であり、同社が商用製品であるNGINX Plusにエンタープライズ クラスのサポートを提供していることです。 この点で、OSS と商用ソフトウェアの最高の機能が組み合わされています。

    カスタム モジュールを実行するための NGINX の柔軟なフレームワークも Netflix にとって魅力的であり、Open Connect チームは同社のビデオ ストリーミングのニーズに特化したモジュールを作成しました。

FreeBSD と NGINX を組み合わせると、さらなる利点が得られます。

  • NGINX のイベント駆動型設計は、その優れたパフォーマンスの鍵の 1 つであり、FreeBSD のkqueueイベント通知システム コールは、多重化された I/O に最適な API の 1 つです。
  • NGINX は、変更を必要とせずに、 sendfileシステム コールをaio_readシステム コールと一緒に使用できます。 これらの呼び出しを組み合わせることで、ディスク I/O のブロックが回避され、優れたパフォーマンスが実現します。

NGINX Plus と NGINX はアプリケーション配信も最適化できます

NGINX は、当初から、適応性を備え、アプリケーション配信のあらゆる側面をサポートするように設計されました。 Netflix に似たアプリケーションを商用顧客が簡単に導入できるように、NGINX Plus は Web サービス、負荷分散、コンテンツ キャッシュ、メディア ストリーミングを 1 つの使いやすいパッケージに統合しています。 他の大手企業が NGINX Plus を使用して、パフォーマンス、セキュリティ、スケールを備えたアプリケーションを提供する方法を学ぶには、当社のケース スタディをご覧ください。

当社はお客様と緊密に連携し、お客様の特定のアプリケーション配信アーキテクチャで NGINX Plus を最大限に活用する方法をアドバイスします。 当社のサポートおよびプロフェッショナル サービスチームは、アーキテクチャのガイダンス、インストール、構成、更新などについてお手伝いします。 お問い合わせ 詳細については、こちらをご覧ください。

ビデオ録画


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"