Au cours des quelques années qui ont suivi son lancement, le service de streaming vidéo en ligne de Netflix s'est développé pour servir plus de 50 millions d'abonnés dans 40 pays. Nous avons déjà partagé certaines des meilleures pratiques adoptées par les ingénieurs de développement logiciel de Netflix lors de leur transition d'un processus de développement monolithique traditionnel vers une livraison continue et des microservices, dans Adopting Microservices at Netflix : Leçons sur la conception architecturale et l'adoption de microservices chez Netflix : Leçons pour la conception d’équipes et de processus .
Dans cet article, nous discuterons d'un autre contributeur essentiel au succès de Netflix : son réseau de diffusion de contenu (CDN), Open Connect . Nous sommes fiers que NGINX fonctionne sur chaque appareil de diffusion Open Connect, jouant un rôle clé dans la capacité de Netflix à suivre le rythme de la croissance explosive du service vidéo. Gleb Smirnoff de NGINX travaille aux côtés de l'équipe Open Connect depuis plus de deux ans et, en octobre dernier, lors de notre conférence d'utilisateurs, nginx.conf2014, il a expliqué pourquoi Netflix a choisi NGINX (avec FreeBSD) pour alimenter cette partie cruciale de son activité.
Netflix a initialement sous-traité la diffusion de vidéos en streaming à trois grands fournisseurs de CDN (Akamai, Level3 et LimeLight). À mesure que le service est devenu plus populaire, Netflix a décidé que créer et gérer son propre CDN était logique, pour plusieurs raisons :
Plus important encore, Netflix a construit son propre CDN afin d’avoir un meilleur contrôle sur la diffusion des applications et l’expérience utilisateur. Pour offrir une diffusion optimale des médias en streaming aux clients, Netflix devait maximiser son contrôle sur les trois composants de base de la chaîne de diffusion :
Netflix a pu optimiser Open Connect pour le streaming vidéo d’une manière qui n’est pas possible avec un CDN générique fourni par un fournisseur. Open Connect permet à Netflix d'offrir une expérience utilisateur supérieure à moindre coût et avec une meilleure visibilité sur les performances de l'application dans le monde entier.
Dès le départ, l’objectif de Netflix était, comme le dit Gleb, « d’obtenir de plus en plus de gigabits par seconde à partir d’un seul boîtier ». Plus précisément, Netflix devait maximiser le nombre d’abonnés que chaque appareil pouvait servir simultanément. Les ingénieurs d’Open Connect ont anticipé la nécessité d’affiner le logiciel pour atteindre cet objectif, ils ont donc décidé d’utiliser un logiciel open source pour son extensibilité illimitée.
Comme mentionné précédemment, Netflix place ses appareils de streaming vidéo dans les centres de données des FAI de ses clients lorsque cela est possible. Étant donné que les logiciels exécutés sur les appareils seraient entre les mains de tiers, Netflix a choisi des projets utilisant une licence de type BSD plutôt que la licence publique GNU (GPL).
Les projets open source spécifiques choisis par Netflix étaient :
NGINX comme serveur de streaming multimédia. Sa vitesse et sa stabilité éprouvées étaient importantes car Netflix souhaitait lancer Open Connect le plus rapidement possible, sans avoir besoin de le modifier pour démarrer. Une fois le CDN opérationnel, Netflix a pu examiner les modèles de trafic et affiner les paramètres NGINX.
Un autre avantage de NGINX est que, bien que le logiciel open source soit distribué sous une licence de type BSD, tous ses principaux développeurs sont des employés à temps plein de NGINX, Inc., qui fournit un support de classe entreprise pour son produit commercial, NGINX Plus . À cet égard, il combine les meilleures fonctionnalités des logiciels OSS et commerciaux.
Le cadre flexible de NGINX pour l’exécution de modules personnalisés a également séduit Netflix, et l’équipe Open Connect a créé des modules spécifiques à ses besoins de streaming vidéo.
La combinaison de FreeBSD et de NGINX apporte d'autres avantages :
kqueue
de FreeBSD est l'une des meilleures API pour les E/S multiplexées.sendfile
avec l'appel système aio_read
. Ensemble, les appels évitent le blocage sur les E/S du disque, ce qui conduit à des performances exceptionnelles.Dès sa création, NGINX a été conçu pour être adaptable et prendre en charge tous les aspects de la distribution d’applications. Pour faciliter le déploiement d'applications similaires à Netflix pour nos clients commerciaux, NGINX Plus combine le service Web, l'équilibrage de charge, la mise en cache de contenu et le streaming multimédia dans un package unique et facile à utiliser. Consultez nos études de cas pour découvrir comment d’autres entreprises leaders utilisent NGINX Plus pour fournir leurs applications avec performances, sécurité et évolutivité.
Nous aimons travailler en étroite collaboration avec nos clients, en leur fournissant des conseils sur la manière de tirer le meilleur parti de NGINX Plus dans leurs architectures de distribution d'applications spécifiques. Nos équipes d'assistance et de services professionnels peuvent vous aider en matière de conseils architecturaux, d'installation, de configuration, de mises à jour, etc. Contactez-nous pour en savoir plus.
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."