公開日

Netflix は実際に Java をどのように使用しているのでしょうか?

著者

"Netflix は主に Java ショップです。

Netflix のすべてのバックエンド アプリケーション (内部アプリ、ストリーミング、映画制作アプリを含む) は Java アプリケーションです。

ただし、Java スタックは静的ではなく、何年にもわたって何度も反復されてきました。

これらの反復の詳細は次のとおりです。

1 - API ゲートウェイ Netflix はマイクロサービス アーキテクチャに従っています。すべての機能とデータは、Java (最初はバージョン 8) を使用して構築されたマイクロサービスによって所有されます。

これは、1 つの画面 (映画のリストのリストや LOLOMO など) をレンダリングするには、数十のマイクロサービスからデータを取得する必要があることを意味します。しかし、クライアントからこれらすべての呼び出しを行うと、パフォーマンスの問題が発生しました。

Netflix は当初、オーケストレーションの処理に Zuul を使用した API ゲートウェイ パターンを使用していました。

2 - Groovy と RxJava を使用した親友 各クライアント (テレビ、モバイル アプリ、Web ブラウザーなど) には微妙な違いがあるため、複数のクライアントに単一のゲートウェイを使用することが Netflix にとって問題でした。

これに対処するために、Netflix は Backend-for-Frontend (BFF) パターンを使用しました。 Zuul 氏が代理人の役割に異動されました

このパターンでは、すべてのフロントエンドまたは UI が、複数のサービスのリクエスト ファンアウトとオーケストレーションを実行する独自のミニ バックエンドを取得します。

BFF は Groovy スクリプトを使用して構築され、サービスのファンアウトはスレッド管理に RxJava を使用して実行されました。

3 - GraphQL フェデレーション Groovy と RxJava のアプローチでは、Groovy スクリプトを作成する際に UI 開発者によるさらなる作業が必要でした。また、リアクティブプログラミングは一般に難しいです。

最近、Netflix は GraphQL Federation に移行しました。 GraphQL を使用すると、クライアントは必要なフィールドのセットを正確に指定できるため、REST API でのオーバーフェッチとアンダーフェッチの問題が解決されます。

GraphQL フェデレーションは、データをフェッチするために必要なマイクロサービスの呼び出しを処理します。

これらのマイクロサービスは Domain Graph Service (DGS) と呼ばれ、Java 17、Spring Boot 3、Spring Boot Netflix OSS パッケージを使用して構築されています。 Java 8 から Java 17 への移行により、CPU が 20% 向上しました。

最近では、Netflix は仮想スレッドなどの機能を利用するために Java 21 への移行を開始しました。"

日本語版は Ai 支援を使用しているため、小さな間違いが存在する可能性があることをご了承ください。 Netflix は実際に Java をどのように使用しているのでしょうか?

著者

Ai Base Network (ABN), ABN ASIAは、アカデミアに深く関わり、アメリカ、オランダ、ハンガリー、日本、韓国、シンガポール、ベトナムでの仕事経験を持つ人々によって設立されました。ABN ASIAは、学問とテクノロジーが機会と出会う場所です。最先端のソリューションと優れたソフトウェア開発サービスにより、ビジネスがレベルアップし、グローバルシーンに挑戦できるよう支援しています。 私たちの取り組み: より速く。 より良い。 より信頼性が高くなります。 ほとんどの場合、価格も安くなります。

いつでも、ITサービス、デジタルコンサルティング、既製のソフトウェアソリューション、または提案依頼書(RFP)をお探しの際は、お気軽にお問い合わせください。お問い合わせ先は[email protected]です。お客様のテクノロジーに関するニーズにお応えします。

ABNAsia.org

© ABN ASIA