導入から数年で、Netflix のオンライン ビデオ ストリーミング サービスは 40 か国で 5,000 万人を超える加入者にサービスを提供するまでに成長しました。 Netflix のソフトウェア開発エンジニアが従来のモノリシック開発プロセスから継続的デリバリーとマイクロサービスに移行する際に採用したベストプラクティスのいくつかについては、 「Netflix でのマイクロサービスの採用」ですでに紹介しています。 建築デザインのためのレッスン そして Netflix でのマイクロサービスの導入: チームとプロセス設計のための教訓。
この記事では、Netflix の成功に大きく貢献したもう 1 つの要素であるコンテンツ配信ネットワーク (CDN) である Open Connectについて説明します。 NGINX がすべての Open Connect 配信アプライアンスで実行され、Netflix がビデオ サービスの爆発的な成長に対応する上で重要な役割を果たしていることを私たちは誇りに思っています。 NGINX の Gleb Smirnoff は 2 年以上 Open Connect チームと連携しており、昨年 10 月のユーザー カンファレンス nginx.conf2014 では、Netflix がビジネスのこの重要な部分を強化するために NGINX (および FreeBSD) を選択した理由について説明しました。
Netflix は当初、ストリーミング ビデオ配信を 3 つの大手 CDN ベンダー (Akamai、Level3、LimeLight) に委託していました。 サービスの人気が高まるにつれ、Netflix はいくつかの理由から、独自の CDN を構築して管理することが合理的であると判断しました。
最も重要なのは、Netflix がアプリケーションの配信とユーザー エクスペリエンスをより細かく制御するために独自の CDN を構築したことです。 顧客に最適なストリーミング メディア配信を提供するために、Netflix は配信チェーンの 3 つの基本コンポーネントを最大限に制御する必要がありました。
Netflix は、ベンダーが提供する一般的な CDN では不可能な方法で、ビデオ ストリーミング用に Open Connect を最適化することができました。 Open Connect により、Netflix は低コストで優れたユーザー エクスペリエンスを提供し、世界中のアプリケーションのパフォーマンスをより詳細に把握できるようになります。
当初から、Netflix の目標は、グレブ氏の言葉を借りれば、「単一のボックスから 1 秒あたりのギガビット数をどんどん増やすこと」でした。 具体的には、Netflix は各アプライアンスが同時に対応できる加入者の数を最大化する必要がありました。 Open Connect のエンジニアは、この目標を達成するにはソフトウェアを微調整する必要があると予想し、無制限の拡張性を持つオープンソース ソフトウェアを選択することにしました。
前述のように、Netflix は可能な場合はビデオストリーミングアプライアンスを顧客の ISP のデータセンターに配置します。 アプライアンス上で実行されるソフトウェアは第三者の手に渡るため、Netflix は GNU パブリック ライセンス (GPL) ではなく BSD スタイルのライセンスを使用するプロジェクトを選択しました。
Netflix が選択した具体的なオープンソース プロジェクトは次のとおりです。
ストリーミング メディア サーバーとしてのNGINX 。 Netflix は、開始するために微調整する必要なく、できるだけ早く Open Connect を立ち上げたかったため、実証済みの速度と安定性が重要でした。 CDN が稼働すると、Netflix はトラフィック パターンを調べ、NGINX 設定を微調整できるようになりました。
NGINX のもう 1 つの利点は、オープン ソース ソフトウェアが BSD スタイルのライセンスに基づいて配布されているにもかかわらず、そのコア開発者全員が NGINX, Inc. のフルタイム従業員であり、同社が商用製品であるNGINX Plusにエンタープライズ クラスのサポートを提供していることです。 この点で、OSS と商用ソフトウェアの最高の機能が組み合わされています。
カスタム モジュールを実行するための NGINX の柔軟なフレームワークも Netflix にとって魅力的であり、Open Connect チームは同社のビデオ ストリーミングのニーズに特化したモジュールを作成しました。
FreeBSD と NGINX を組み合わせると、さらなる利点が得られます。
kqueue
イベント通知システム コールは、多重化された I/O に最適な API の 1 つです。sendfile
システム コールをaio_read
システム コールと一緒に使用できます。 これらの呼び出しを組み合わせることで、ディスク I/O のブロックが回避され、優れたパフォーマンスが実現します。NGINX は、当初から、適応性を備え、アプリケーション配信のあらゆる側面をサポートするように設計されました。 Netflix に似たアプリケーションを商用顧客が簡単に導入できるように、NGINX Plus は Web サービス、負荷分散、コンテンツ キャッシュ、メディア ストリーミングを 1 つの使いやすいパッケージに統合しています。 他の大手企業が NGINX Plus を使用して、パフォーマンス、セキュリティ、スケールを備えたアプリケーションを提供する方法を学ぶには、当社のケース スタディをご覧ください。
当社はお客様と緊密に連携し、お客様の特定のアプリケーション配信アーキテクチャで NGINX Plus を最大限に活用する方法をアドバイスします。 当社のサポートおよびプロフェッショナル サービスチームは、アーキテクチャのガイダンス、インストール、構成、更新などについてお手伝いします。 お問い合わせ 詳細については、こちらをご覧ください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"