Netflix : une impressionnante architecture

Par:
ftonic

ven, 24/11/2023 - 15:00

Netflix est un service de streaming disponible dans les plus de 200 pays, supportant des dizaines de langues, une disponibilité mondiale, des apps, des milliers de contenus, plus de 180 millions d'abonnés. Quand on choisit un contenu depuis l'app ou le site, tout un processus est enclenché pour envoyer la requête, la traiter, déterminer l'accès ou non à ce contenu, trouver le contenu et lancer son visionnage, tout en prenant en compte l'état du contenu qui l'utilisateur l'arrête ou fait pause.  

A quoi ressemble l'architecture derrière le front ? Briij Kishore Pandey propose une plongée au coeur de l'infrastructure. Basiquement, nous avons 5 piliers fondamentaux :

- le front avec du web, des apps, des api

- le back avec les services internes, les bases de données et les outils de streaming et de messaging. 

- le streaming : stockage et diffusion, outils de transcodage

- stockage et traitement des données

- la toolchain autour d'un CI/CD

Le tout avec une disponibilité maximale, une faible latence et un service identique partout. 

Un élément clé est Open Connect, conçu par Netflix. Open Connect est un CDN permettant de lier les réseaux télécoms et les contenus, tout en minimisant la latence et garantir les performances. L'infrastructure est celle d'AWS ainsi que plusieurs services stratégiques comme le stockage (AWS S3). Si on voulait faire simple : il y a le client (front), Open Connect + réseaux et le backend. Le front est principalement écrit en React. Selon le type de connexion (desktop, TV, console, smarthpne, etc.) et les capacités réseaux, le CDN et les services de stream sont là pour déterminer le flux à proposer. Plus le débit est bon et meilleure sera la qualité de l'image. C'est là que les services de transcodage sont importants. A cela se rajoute un load balancer pour assurer la disponibilité des contenus et des services. 

Autre pièce essentielle : ZUUL. Zuul est une porte d'entrée pour toutes les requêtes venant des apps, devices et sites web. Zuul les distribue ensuite aux services backend. Il s'agit d'un service edge décentralisé pour le routage dynamique, le monitoring, la résilience des services et la sécurité. Il supporte les dizaines de millions d'appels API chaque seconde. Au niveau architecture, Netflix mise sur les microservices. 

Pour les données, nous trouvons divers services et outils : Cassandra, MySQL, Kafka, Flink, Spark, Tableau, S3, AWS Redshift. Ces outils permettent aussi d'assurer les recommandations et les recherches dans les contenus. 

L'architecture évolue et Netflix n'hésite pas à changer de composants quand cela est nécessaire. 

Pour en savoir plus : 

https://www.geeksforgeeks.org/system-design-netflix-a-complete-architecture/

https://netflixtechblog.com/