ArticleInfrastructure & Cloud
10 ans après : Comment Netflix a réalisé une migration cloud historique avec
Dave Hahn, ingénieur chez Netflix, revient sur la migration du fournisseur de vidéos en streaming vers AWS. Plus qu'une simple transition du stockage sur site au cloud, cette transformation a imposé à l'entreprise de repenser complètement son mode de fonctionnement et lui a permis de devenir l'un des leaders du secteur aujourd'hui.

En vingt ans d’existence, Netflix est passé d’un site de location de DVD avec 30 employés à un service de streaming mondial avec plus de 5 000 titres, 130 millions d’abonnés et un chiffre d’affaires annuel de 11 milliards de dollars. Lors du Consumer Electronics Show de janvier 2016, son CEO, Reed Hastings, lançait le service dans plus de 130 pays. « Pendant que vous m'écoutiez, Netflix a été lancé dans presque tous les pays du monde » lançait-il depuis la scène du Las Vegas Convention Center. « Aujourd'hui, en ce moment même, vous assistez à la naissance d'un réseau de télévision mondial. »
Tout cela a été rendu possible par une transformation radicale d'une opération informatique auparavant traditionnelle, comme l'a récemment expliqué Dave Hahn, ingénieur dans l'équipe d'opérations sur le cloud et la fiabilité de Netflix, à nos confrères d’IDG lors du dernier salon Service Desk et IT Support Show de Londres (5-6 juin 2018). « Je pense que vous pouvez imaginer la quantité de travail, de réflexion et de conception d’architecture que nous avons dû mettre en place pour nous étendre à 130 pays et à des millions de nouveaux clients. Il a fallu repenser l’architecture technique, le moteur de recherche, les systèmes de facturation, dont nous avions besoin et la réflexion sur ces types de problèmes pour y arriver. » Et le voyage a commencé lorsque Netflix a décidé de migrer vers le cloud public.
Migrer vers le cloud, une évidence
En 2008, Netflix exécutait des bases de données relationnelles dans ses propres datacenters. Mais un jour, une panne du centre de données a arrêté tout le service et les envois de DVD pendant trois jours. Les propriétaires de l'entreprise ont ainsi dû faire un choix : transformer Netflix en une société d'exploitation de datacenters mondiale ou migrer le service vers le cloud public. La croissance de l’entreprise était alors forte. Les milliers de vidéos et les dizaines de millions d’utilisateurs généraient déjà beaucoup de données. Et Netflix aurait eu du mal à entreposer les serveurs dans ses propres datacenters assez rapidement pour gérer les volumes.
Une migration vers le cloud était donc le choix évident. Netflix est ainsi rapidement devenu un client privilégié d’Amazon Web Services (AWS). L’entreprise a choisi ce fournisseur pour son échelle et son large éventail de services et de fonctionnalités. La migration nécessitait cependant de reconstruire complètement l'infrastructure traditionnelle de l'entreprise. Si tous leurs systèmes monolithiques avaient été basculés directement du site dans AWS, les anciens problèmes auraient suivis aussi. Au lieu de cela, Netflix a choisi de reconstruire sa technologie dans AWS et de changer fondamentalement sa façon d’opérer.
Décomposition de la plateforme en microservices
« Les logiciels, c’est comme tout le reste : si vous parvenez à les concevoir pour l'environnement dans lequel ils vivront, ils fonctionneront mieux que vous ne le vouliez » explique M. Hahn. « Nous avons donc décidé de passer aux microservices. » L'infrastructure en est devenue beaucoup plus agile en décomposant certains aspects de la plateforme en plusieurs microservices, gérés par leurs propres petites équipes qui comprenaient comment leur service fonctionnait et interagissait avec les autres systèmes. C'était assez révolutionnaire à l'époque.
Les informations générées sont plus claires et spécifiques, ce qui conduit à des déploiements plus petits et plus rapides. Cela leur permet également d'isoler les services pour comprendre les différents profils de performance, modèles et valeurs de chaque microservice, et de s'éloigner de tout élément qui pose problème. « Je n'ai pas besoin de rassembler toutes ces pièces construites par d'autres personnes pour avoir un déploiement unique », développe Dave Hahn. « Toute équipe de service Netflix peut déployer son service à tout moment. Cela ne nécessite aucune coordination, aucune planification, aucun creuset pour arriver à la production. »
La tarification d’AWS permet de faire plus de tests
En 2016, les derniers datacenters de Netflix fermaient leurs portes. Il aura fallu sept ans au site de streaming pour mener à bien cette migration monstrueuse vers le cloud. Mais elle aura permis d’améliorer l'évolutivité et la disponibilité des services de Netflix, ainsi que la rapidité avec laquelle l'entreprise pouvait publier de nouveaux contenus, fonctionnalités, interfaces et interactions. Elle a également eu pour effet de libérer le travail des ingénieurs, réduire les coûts de diffusion et améliorer considérablement sa disponibilité. « Le modèle de tarification [d’AWS] est vraiment sympa pour nous » ajoute M. Hahn. « Vous payez pour ce que vous utilisez. Cela nous permet de faire beaucoup d'expérimentations. »
Et ils ne s’en privent pas. Cela leur permet notamment d’améliorer leurs lignes de recommandations de contenu personnalisées chaque jour. « Ces gros algorithmes de recommandation nécessitent beaucoup de puissance de calcul » explique M. Hahn. « Si je veux vérifier qu’un nouvel algorithme fonctionne mieux, je ne veux pas forcément désactiver l'ancien, car, côté utilisateur, vous avez toujours besoin de recommandations. […] Je peux maintenant faire tourner un nouvel ensemble de dizaines, centaines ou milliers de machines en une après-midi et parcourir mes données pour voir si le nouvel algorithme est plus performant. Et je ne paie que pour les portions que j'utilise. »
Des appliances installées directement chez les FAI
Le cloud n'est qu'une partie de l'expérience utilisateur de Netflix. Tout ce qui se passe avant que l’utilisateur n’appuie sur play se déroule dans AWS, mais le contenu vidéo qui suit provient d'un système distinct : Netflix OpenConnect, le réseau de diffusion de contenu (CDN) propriétaire de la société. Ce sont les appliances OpenConnect qui stockent le contenu vidéo. Ils sont conçus pour fournir un contenu Internet aux téléspectateurs au plus près de l'endroit où ils les regardent. Netflix avait initialement sous-traité la diffusion de vidéos en streaming à des fournisseurs de CDN tiers, mais au fur et à mesure de la croissance de l'entreprise, ces fournisseurs avaient du mal à prendre en charge le trafic. Netflix avait besoin de plus de contrôle sur le service et l'expérience utilisateur et a donc décidé de concevoir un CDN adapté à ses besoins.
Les appliances OpenConnect sont installées dans les datacenters du fournisseur d'accès internet (FAI) local, ce qui isole le service Netflix d'Internet au sens large. Les algorithmes de popularité et les techniques de stockage permettent de distribuer le contenu de manière à optimiser l'efficacité du déchargement. Le système réduit la demande sur la capacité du réseau en amont et aide Netflix à travailler plus étroitement avec les réseaux FAI qui hébergent son trafic. « Nous avons conçu des caches OpenConnect pour conserver notre contenu et, chaque fois que nous le pouvons, nous les installons sur le réseau de votre fournisseur de services internet » ajoute l’ingénieur cloud.
Cela a également permis à Netflix de rendre le logiciel CDN plus intelligent. Désormais, chaque fois qu'un client appuie sur play, son appareil peut obtenir son contenu à partir de nombreux endroits sur Internet. Cet investissement a porté ses fruits lorsqu'un incendie a détruit toute la pile de machines de la société dans un datacenter d'un FAI au Brésil. Les clients locaux n’avaient alors subi aucun changement dans leur expérience utilisateur. « Leurs appareils savaient déjà où aller pour obtenir les données » assure Dave Hahn. « Cela n’a pas interrompu une seule séquence de diffusion lorsque nous avons littéralement brûlé la base de données. »
L’ingénierie du chaos
Les développeurs Netflix sont connus pour leur approche unique de la culture d'ingénierie. Ils ont mis au point un outil d'ingénierie de chaos en libre-service appelé Chaos Automation Platform pour tester les problèmes dans leurs environnements de production. Ceci afin de s'assurer que Netflix peut survivre à une panne dans l'une des trois régions AWS qu'il utilise. Chaque mois, les développeurs désactivent l'une des régions et vérifient qu'ils peuvent transférer tous les clients desservis dans un délai de six minutes.
Mais pour embrasser le chaos sans causer de destruction, Netflix devait créer une culture d'entreprise qui soutenait de telles idées. Les principes centraux ont été formalisés dans le Netflix Culture Deck, une présentation de 127 diapositives que le directeur de l'exploitation de Facebook, Sheryl Sandberg, considère comme « le document le plus important jamais sorti de la [Silicon] Valley ». Un principe central de cette politique consiste à concilier la liberté et la responsabilité. Les équipes ont donc la propriété de leur microservice et sont encouragées à agir de manière indépendante mais non téméraire.
Ne jamais toucher aux données des clients
« Les gestionnaires de Netflix ne définissent pas les tâches de leurs employés pour réaliser ou concevoir leurs projets » développe M. Hahn. « Ils leur donnent des éléments de contexte appropriés pour qu'ils puissent prendre des décisions, embaucher d'excellents collègues, les accompagner dans leur travail et rester en dehors de leur chemin. »
L'entreprise évite de définir trop de règles au-delà d'un ensemble de principes fondamentaux, comme celui de ne jamais toucher aux données des clients. Dave Hahn fait l’analogie avec un garde du corps qui surveillerait un lieu sans portes. Il affirme pouvoir compter sur une main le nombre de fois qu'il a dû dire à un ingénieur ce qu’il devait faire exactement. « En s'assurant que ce contexte est partagé par tous, je peux demander à quelqu'un de concevoir un système de facturation, pendant qu’un autre travaillera sur des systèmes algorithmiques, et d'autres personnes focalisées sur le service client. En comprenant le même contexte ils marcheront ainsi vers les mêmes objectifs » conclut l’ingénieur de Netflix.
