Recommandation de conception de système Netflix Open Connect
Conception et architecture du système Netflix.
Netflix a rapporté avoir plus de 182 millions d’abonnés dans le monde au premier trimestre 2020 (bien sûr, ces chiffres n’incluent pas les freeloaders comme moi, dont la famille ou les amis ont été assez généreux pour partager leur compte et leur mot de passe). Il n’est pas surprenant que 16 millions de ces abonnés se soient joints au cours des trois premiers mois de cette année, contre 5 millions de nouveaux abonnés par trimestre plus tôt.
La crise actuelle a touché de nombreux aspects de l’industrie du divertissement, y compris certains de Netflix, comme sa maison de production. Cependant, Netflix en a largement profité car il ne diffuse pas d’événements sportifs, n’a pas de publicité sur la plate-forme, n’a pas besoin de salles de cinéma. Enfin, surtout.
Pour me préparer aux entretiens d’embauche, j’ai récemment commencé à m’enseigner la conception et l’architecture des systèmes. Ce faisant, j’ai eu l’occasion d’apprendre le fascinant modèle de conception de Netflix. Son architecture est si intrigante que je pense qu’elle fascinerait également les personnes extérieures à la communauté technologique. Cet article tente de décrire certains des éléments de travail les plus fascinants de Netflix en termes simples. Je pense que même des techniciens assez expérimentés pourraient en tirer quelque chose, surtout si l’architecture cloud et la conception de systèmes sont votre discipline.
J’ai consolidé cet article à partir de diverses sources et j’ai fait de mon mieux pour collecter les informations mises à jour et correctes. Comme l’a cité Todd Hoff, «les faits sur le terrain changent au fil du temps et dépendent de qui raconte l’histoire et du public auquel ils s’adressent». Donc, si vous trouvez des erreurs ou des inexactitudes, veuillez les porter à ma connaissance.
Avant d’entrer dans les détails de l’architecture, examinons certaines des améliorations les plus intéressantes de l’expérience utilisateur que Netflix a intégrées à son système.
Le système de recommandation
L’algorithme de recommandation Netflix a été très populaire auprès des personnes qui étudient l’analyse de données. Netflix possède une énorme collection de données utilisateur et en collecte toujours plus à chaque nouvel utilisateur et activité utilisateur.
Il prend en compte de nombreuses métriques de cet ensemble de données pour construire l’algorithme, dont certaines sont:
- Votre historique de visionnement et vos notes sont ceux que vous devez déjà deviner. Netflix peut faire d’excellentes suggestions en fonction du type de films que vous regardez et de la façon dont vous évaluez les films que vous avez regardés. Vous devez avoir remarqué que Netflix n’utilise pas les classements IMDb (ou tout autre classement moyen mondial) pour vous suggérer des films. Au lieu de cela, il estime que chaque utilisateur est différent et ne serait pas nécessairement d’accord avec l’opinion moyenne du monde sur l’émission. Par conséquent, il se concentre sur l’historique de surveillance d’une personne avec d’autres facteurs et trouve un modèle sur le choix de chaque utilisateur.
- D’autres téléspectateurs avec des goûts et des choix similaires. Cet algorithme est appelé Filtrage collaboratif (CF). Il est basé sur l’idée que si deux clients ont des antécédents de notation similaires, ils se comporteront de manière similaire à l’avenir. Par exemple, si l’un des deux utilisateurs similaires évalue un film avec un score élevé, il est plus probable que l’autre utilisateur l’apprécie également et donc Netflix le recommandera à l’autre.
- Titres, genres, acteurs, année de sortie, etc. Cela configure le Filtrage basé sur le contenu (CB) algorithme. Cet algorithme recommande des films basés sur le genre que vous avez aimé auparavant. La principale différence avec CF est que CB propose des recommandations basées non seulement sur la similitude par notation, mais sur les informations provenant des produits. Par exemple, recommander des films du même acteur que vous avez aimé auparavant. Ces facteurs avec le profilage des utilisateurs aident à apprendre les préférences des utilisateurs.
- Profilage des utilisateurs comprend des informations telles que l’heure de la journée où vous regardez, l’appareil sur lequel vous le regardez, la durée que vous regardez, etc. Par exemple, si vous montrez un modèle de ne pas rester assis longuement, Netflix essaiera de trouver des courts métrages ou des émissions avec petits épisodes pour vous.
Oeuvres personnalisées
L’analyse des données ne se limite pas au système de recommandation. Netflix est fortement axé sur les données et utilise ses analyses pour vous inciter à regarder plus. Si vous vous êtes déjà connecté via différents comptes, vous avez peut-être remarqué que Netflix n’utilise pas les mêmes images d’en-tête pour une émission, pour tous les utilisateurs.
Par exemple, voici différentes images d’en-tête pour Stranger Things. Chacun de nous verrait une œuvre d’art différente décidée par Netflix. Netflix prend en compte divers facteurs pour choisir l’image qui vous inciterait le mieux à regarder l’émission. Il expliquera également quelque chose de basique comme le nombre de clics reçus par une certaine image. L’image avec le plus de clics ou de popularité devient alors l’un des facteurs de l’algorithme.
Jetez un oeil à un autre exemple pour l’illustration du film, Good Will Hunting. En fonction de vos préférences et de votre historique de visionnage, si Netflix prédit que vous aimez les comédies, il vous montrera l’image de Robin Williams pour ce film. Si vous aimez les films romantiques, Netflix vous montrera l’image de Matt Damon et Minnie Driver, pour vous dire qu’il a aussi des éléments de romance.
Comme vous pouvez le voir, il est important de sélectionner la bonne image d’en-tête, car elle envoie un message personnel fort sur le sujet du film et inciterait l’utilisateur à le regarder.
Architecture de haut niveau de Netflix
L’architecture peut être divisée en 3 composants principaux:
- Client
- Back-end
- Réseau de distribution de contenu (CDN) / Open Connect (OC)
Client: Le client est une application Netflix sur l’appareil de l’utilisateur final. Il peut s’agir d’un navigateur Web sur votre ordinateur portable, d’une application sur votre téléphone, d’une télévision connectée ou d’une console de jeu. C’est l’interface qui vous aide à parcourir et regarder vos émissions préférées sur Netflix.
Back-end: C’est la section où tout se passe avant de jouer, d’intégrer de nouveaux contenus, de traiter des vidéos, de les diffuser sur des serveurs situés dans différentes parties du monde et de gérer le trafic réseau.
Presque tous ces processus ont lieu sur Amazon Web Services (AWS). Netflix est passé à AWS dans la quête d’une infrastructure fiable. AWS propose des bases de données, un stockage et des centres de données redondants hautement fiables. Cette transition vers les services cloud (AWS) est venue des 3 jours d’indisponibilité rencontrés par Netflix, en août 2008, en raison d’une corruption dans leurs centres de données. Ces centres de données étaient de grands monliths peu fiables et avec la croissance donnée de Netflix, ils avaient besoin d’une architecture de microservices beaucoup plus fiable et évolutive. AWS, tout en résolvant tous ces problèmes, s’est également avéré être moins cher. Comme le cloud est venu avec une élasticité, Netflix n’était tenu de payer qu’en fonction de leur utilisation. Alors que les centres de données que Netflix avait construits devaient être gérés tout le temps et augmenter les coûts, même lorsque la plupart d’entre eux n’étaient pas utilisés. Et actuellement, Netflix fonctionne sur plusieurs milliers d’instances AWS EC2.
CDN / OC: OC est le propre CDN mondial personnalisé de Netflix. Pour comprendre ce qu’est l’OC, jetons d’abord un coup d’œil aux CDN.
Réseau de distribution de contenu / réseau de distribution de contenu (CDN)
Le CDN tel que défini par Wikipedia est une distribution géographique des serveurs proxy et des centres de données. L’objectif de CDN est de rendre le site plus rapide. Pour être précis, il fournit un accès rapide au contenu Internet comme des vidéos, des images, des pages HTML, etc. pour l’aider à se charger plus rapidement sur le site Web.
Avant d’étudier comment il accomplit la vitesse, regardons le défi relevé par CDN. Imaginez une situation où il y a des utilisateurs dans le monde mais un seul serveur à New York. Si un utilisateur à Sydney fait une demande d’accès à un site Web hébergé à New York, ce serait une randonnée de 10 000 miles vers le serveur et 10 000 miles de retour à Sydney avec la réponse et ce voyage aller-retour prendrait environ 200 ms, tandis que pour un utilisateur faisant la même demande de Dallas, ce serait environ 40 ms. Comme on peut le voir, plus celui-ci est éloigné du serveur, plus le chargement du contenu prendra de temps, ce qui ralentira le site Web.
C’est là que CDN entre en jeu, il place les points de terminaison du serveur à travers le monde, permettant ainsi aux utilisateurs de récupérer du contenu à partir de leur emplacement géographique le plus proche, ce qui réduit considérablement le temps. D’où une disponibilité et des performances élevées en distribuant les services dans l’espace aux utilisateurs finaux.
Pour résumer cela avec d’autres avantages fournis par CDN, il fournit:
- Haute disponibilité et performances (vitesse).
- Réduction de la charge sur les serveurs, les requêtes étant désormais réparties.
- Augmentation de la sécurité grâce à l’obscurité, car CDN ajoute une couche supplémentaire entre les deux.
Vous devez l’avoir deviné maintenant, Netflix utilise CDN pour distribuer son contenu vidéo pour servir ses clients à travers le monde. Nous verrons plus loin, en quoi OC est différent de CDN et pourquoi Netflix en avait besoin. Parlons de la première étape du modèle de Netflix avant d’entrer dans d’autres détails, à savoir le téléchargement d’un nouveau film sur Netflix.
À bord du nouveau contenu
Netflix reçoit de nouvelles vidéos des maisons de production et des studios. Ce sont des vidéos de haute qualité, qui doivent être traitées avant de les diffuser aux téléspectateurs.
Netflix prend actuellement en charge environ 2200 appareils, y compris Android, iPhone, Apple TV, Kindle Fire, Playstation, etc. et chacun d’eux nécessite un format vidéo et audio différent. Avec l’aide de centaines de milliers de serveurs AWS, Netflix convertit la vidéo d’origine en un grand nombre de formats et de résolutions différents pour prendre en charge différentes tailles d’écran et différents appareils. Ce processus est appelé Transcodage. Netflix divise la vidéo en un certain nombre de morceaux et les serveurs AWS fonctionnent en parallèle pour convertir ces morceaux en différents formats comme mp4, 3gp, etc. à travers différentes résolutions comme 4k, 1080p et plus. Toutes ces copies vidéo traitées sont ensuite stockées sur Amazon S3.
Lorsqu’un utilisateur demande à regarder une vidéo, Netflix analyse la qualité du réseau et la stabilité de la connexion Internet de l’utilisateur, puis en fonction du type d’appareil et de la taille de l’écran, il fournit le bon format vidéo à diffuser. Avez-vous déjà remarqué que lorsque vous regardez une vidéo, elle semble initialement pixélisée et revient en HD après un certain temps? Les clients Netflix surveillent en permanence la santé du réseau et basculent entre les formats si nécessaire.
Architecture et conception du système
- Netflix est construit sur un style architectural qui structure l’application comme une collection de services. C’est ce qu’on appelle l’architecture des microservices. Le principe de base de l’architecture des microservices réside dans le découplage de tous les services, ce qui signifie que tous les services sont conçus pour être indépendants les uns des autres, par exemple, le service de stockage vidéo serait découplé du service responsable du transcodage des vidéos.
- Cette architecture est fortement conçue autour de la logique métier et permet une flexibilité pour répondre aux besoins individuels des services. Si vous apprenez que le système est confronté à un goulot d’étranglement dans le stockage de vidéos, vous pouvez efficacement planifier une mise à l’échelle ou une optimisation de la logique de stockage sans modifier la configuration des ressources pour d’autres services. Par opposition à cela, dans une architecture monolithique, où tous les composants sont interconnectés, vous auriez besoin de faire évoluer l’ensemble du système uniquement pour répondre aux besoins d’un service. Cela augmenterait considérablement le coût et atteindrait bientôt le plafond de croissance.
- Netflix, construit sur l’architecture de microservices et le système distribué d’AWS, permet un calcul et un stockage fiables et évolutifs à l’aide d’AWS EC2 et S3. Cassandra et DynamoDb sont les bases de données distribuées utilisées pour stocker des données comme les profils utilisateur, les informations de facturation et d’autres informations comme les films que vous avez regardés, qui sont ensuite utilisées dans la construction de l’algorithme de recommandations.
Besoin de CDN personnalisé, Open Connect
Vous savez maintenant que l’idée de CDN est de rapprocher le plus possible les serveurs des utilisateurs et d’optimiser le réseau pour la rapidité et la fiabilité. Pourquoi pensez-vous que Netlfix avait besoin de créer son propre CDN?
Netflix a commencé par utiliser des CDN tiers, ce qui était la bonne option à l’époque. En ne construisant pas son propre CDN, Netflix s’est concentré sur d’autres aspects du système comme le développement d’algorithmes pour le système de recommandation, la diffusion de vidéos de haute qualité et l’amélioration de l’expérience utilisateur.
Les CDN tiers prenaient en charge tous les types de contenu, mais Netflix n’était principalement concerné que par une seule vidéo. Netflix à son échelle, s’est vite rendu compte qu’en disposant d’un CDN personnalisé avec prise en charge exclusive d’un flux vidéo de grande taille, il pouvait créer un réseau hautes performances, enrichissant notamment l’expérience utilisateur. Et en 2011, Netflix a créé le même, Open Connect. Les avantages offerts par Open Connect étaient:
- Moins cher– Comparé à un tiers, le CDN en interne était une option moins chère pour Netflix.
- Meilleure qualité– Netflix avait désormais un contrôle de bout en bout du transcodage à l’application cliente, obtenant ainsi une meilleure qualité.
- Plus évolutif– Avec plus de contrôle sur le réseau, Netflix était plus proche de son objectif d’atteindre partout dans le monde.
Appliances Open Connect
OCA est un serveur rapide assemblé à partir de nombreux disques durs et lecteurs flash pour stocker des vidéos. Côté matériel, l’OCA n’a rien de spécial, ils sont basés sur des composants PC standard et assemblés dans des boîtiers personnalisés par divers fournisseurs. Vous pouvez acheter les mêmes ordinateurs si vous le souhaitez.
Netflix place ces boîtiers dans les centres de données des fournisseurs de services Internet (FAI) du monde entier. Les FAI sont votre fournisseur d’accès Internet. C’est de vous que vous obtenez votre service Internet, comme Verizon, Hathway, Airtel, etc.
Les FAI sont situés dans le monde entier près de leurs clients, ce qui était la stratégie exacte autour de laquelle Netflix construisait sa solution. En utilisant des centres de données ISP pour placer des OCA avec des vidéos pertinentes, Netflix obtient tous les avantages d’un centre de données mais n’a pas besoin de le gérer.
Mais si vous vous souvenez, tous les films traités sont stockés dans Amazon S3. Comment Netflix parvient-il aux OCA? Il est atteint par le processus appelé Mise en cache proactive. Netflix est connu pour avoir un système prédictif très précis. Il sait déjà ce que les téléspectateurs de différents endroits aimeraient regarder ensuite et quand ils aimeraient le regarder également. Les vidéos prédites sont copiées dans des OCA aux emplacements respectifs et en ayant des films facilement disponibles pour le streaming avant même que le spectateur ne le demande, Netflix garantit une expérience de visionnement exceptionnelle.
Assembler toutes les pièces:
- La copie originale de haute qualité du film reçue des maisons de production est d’abord téléchargée sur AWS S3.
- Il est ensuite décomposé en morceaux à transcoder. Après tout le traitement, plusieurs copies du film sont stockées dans S3, dans différents formats et résolutions pour être prises en charge sur différents appareils et réseaux.
- Ensuite, les endroits où les gens préfèrent regarder ce film sont prédits. Ces copies sont ensuite dupliquées à l’avance sur les OCA les plus proches des emplacements prévus, prêtes à servir les téléspectateurs sur demande.
- Lorsque vous demandez à lire le film, l’application sur votre appareil récupère les URL de jusqu’à 10 OCA différents. La qualité du réseau de ces OCA est ensuite testée par les clients et la connexion la plus rapide et la plus fiable est sélectionnée.
- Le client ne cesse de vérifier la connexion et passe à la connexion la plus stable et de haute qualité possible chaque fois que nécessaire, tout en essayant de fournir une expérience de visionnement fluide.
Assez étonnant, non?
Références: