La véritable utilisation de Java par Netflix

Découvrez comment Netflix utilise réellement Java !
L’architecture de Netflix
Paul Bakker, Java Platform chez Netflix, a présenté lors de la conférence QCon San Francisco 2023 comment Netflix utilise Java. Il a démystifié l’idée que Netflix se compose uniquement de microservices RxJava avec Hystrix et Spring Cloud qui gèrent tout.
Bakker a décrit l’architecture d’origine de l’application Netflix utilisée sur les télévisions et autres appareils. Cette application se connecte à leur serveur API compatible avec Groovy via des connexions REST et gRPC vers leurs différents services.
Les améliorations
Les premières améliorations comprenaient des appels distants multiples, le calcul parallèle et la tolérance aux erreurs implémentés avec RxJava et Hystrix. Cependant, il y avait des limitations, notamment un script requis pour chaque point de terminaison, des développeurs d’interface utilisateur qui n’aiment généralement pas Groovy et Java, et la complexité de la programmation réactive.
La fédération GraphQL
Ensuite, Bakker a présenté la fédération GraphQL, un modèle d’architecture qui permet de combiner plusieurs services GraphQL, appelés sous-graphes ou services fédérés, en un seul schéma ou API. Cela résout les problèmes d’over-fetching et d’under-fetching inhérents à REST.
Leur portail GraphQL fédéré, connecté aux services de graphème de domaine (DGS), a remplacé le serveur API d’origine pour communiquer avec les différents services via gRPC. Les avantages comprenaient l’absence de duplication d’API, l’absence de développement côté serveur pour les développeurs d’interface utilisateur, un schéma GraphQL partagé et l’absence de bibliothèques clientes Java.
Java chez Netflix
Java est toujours en développement actif chez Netflix. Ils prennent en charge Azul Zulu 17, la distribution descendante d’OpenJDK d’Azul, et effectuent des tests actifs sur JDK 21, exécutant environ 2800 applications construites avec environ 1500 bibliothèques. Leurs outils de construction préférés sont Gradle et IntelliJ IDEA.
Bakker a présenté une rétrospective de leur mise à jour JDK 17, qui a apporté des avantages en termes de performances, d’autant plus qu’ils utilisaient encore JDK 8 cette année. Netflix a observé une augmentation de 20% de l’utilisation du CPU sur JDK 17 par rapport à JDK 8, principalement grâce aux améliorations apportées au collecteur de déchets G1.
Netflix effectue actuellement des tests sur JDK 21, et Bakker est convaincu qu’une mise à niveau ultérieure vers JDK 21 sera beaucoup plus facile et plus rapide. L’utilisation de Generational ZGC conviendra beaucoup mieux à diverses charges de travail chez Netflix, et ils remplaceront finalement leurs pools de threads par des threads virtuels. Cependant, Bakker prévient que “les threads virtuels ne sont pas gratuits”, car l’ajout de threads virtuels à une application peut en réalité diminuer les performances si les bibliothèques sont intensives en CPU.
Spring Cloud et Netflix
Netflix prend également en charge Spring Cloud avec Spring Cloud Netflix, un sous-projet qui propose des intégrations de logiciels open-source Netflix pour les applications Spring Boot.
Source : www.infoq.com
