Amazon Kinesis Streams では、毎日数テラバイトのログデータが処理され、イベントは数秒で分析に表示されます。当社では、問題をリアルタイムで検出して対応できるため、高い可用性と優れたカスタマーエクスペリエンスを実現できます。
John Bennett 氏 Netflix、シニアソフトウェアエンジニア
  • Netflix について

    Netflix は世界でも有数のインターネットテレビネットワークで、190 か国以上の 1 億人を超える会員が、1 億 2,500 万時間ものテレビ番組や映画を毎日楽しんでいます。 

  • 使用した AWS のサービス

  • AWS の利点

    • 毎日、数十億件のイベントを含む数テラバイトのデータを処理および拡充、分析クエリの応答時間は 1 秒未満
    • 競合他社のソリューションと比べてコスト効率が高い
    • システムアーキテクチャで自由に試して、最も効果的なソリューションを見つけることが可能
    • 数回の単純な API コールでデータの取り込みを開始
    • 非常に伸縮自在なソリューションで、1,000 個近くの Amazon Kinesis シャードを並列で実行

Netflix は世界でも有数のインターネットテレビネットワークで、世界各地の 1 億人を超える会員が、オリジナルシリーズ、ドキュメンタリー、長編映画など、1 億 2,500 万時間ものテレビ番組や映画を毎日楽しんでいます。会員は、インターネットに接続されたほぼすべての画面で、いつでも、どこからでも視聴できます。 

Netflix は、そのほぼすべてのコンピューティングニーズとストレージニーズにアマゾン ウェブ サービス (AWS) を使用しています。データベース、分析、レコメンデーションエンジン、動画変換をはじめとする数百の機能で、合計で 100,000 個以上のサーバーインスタンスを AWS で使用しています。

その結果、非常に複雑で動的なネットワーキング環境が構築され、AWS 内部やインターネット上でアプリケーションが絶えず通信している状態です。ネットワークのモニタリングと最適化は、Netflix がカスタマーエクスペリエンスと効率の向上、コストの削減を続けるうえで非常に重要です。Netflix では特に、そのネットワークで毎日、仮想プライベートクラウド (VPC) フローログの形で生成される数テラバイトのデータを取り込み、拡充し、分析するソリューションを必要としていました。これにより、Netflix はリージョンをまたいで通信しているアプリケーションを特定し、そのアプリケーションを配置するなど、パフォーマンスを向上させる機会を特定できます。また、アプリケーションのダウンタイムをすばやく検出して軽減することで、稼働率を向上できます。

各ログレコードには、2 つの IP アドレス間の通信に関する情報が格納されています。ただし、Netflix のような動的な環境では、IP アドレスが毎日、または分単位でアプリケーション間を浮動するため、IP アドレス自体はあまり意味がありません。「このイニシアチブに取りかかる前に使用していたデータソースは一方に偏っていました。アプリケーションが他のアプリケーションと接続していることは把握していましたが、両側の対話、その通信を最適化する方法、ネットワークにアプリケーションを最適に配置する方法を理解していませんでした」と、Netflix のシニアソフトウェアエンジニアである John Bennett 氏は述べています。

Netflix は、VPC フローログとアプリケーションメタデータを組み合わせ、アプリケーションとリージョン間の通信をさらに把握できる新しいデータソースを確立することに着手しました。

最初から、AWS では、Netflix のネットワークデータを分析するためのさまざまなアプローチを試すことができました。「設計プロセスの早い段階で、データを処理するさまざまな方法を試すことができる柔軟性には価値がありました。複数の設計で試し、多くの AWS 製品を使用した結果、ここにたどり着きました」(Bennett 氏)

Netflix が最終的にデプロイしたソリューションは、社内では Dredge と呼ばれており、Amazon Kinesis Streams を使用してフローログを集中管理します。アプリケーションはリアルタイムで Amazon Kinesis Streams からデータを読み込み、アプリケーションメタデータで IP アドレスを拡充してネットワーキング環境の全体像を提供します。「通常は、データをデータベースに配置し、クエリを迅速に実行できるようにデータベースでインデックスが構築されます。Dredge は、フローログとアプリケーションメタデータを結合し、データベースを使用せずにストリーミングしてインデックスを作成するため、多くの複雑な作業が不要になりました」(Bennett 氏)

拡充されたデータは Druid というオープンソースの分析アプリケーションに送信されます。Netflix は、Druid の OLAP クエリ機能を使用して、データをすばやくリージョン、アベイラビリティーゾーン、時間枠別に分け、ネットワークの動作とパフォーマンスに関する深い理解を得ています。

データは既に AWS クラウドに存在していたため、Dredge に AWS を選択するのはある程度当然のことでした。「Kafka などの外部システムから大量の情報を発行、ストリーミング、利用するとしたら大変だったと思います。数回の API コールで数テラバイトのフローログを Amazon Kinesis Streams で集中管理できるようになりました。今では、データに単にアクセスするのではなく、データから深い理解を得ることに集中できます」(Bennett 氏)

Netflix のネットワーク使用量は周期的で伸縮するため、Amazon Kinesis Streams のスケーラビリティは、Dredge アプリケーションに適していました。「ネットワーキングデータに関して言うと、よりコスト効率の高い方法でスケールアップおよびスケールダウンできます。Amazon Kinesis の競合製品では同じように簡単にはできません」(Bennett 氏) 

netflix_arch_diagram_2

Netflix の Amazon Kinesis Streams ベースのソリューションは、高度にスケーラブルで、毎日数十億のトラフィックフローを処理しています。通常、データストリームを処理するために約 1,000 個の Amazon Kinesis シャードが並列で実行されています。「Amazon Kinesis Streams では、毎日数テラバイトのログデータが処理され、イベントは数秒で分析に表示されます。当社は、問題をリアルタイムで検出して対応できるため、高い可用性と優れたカスタマーエクスペリエンスを実現できます」(Bennett 氏)

Netflix は、アプリケーションを別のリージョンに移動するか、より適切なネットワークプロトコルを特定のタイプのトラフィックに使用するかどうかなど、アプリケーションを最適化するための新しい方法を見つけることができるようになりました。「Amazon Kinesis をベースに構築されたソリューションにより、最適なカスタマーエクスペリエンスを実現するために、効率の向上、コストの削減、回復力の向上を行う方法を見つけることができます」(Bennett 氏)

ストリーミングデータソリューションは IT 業界にとって新しいものではありませんが、ネットワーキング分野では革新的なソリューションです。「AWS では基盤となるネットワークを抽象化するため、Netflix は AWS に大きく投資しています。このため、スイッチやルーターを扱う必要がありません。今では、もし当社独自のデータセンターを運用していたなら考えもしなかった方法で、上位のスタックでモニタリング、分析、最適化を行っています」(Bennett 氏)

Amazon Kinesis Streams を使用して、リアルタイムでストリーミングビッグデータを取り込み、処理する方法の詳細はこちらでご確認いただけます。