Ouvrir le menu principal

MacGeneration

Recherche

Que se passe-t-il quand vous appuyez sur lecture dans Netflix ?

Nicolas Furno

samedi 17 mars 2018 à 10:00 • 215

Ailleurs

Netflix est le plus gros service de streaming au monde… et à ce titre l’un des plus gros utilisateurs du réseau internet. Aux États-Unis, l’entreprise exploite à elle seule plus du tiers de la bande passante pour diffuser ses films et ses séries. Avec près de 120 millions d’abonnés dans plus de 200 pays, c’est devenu en quelques années seulement un colosse mondial.

Le contenu à fournir est également immense : ce sont des dizaines de milliers de films et d’épisodes de série qui sont proposés partout dans le monde. Et chaque mois, Netflix ajoute des centaines de contenus à son immense catalogue. On n’a pas de chiffres récents, mais en 2013, l’entreprise stockait déjà 3 Po de contenus. Ce sont des péta-octets, cela représente 3000 To, ou bien encore trois millions de giga-octets… et ce chiffre a augmenté de façon exponentielle depuis.

Tout ceci donne le vertige, mais c’est surtout la fiabilité exemplaire de Netflix qui force le respect. Mis à part chez quelques irréductibles, le service de streaming ne tombe jamais en panne et il est toujours d’une efficacité redoutable, même avec des connexions lentes ou peu fiables.

Comment est-ce que Netflix est arrivé à un tel résultat ? Qu’est-ce qui se passe exactement quand on clique sur le bouton lecture d’une vidéo ? Voici un tour dans l’arrière du décor !

Avant d’appuyer sur lecture : le cloud d’Amazon

On a tendance à l’oublier, mais Netflix n’a pas du tout commencé en diffusant des vidéos par internet. L’entreprise a été fondée en Californie en 1997, à une époque où l’idée de regarder une vidéo en qualité HD via sa connexion internet tenait du délire. À l’origine, la firme louait… des DVD.

Avant Netflix, il y avait un autre Netflix… (Photo Juan Manuel (CC BY-NC-ND 2.0))

Par rapport à ses multiples concurrents, Netflix n’avait pas construit des boutiques partout dans le monde, les disques étaient envoyés aux clients par la poste, dans des enveloppes. Autre bonne idée qui a fait la différence dans les années 2000, un abonnement mensuel plutôt qu’un paiement à la location. Néanmoins, ce n’est pas ça qui a permis à la start-up d'être toujours là aujourd'hui, c’est plutôt son sens des évolutions et son coup de génie quand, en 2007, elle se lance dans le streaming. C’était quelques mois seulement après l’achat de YouTube par Google, un temps où personne n’avait encore réussi à proposer une offre de streaming de films et séries.

À l’époque, il n’y avait pas non plus d’offre de « cloud » bien établie et Netflix a commencé par tout faire en interne. L’entreprise a ouvert deux centres de données aux États-Unis pour fournir son contenu, mais cette approche s’est avérée lente, coûteuse et surtout peu adaptée à la croissance extrêmement rapide que le service connaissait alors. Ces deux data-centers étaient déjà insuffisants à leur ouverture et il a fallu immédiatement en prévoir d’autres… la stratégie n’était pas viable.

Pour ne rien arranger, Netflix a connu une très grosse panne à l’été 2008. Une corruption de leur base de données a bloqué complètement l’envoi des DVD et le service de streaming naissant pendant trois jours. Cette panne a poussé l’entreprise à changer radicalement de stratégie. Elle a abandonné dans les mois qui ont suivi son matériel pour se tourner vers un petit acteur à l’époque : Amazon Web Services, souvent connu sous le nom d’AWS.

Aujourd'hui, AWS est le numéro un mondial des serveurs, de l’hébergement et du cloud, mais cela ne faisait qu’un an environ que le service existait quand Netflix a placé toutes ses données chez Amazon. C’était un pari et il s’est révélé gagnant, puisqu’AWS est toujours au cœur de son infrastructure, près de dix ans plus tard.

Pourquoi AWS ? Netflix voulait s’assurer que son service ne soit jamais interrompu, même en cas de panne, et qu’il s’adapte en temps réel à la demande. L’offre d’Amazon lui a permis d’atteindre ces deux objectifs, à la fois en plaçant ses données dans plusieurs data centers dans le monde, et en augmentant régulièrement sa capacité de stockage en ajustant simplement le nombre de serveurs à sa disposition. L’entreprise a ainsi opté pour trois régions AWS, des zones géographiques distinctes où toutes ses données sont répliquées à l’identique : en Virginie du Nord et en Oregon aux États-Unis, et à Dublin en Irlande.

L’idée de ce triptyque est de s’assurer qu’il y a au moins deux sources de données en fonctionnement à tout moment. Si Amazon a une panne technique dans l’un des trois data centers, les clients sont automatiquement transférés sur l’un des deux restants, en toute transparence. Pour s’assurer que cela fonctionne bien, Netflix fait des tests tous les mois en grandeur nature : le service simule l’arrêt total de l’une des trois régions pour vérifier que tout se passe correctement. Une région doit être « évacuée » en six minutes, c'est-à-dire qu’il faut six minutes pour répartir tous les utilisateurs qui étaient sur la région sur les deux autres.

Ce type d’infrastructure est coûteux — Netflix paie trois fois plus pour reproduire la même architecture trois fois —, mais c’est l’assurance de garantir un fonctionnement même en cas de panne. Et si l’entreprise le voulait, elle pourrait étendre son architecture avec une ou plusieurs régions supplémentaires. Netflix pourrait ouvrir dans une toute autre région du monde, par exemple en Australie ou en Asie, et ainsi répartir davantage ses utilisateurs.

La carte actuelle des data centers AWS. En vert, les régions qui seront bientôt ouvertes.

Ce type d’architecture redondante est très difficile à gérer et Netflix a souvent été obligé de créer ses propres solutions pour s’assurer que toutes les données soient identiques partout, et aussi que n’importe quelle région puisse être fermée sans impact visible pour les utilisateurs. Même si c’est plus compliqué et probablement coûteux en développement, l’entreprise a économisé en passant à AWS à la place de ses propres solutions maison.

Pour comprendre pourquoi, il est important de savoir comment fonctionne AWS. Contrairement à un hébergeur traditionnel, où vous louez un serveur physique ou virtuel au mois, Amazon propose des serveurs qui peuvent être activés ou désactivés en quelques secondes. Et il les fait payer à l’heure près : si Netflix doit convertir une vidéo, il peut louer un serveur puissant pendant quelques heures et le rendre ensuite. Si l’entreprise était restée sur l’idée de gérer ses propres serveurs, elle devrait payer en permanence pour des serveurs qui ne seraient pas constamment utilisés.

Pour simplifier, Netflix dépend principalement de deux offres au sein d’AWS : les serveurs à la demande EC2 pour les traitements des vidéos et toutes les opérations de calcul, les giga de S3 pour stocker les fichiers originaux et les versions optimisées. C’est en fait plus complexe que cela, il y a aussi des bases de données (en partie DynamoDB, en partie Cassandra) et d’autres services annexes, mais on a essentiellement ces deux éléments, le traitement et le stockage.

Extrait de la grille tarifaire d’EC2 à Dublin. Notez les tarifs en heure, et non au mois.

Le traitement le plus évident concerne les vidéos elles-mêmes. Quand Netflix veut ajouter un contenu à son offre, l’entreprise récupère une vidéo de base qui doit ensuite être traitée de plusieurs manières avant d’être proposée en streaming. Il y a une étape de validation, pour vérifier que la source n’est pas corrompue ou ne présente pas de défaut. Quand c’est bon, le fichier passe par un processus nommé en interne media pipeline qui implique plus de 70 outils différents et qui est totalement automatisé. La finalité est de convertir le fichier source qui peut peser plusieurs téra-octets, en fichiers plus légers, adaptés à la diffusion en streaming.

Dans le jargon, on parle de transcoding et c’est une étape qui nécessite énormément de puissance processeur. C’est aussi une étape assez lente et c’est pourquoi Netflix a mis en place un processus complexe pour accélérer les choses. Chaque fichier source est découpé en de multiples morceaux et chaque serveur se charge d’un morceau pour avancer le travail en parallèle. À la fin du processus, la vidéo est reconstituée en recollant tous les morceaux.

Netflix peut mobiliser jusqu’à 300 000 processeurs en même temps pour transcoder une vidéo. Cette énorme capacité de calcul, supérieure à bien des supercalculateurs actuellement en fonctionnement, lui permet d’aller vite, très vite. Une demi-heure peut suffire pour qu’un nouveau fichier soit converti et disponible au streaming. Ce processus entièrement automatisé sert régulièrement pour reconvertir la totalité du catalogue : une fois en 2015 pour réduire la taille des flux vidéo tout en améliorant leur qualité ; une fois en 2016 pour que les vidéos puissent être téléchargées et encore une fois en 2017 pour améliorer à nouveau la qualité des vidéos. Et tout ceci se fait en arrière-plan : dès que les serveurs ne sont plus autant sollicités pour fournir du contenu, ils servent à transcoder un petit morceau de vidéo.

Cet aspect est essentiel pour Netflix, car cela lui permet de réduire régulièrement le poids des vidéos et donc d’économiser en frais de bande passante. L’entreprise exploite par ailleurs des techniques de pointe, par exemple pour analyser indépendamment chaque scène et ajuster ainsi la qualité en fonction de ce qui se passe. Une scène d’action nécessite un débit supérieur à celui d'une séquence calme pour offrir le même résultat visuellement et en travaillant ainsi plus finement, on obtient des fichiers plus légers à qualité égale, ou de meilleure qualité à poids égal.

En travaillant scène par scène, Netflix a réussi à améliorer la qualité des vidéos diffusées sur les toutes petites connexions. À gauche, l’ancienne qualité ; à droite, la nouvelle. Dans les deux cas, le poids du fichier est similaire.

C’est bénéfique pour Netflix qui économise sa bande passante, mais c’est aussi bénéfique pour l’utilisateur. Même avec une connexion internet médiocre, vous aurez en moyenne une meilleure qualité sur ce service que chez un concurrent qui se contente d’un seul profil pour toutes les vidéos. Cela veut dire aussi que Netflix gère énormément de fichiers pour chaque épisode ou film à son catalogue. En fonction de la vitesse de votre connexion, mais aussi du matériel utilisé pour lire la vidéo, vous aurez un flux vidéo différent.

Ajoutez à cela toutes les pistes audios et les fichiers de sous-titre que Netflix doit également gérer et vous aurez vite le vertige. La deuxième saison de Stranger Things, par exemple, est composée de neuf épisodes seulement, mais elle représente au total pas moins de 9 570 fichiers. Et ce n’est qu’une seule saison d’une seule série… imaginez ce que cela représente pour tout le catalogue !

Chaque vidéo est composée d’une multitude de fichiers différents, en fonction des capacités du client de lecture, des choix de langue et de sous-titre. Pour certains épisodes de série, cela représente 1 200 fichiers (image Netflix).

Mais assez parlé de la préparation, venons-en à la lecture.

Un nuage très local pour distribuer les vidéos

Quand vous ouvrez l'application Netflix, que ce soit sur Apple TV, sur iPhone, sur un téléviseur connecté ou même dans un navigateur web, vous vous connectez d’abord aux data centers d’Amazon. Les serveurs EC2 ne servent pas qu’au traitement des vidéos, ils ont de nombreux autres rôles, à commencer par suivre tout ce que chaque utilisateur regarde, veut regarder, peut regarder et pourrait avoir envie de regarder.

Netflix personnalise l’expérience de chaque utilisateur… jusqu’aux images d’illustration qui sont différentes en fonction des goûts de chacun. Si vous aimez plutôt les comédies romantiques, l’horreur ou la science-fiction, vous verrez une image différente pour chaque série ou film.

Netflix conserve un historique de tout ce que vous avez regardé et le service s’en sert pour alimenter ses suggestions. Les avis que vous pouvez laisser entrent également dans l’immense algorithme mis au point au fil des années, tout comme les éléments ajoutés par vos soins à votre liste Netflix. Les suggestions sont calculées par des serveurs, qui servent aussi à contrôler ce que vous pouvez regarder, en fonction de votre pays, mais aussi d’éventuelles restrictions parentales. Une nouveauté à venir permettra d’ailleurs à des parents de bloquer un film ou une série en particulier, et le serveur en tiendra compte également pour donner son feu vert.

On a seulement parlé d’AWS jusque-là, et pour cause, le cloud d’Amazon est vraiment au cœur du fonctionnement de Netflix. Néanmoins, ce n’est pas la seule brique dans l’architecture du service : quand vous avez choisi votre vidéo et que vous appuyez sur lecture, le fichier n’est pas récupéré sur le stockage fourni par S3. Non pas que ce soit impossible, mais ce serait lent, sauf à habiter juste à côté des data centers d’Amazon.

Pour offrir une bonne expérience à tous ses utilisateurs, même les plus éloignés des États-Unis et de l'Irlande où sont situés ses serveurs, Netflix utilise un content delivery network (CDN). L’idée est assez simple : placer le contenu sur des serveurs aussi près que possible des utilisateurs pour limiter les temps d’attente et diminuer la latence. Et même si la connexion directe à AWS était rapide, tous les abonnés ne pourraient pas accéder en même temps à une seule source sans congestionner les réseaux, y compris ceux énormes d’Amazon. C’est pourquoi on a recours à un CDN qui répartit la charge plus équitablement dans le monde.

L’état du CDN de Netflix, courant 2016.

Dans un premier temps, Netflix a essayé de développer son propre CDN, mais comme pour les serveurs, cette tentative a vite été remisée. Courant 2009, la firme a fait appel aux gros acteurs du marché, comme Akamai (numéro un mondial), Limelight et Level 3, et utilisé leur capacité de stockage et de diffusion. Cela a permis à Netflix de se concentrer sur ses algorithmes de conversion et ses outils de recommandation, mais ses besoins étaient tels que les coûts de gestion se sont envolés. Dès 2011, l’entreprise est revenue à une solution maison, mais en employant une idée plus originale et nouvelle.

Les CDN traditionnels reposent sur des data centers existants, où des serveurs stockent une copie locale de ressources qui seront ainsi disponibles plus rapidement pour les utilisateurs à proximité. Avec son programme Open Connect, Netflix utilise également des serveurs qui stockent des ressources, mais l’entreprise a choisi de placer ces ordinateurs au plus près de ses clients, dans deux endroits clés du web.

Les serveurs Netflix sont rouges comme le logo de l’entreprise et sont nommés en interne OCA, pour Open Connect Appliances. On en trouve tout d’abord dans les Internet Exchange Point (IXP), des points d’interconnexion sur le réseau où les fournisseurs d’accès à internet (FAI) se connectent. Pour se rapprocher encore davantage des utilisateurs, on en trouve surtout chez ces derniers. Depuis 2012, la firme propose aux FAI du monde entier d’installer ses serveurs rouges directement sur leurs réseaux.

Présentation en 2016 des différents serveurs OCA installés par Netflix dans les FAI du monde entier (image @brendangregg).

Netflix ne fait pas payer pour ce service, que n’importe quel FAI peut demander en remplissant un formulaire. Une étude de faisabilité est alors menée et si elle est concluante, l’entreprise américaine envoie à ses frais un ou plusieurs OCA, en fonction des besoins estimés. Le FAI l’installe dans l’un de ses centres de données et à partir du moment où le serveur est configuré par Netflix et activé, ses abonnés utiliseront en priorité les vidéos stockées sur cet ordinateur.

Pourquoi est-ce qu’un FAI accepterait de stocker gratuitement des serveurs tiers qu’il ne contrôle pas, de les alimenter et de les relier à son propre réseau ? La réponse est en fait assez simple : en entrant dans le programme Open Connect, le fournisseur assure à la fois à ses utilisateurs une meilleure qualité de service, tout en réduisant ses factures en matière de bande passante vers l’extérieur. Le premier point est facile à comprendre : la vidéo étant stockée à proximité immédiate des abonnés, elle est disponible plus rapidement que si elle devait venir d’un serveur situé dans un autre pays.

Pour le fournisseur, c’est aussi un moyen de réduire sa facture de bande passante depuis son propre réseau vers l’extérieur, vers les autres FAI et vers les data centers du monde entier. Il est difficile de généraliser le prix que cela coûte, mais une chose est sûre : en stockant les vidéos de Netflix sur son propre réseau, cela ne coûte plus rien au FAI, si ce n’est les frais de fonctionnement des OCA. Et certains estiment qu’ils peuvent économiser plusieurs dizaines de milliers de dollars par serveur installé, ce qui est une somme significative.

Illustration de Netflix : depuis l’un de ses trois data-centers principaux (ici, celui de Californie), les vidéos sont stockées sur les OCA d’un fournisseur d’accès (ici, situé en Australie). C’est cette copie locale qui est ensuite exploitée par les clients du FAI.

C’est pour cette raison que tous les FAI, ou presque, ont accepté l’offre de Netflix. En France, c’est le cas d’Orange, de Bouygues et de SFR… mais pas de Free. Les problèmes d’accès au service de streaming constatés par les abonnés sont directement liés au choix de l’entreprise de Xavier Niel de ne pas accepter les OCA, pour une raison qui n’est pas exactement connue1. Les clients de Free doivent accéder aux vidéos stockées sur un serveur hors du réseau du FAI et il y a tant d’utilisateurs de Netflix que le lien vers ce serveur est trop petit pour offrir un service correct à tout le monde.

Même si certains acteurs résistent encore, c’est un coup de génie de la part de Netflix qui a réussi à casser les prix pour créer son réseau mondial de distribution. Les FAI trouvent leur compte autant que le service de streaming, ce qui a permis à Open Connect de se déployer partout et de servir exclusivement à diffuser toutes les vidéos depuis au moins 2016. À cette époque, le réseau diffusait plusieurs dizaines de térabits par seconde aux heures de pointe, et ce chiffre augmente sans arrêt.

Et même si les serveurs placés chez les FAI ne disposent pas nécessairement du contenu intégral de Netflix, ils stockent le contenu le plus populaire pour s’assurer que la majorité des vidéos ne quittent jamais le réseau local. Le reste provient des OCA placés dans les IPX qui disposent en théorie du catalogue intégral du service, et en dernier recours de S3, le stockage d’Amazon qui contient l'original de tout le catalogue.

Schéma explicatif fourni par Netflix, qui montre le lien entre le cloud d’Amazon (AWS) et les serveurs installés par Netflix chez les fournisseurs d’accès à internet (OCA). AWS est toujours utilisé pour gérer le client Netflix et les autorisations, mais les OCA font le plus gros du travail en termes de volumes échangés.

Netflix collecte de nombreuses données sur l’utilisation de son service et l’entreprise s’en sert pour essayer de prédire les contenus qui seront les plus populaires. Elle peut le faire à l’échelle globale, mais aussi locale, en déterminant des profils par pays, voire par région à l’intérieur des pays. À partir de ces informations, les OCA stockent chaque nuit chez les FAI les vidéos les plus susceptibles d’être regardées le lendemain. L’opération est faite quand Netflix est le moins utilisé, et c’est aussi quand le réseau du fournisseur d’accès sert le moins, pour limiter au maximum l’impact des serveurs.

Comment Netflix détermine ce qu’un FAI devrait stocker ? Il y a des cas évidents, comme la sortie d’une nouvelle série populaire : tous les serveurs Netflix du monde entier auront sans doute une copie de la dernière saison de House of Cards quand elle sortira, par exemple. Mais cela ne s’arrête pas aux cas les plus évidents, et la firme a mis au point un algorithme sophistiqué qui analyse les habitudes de lecture de chaque coin du monde pour stocker automatiquement les films et séries les plus susceptibles d’être demandés.

Vous vous souvenez que chaque épisode de série, documentaire ou film est constitué de centaines de fichiers différents ? L’algorithme ne se contente pas de sélectionner un contenu, il charge des fichiers. C’est logique : la bande-son et les sous-titres français seront plus populaires en France qu’en Allemagne. Cela veut aussi dire que si l’iPhone est majoritairement utilisé à un endroit, l’algorithme ne sélectionnera pas nécessairement les fichiers les plus lourds.

Le système est encore plus optimisé que cela. Si un contenu est jugé extrêmement populaire, il ne sera pas stocké en un seul exemplaire. Au contraire, Netflix envoie plusieurs copies, pour éviter de surcharger un serveur en répartissant la charge, et aussi pour s’assurer une redondance, même au niveau le plus local. En général, chaque FAI dispose de plusieurs serveurs OCA, et chacun est totalement indépendant.

Schéma du fonctionnement d’Open Connect : à gauche, des serveurs placés sur les IPX, les principaux nœuds d’interconnexion d’internet ; à droite, deux OCA, les serveurs installés par Netflix chez les FAI, fournissent le contenu aux abonnés du FAI. Dans cet exemple, si l’un des deux OCA tombe en panne, l’autre prend le relai. Et si les deux ne fonctionnent pas, les clients accèdent alors directement au niveau supérieur.

Tout est prévu pour éviter les interruptions de service en cas de problème. En cas de panne matérielle sur un OCA hébergé par un FAI, tous les autres prennent le relai immédiatement. Et en cas de force majeure, le système est conçu pour basculer automatiquement sur le serveur rouge le plus proche, soit ailleurs sur le réseau du FAI, soit dans les IPX et vraiment en dernier recours, aux serveurs d’Amazon. De la même manière, si trop de personnes se connectent à un même serveur, les utilisateurs seront automatiquement répartis sur un autre serveur.

Tout ceci est possible parce que Netflix maîtrise la chaîne complète. Par exemple, toutes les applications savent gérer ces transferts transparents d’un serveur à l’autre, y compris pendant la lecture. Sans que vous le sachiez, vous changez peut-être de source à plusieurs reprises pendant les 45 minutes que dure l’épisode de votre série. Naturellement, les changements interviennent aussi si la qualité de votre connexion internet change, ce qui explique que vous passez parfois de la HD à une bouillie de pixels. Netflix s’assure que la lecture ne s’arrête jamais, quitte à réduire la qualité visuelle, mais l'application vérifie aussi que le serveur que vous utilisez à un instant donné est bien le meilleur. Et s’il détermine que ce n’est plus le cas, il en changera dans la foulée.

En utilisant Netflix dans un navigateur, vous pouvez obtenir des informations détaillées sur le flux vidéo en appuyant sur les touches control option shift d. Vous y verrez notamment l’adresse du serveur utilisé (en bleu) et vous noterez qu’il y en a deux, une pour la vidéo et une pour l’audio. D’ailleurs, la qualité sonore est privilégiée en cas de chute du débit (l’image est dégradée avant le son).

Pour conclure

Expliquer ce qui se passe quand on appuie sur lecture dans Netflix est long et assez compliqué, mais c’est pour une bonne raison. Des serveurs d’Amazon jusqu’aux machines rouges installées directement chez les fournisseurs d’accès à internet, la firme a créé au fil des années un système complexe, mais d’une efficacité redoutable, le tout à un prix très raisonnable qui lui donne un avantage concurrentiel évident.

L’approche de Netflix est originale2 et payante. Elle repose sur du matériel — les serveurs OCA sont conçus en interne —, mais la partie la plus importante est logicielle. Le service a pris une longueur d’avance grâce à son processus de conversion qui lui permet d’offrir une meilleure qualité d’image tout en réduisant sa bande passante ainsi qu'à ses algorithmes qui lui permettent de savoir à l’avance les contenus qui seront populaires.

Si le sujet vous intéresse, vous pouvez encore l’approfondir grâce à la politique d’ouverture de Netflix. Là où la majorité des entreprises gardent jalousement leurs secrets de fabrication, Netflix diffuse régulièrement des informations techniques, en particulier sur le Netflix Technology Blog. Le service propose aussi bon nombre d’outils utilisés en interne en open source, vous les trouverez tous sur ce site.


  1. Même si on se doute de la raison : Free demande à Netflix une contrepartie pour accepter d’installer les serveurs rouges. S’agit-il d’une contrepartie financière, ou bien d’une autre nature (par exemple, offrir Netflix via l’abonnement ?), on ne sait pas exactement. ↩︎

  2. Mais pas unique : Google propose une solution similaire nommée Google Edge Network, anciennement Google Global Cache. Le géant de la recherche est toutefois nettement plus discret et impose aux fournisseurs d’accès à internet la signature d’un contrat de confidentialité, ce qui explique que l’on ne sache rien, ou presque, à son sujet. En France, on sait au moins que SFR a installé des serveurs sur son réseau en 2015, c’est probablement aussi le cas chez les autres FAI. ↩︎

illustration magazine 25 ans

MacGeneration a 25 ans !

Participez à la fête et découvrez l’histoire de votre site favori en précommandant notre magazine exclusif.

Je précommande le magazine