La migration épique de Netflix vers AWS – Jeux de démarrage
Au cours de ses 20 ans d’histoire, Netflix est passé d’un site de location de DVD avec 30 employés à un service de streaming mondial avec plus de 5000 titres, 130 millions d’abonnés et 11 milliards de dollars de revenus annuels qui ont radicalement transformé l’industrie du divertissement.
Au Consumer Electronics Show de janvier 2016, le PDG de Netflix, Reed Hastings, a lancé le service dans plus de 130 pays.
« Pendant que vous m’écoutiez parler, le service Netflix est devenu opérationnel dans presque tous les pays du monde », a-t-il annoncé sur la scène du Las Vegas Convention Center. «Aujourd’hui, en ce moment, 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 Dave Hahn, ingénieur senior de l’équipe Cloud Operations and Fiability de Netflix, l’a expliqué récemment au Service Desk et au Support IT Show à Londres.
« Nous avons activé le service pour 130 autres pays et des millions de nouveaux clients que nous n’avions pas desservis auparavant », a déclaré Hahn.
«Je pense que vous pouvez imaginer la quantité de travail et de réflexion et de conception architecturale que nous avons dû faire pour ouvrir jusqu’à 130 pays et des millions de nouveaux clients juste à ce moment-là; l’architecture technique, la recherche, les systèmes de facturation, le genre de personnes dont nous avions besoin et la réflexion sur ce genre de problèmes pour y arriver. »
L’aventure a commencé lorsque Netflix a décidé de passer de ses propres centres de données au cloud public.
En 2008, Netflix exploitait des bases de données relationnelles dans ses propres centres de données lors d’une catastrophe. Une défaillance du centre de données a fermé l’ensemble du service et a interrompu les livraisons de DVD pendant trois jours.
Les propriétaires de l’entreprise devaient faire un choix: transformer Netflix en une entreprise d’exploitation de centre de données de classe mondiale ou déplacer le service vers le cloud public.
Netflix se développait rapidement. Les milliers de vidéos et les dizaines de millions de clients généraient déjà une énorme quantité de données. L’entreprise aurait du mal à ranger les serveurs dans ses propres centres de données assez rapidement pour gérer les volumes toujours croissants, mais le cloud leur permettrait d’ajouter des milliers de serveurs virtuels et des pétaoctets de stockage en quelques minutes.
La migration vers le cloud était un choix clair. Ils sont rapidement devenus un client enfant d’affiches pour Amazon Web Services (AWS), choisissant l’entreprise pour son échelle et son large éventail de services et de fonctionnalités.
Cette décision nécessiterait cependant une refonte complète de l’infrastructure traditionnelle de l’entreprise. Ils auraient pu transporter tous leurs systèmes d’entreprise monolithiques hors du centre de données et les déposer dans AWS, mais cela n’aurait fait que transférer tous leurs anciens problèmes de centre de données dans le cloud. Au lieu de cela, ils ont choisi de reconstruire la technologie Netflix dans AWS et de changer fondamentalement le mode de fonctionnement de l’entreprise.
« Le logiciel est comme toute autre chose; si vous pouvez le concevoir pour l’environnement dans lequel il va vivre, il fera plus de choses que vous voulez qu’il fasse, plus souvent et plus régulièrement », a déclaré Hahn. «Nous avons donc choisi de passer aux microservices.»
Cela a rendu l’infrastructure beaucoup plus agile en divisant les aspects du service en plusieurs microservices, gérés par leurs propres petites équipes qui comprenaient le fonctionnement de leur service et interagissaient avec d’autres systèmes. C’était assez révolutionnaire à l’époque.
Cela fournit des informations claires et spécifiques qui facilitent la modification du service, 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 titres de chaque micro-service, et de s’éloigner de tout élément individuel qui pose problème.
« Je n’ai pas à assembler toutes ces pièces construites par d’autres personnes pour avoir un déploiement unique », a déclaré Hahn. «Toute équipe de service Netflix peut déployer son service à tout moment. Il ne nécessite aucune coordination, aucun calendrier, aucun creuset pour arriver à la production. »
Il a fallu sept ans à Netflix pour terminer la migration vers le cloud. En 2016, les derniers centres de données restants utilisés par le service de streaming ont été fermés. À sa place se trouvait une nouvelle infrastructure cloud exécutant tous les besoins informatiques et de stockage de Netflix, des informations client aux algorithmes de recommandation.
La migration a amélioré l’évolutivité et la disponibilité des services de Netflix ainsi que la vitesse à laquelle l’entreprise peut publier de nouveaux contenus, fonctionnalités, interfaces et interactions. Il a également libéré la capacité des ingénieurs, réduit les coûts de streaming, amélioré considérablement la disponibilité et ajouté l’expérience et l’expertise d’AWS.
« L’autre chose est que le modèle de coût est vraiment agréable pour nous », a ajouté Hahn. «Vous payez pour ce que vous utilisez. Cela nous permet de faire beaucoup d’expérimentations. »
Cela leur donne une plus grande liberté pour tester de nouvelles fonctionnalités et améliorer celles existantes, telles que les rangées de recommandations de contenu personnalisées chaque jour.
«Ces grands algorithmes de recommandation nécessitent beaucoup de travail informatique», a expliqué Hahn. « Si je veux savoir si un nouveau avec lequel nous jouons fait mieux, je ne veux pas désactiver l’ancien, car vous avez toujours besoin de recommandations.
«Je peux maintenant faire tourner un ensemble entièrement nouveau de machines par dizaines, ou centaines ou milliers en un après-midi et parcourir mes données et voir si nous avons fait mieux, et je ne paie que pour les portions que j’utilise. Cela nous permet une incroyable liberté d’expérimentation. »
Le cloud n’est qu’une partie de l’expérience utilisateur de Netflix. Tout ce qui se passe avant leur lancement a lieu dans AWS, mais le contenu vidéo qui suit provient d’un système distinct: Netflix OpenConnect, le réseau propriétaire de distribution de contenu (CDN) de la société. Les appliances OpenConnect stockent le contenu vidéo et le fournissent aux appareils clients.
Les CDN sont conçus pour fournir du contenu Internet aux téléspectateurs en le rapprochant de l’endroit où ils regardent. Netflix a initialement externalisé la livraison de vidéos en streaming à des fournisseurs CDN tiers, mais au fur et à mesure de la croissance de la société, ces fournisseurs ont eu du mal à supporter le trafic. Netflix avait besoin de plus de contrôle sur le service et l’expérience utilisateur.
L’entreprise a décidé de concevoir un CDN adapté à ses besoins.
Il installe désormais les appliances OpenConnect qui stockent et fournissent du contenu dans les centres de données locaux du fournisseur de services Internet (ISP), ce qui isole le service Netflix du large Internet. Les algorithmes de popularité et les techniques de stockage aident à distribuer le contenu de manière à maximiser l’efficacité du déchargement. Le système réduit la demande de capacité réseau en amont et aide Netflix à travailler plus étroitement avec les réseaux ISP qui hébergent son trafic.
« Nous avons conçu des boîtes de mise en cache OpenConnect pour contenir notre contenu, et partout où nous le pouvons, nous les installons à l’intérieur du réseau de votre fournisseur de services Internet, de sorte que lorsque vous voyez ces bits vidéo, vous ne transitez pas réellement hors du réseau de votre opérateur », a déclaré Hahn.
Le nouveau système a réduit l’apparence de la roue tampon détestée d’un ordre de grandeur. Cela a également permis à Netflix de rendre le logiciel CDN plus intelligent. Désormais, chaque fois qu’un client appuie sur la lecture, son appareil peut obtenir son contenu à de nombreux endroits sur Internet.
L’investissement a porté ses fruits lorsqu’un incendie dans un centre de données FAI au Brésil a brûlé la pile complète de machines de Netflix. Les clients qui diffusaient depuis le FAI n’ont constaté aucun changement dans leur expérience utilisateur.
« Leurs appareils savaient déjà où aller chercher les données », a expliqué Hahn. « Cela n’a pas interrompu une seule image de streaming lorsque nous avons littéralement brûlé la base. »
Les développeurs de Netflix sont bien connus de nos jours pour leur approche unique de la culture d’ingénierie. Un outil d’ingénierie du chaos en libre-service appelé Chaos Automation Platform a été lancé pour tester les problèmes dans leurs environnements de production afin qu’ils puissent être sûrs que leur logiciel se comportera comme ils le souhaitent lors d’une panne.
« Les gens appuient sur le bouton de lecture de Netflix des milliers de fois par seconde », a déclaré Hahn. «Si les systèmes ne peuvent pas récupérer automatiquement, s’ils ne peuvent pas gérer de mauvaises situations s’ils ne peuvent pas se réparer eux-mêmes, au moment où j’implique un humain, dans le meilleur des cas, des minutes se sont écoulées.
« Vous pouvez avoir une idée du nombre de nos clients que nous avons déçus en trois, quatre ou cinq minutes, ce qui peut prendre pour impliquer un humain, au bon endroit et au bon travail. L’ingénierie du chaos est une excellente inoculation des échecs. »
Ils utilisent la méthode d’ingénierie du chaos pour s’assurer que Netflix peut survivre à une défaillance dans l’une des trois régions AWS qu’il utilise. Chaque mois, ils désactivent l’une des régions et testent qu’ils peuvent déplacer tous les clients qu’il servait vers un autre en six minutes.
Pour embrasser le chaos sans provoquer de destruction, Netflix a dû créer une culture d’entreprise qui soutenait de telles idées.
Les principes centraux ont été formalisés dans le Netflix Culture Deck de 127 diapositives, que Facebook COO Sheryl Sandberg m’a dit: « Pourrait bien être le document le plus important jamais sorti de la Vallée ».
Un principe central de la politique est de concilier liberté et responsabilité. Les équipes se voient confier la propriété de leur microservice et sont encouragées à agir de manière indépendante, mais pas de façon imprudente.
«Les gestionnaires de Netflix ne définissent pas de tâches à effectuer ou à concevoir par leurs employés», a déclaré Hahn. «Leur travail consiste à leur donner le contexte approprié afin qu’ils puissent prendre les décisions, embaucher d’excellents collègues époustouflants avec lesquels travailler et rester à l’écart.»
L’entreprise évite d’imposer trop de règles au-delà d’un ensemble de principes fondamentaux tels que de ne jamais toucher aux données clients. Hahn décrit l’approche comme la construction de garde-corps mais pas de portes et affirme qu’il peut compter d’une part le nombre de fois où il a dû dire exactement à un ingénieur quoi faire.
«En m’assurant que ce contexte est largement et régulièrement partagé, je peux demander à quelqu’un de concevoir un système de facturation, à quelqu’un d’autre de travailler sur des systèmes algorithmiques, aux SRE de nos équipes de fiabilité et à quelqu’un d’autre de travailler sur le service client, et ils comprendront le même contexte. et marcher vers les mêmes objectifs », a-t-il déclaré.
«Cela nous permet de garder ces équipes vaguement couvertes. Nous n’avons pas beaucoup de structures et de contrôles, mais nous les gardons très alignés. «