Les coulisses techniques de Netflix Une plateforme hébergée à 100% sur le cloud d'Amazon

Netflix a fait le choix depuis plusieurs années d'utiliser l'offre cloud d'Amazon pour supporter une part de plus en plus grande de son informatique. Aujourd'hui, l'ensemble de sa plateforme de production est dans le cloud Amazon Web Services (AWS). Netflix l'utilise tant pour encoder les vidéos reçues des studios que pour gérer l'ensemble de ses applications orientées abonnés. Netflix a principalement recours à trois des principaux services de base d'AWS.

D'une part S3 (SES et SQS) pour ce qui est du stockage, EC2 pour exécuter les applications, ainsi que le moteur Elastic Search, le cache EV Cache et la base de donnée Cassandra. Enfin, Netflix fait un usage intensif du service Amazon ELB (Elastic Load Balancing) pour jongler avec la charge sur ses serveurs. Un domaine échappe toutefois à Amazon : le CDN. Estimant qu'aujourd'hui aucun réseau de diffusion de données multimédia ne peut assumer les volumes de streams vidéo qu'il doit diffuser, Netflix a constitué son propre CDN, se basant sur les boitiers Open Connect, mis au point conjointement avec Facebook.

Netflix exploite aujourd'hui trois zones AWS

le provisionning des machines virtuelles amazon ec2 doit coller au maximum à
Le provisionning des machines virtuelles Amazon EC2 doit coller au maximum à l'état de la demande en puissance machine pour assurer la rentabilité du service Netflix. © Capture / Netflix

Si, en 2012, Netflix ne s'appuyait que sur deux Zones Amazon Web Services (ou groupes de data centers géographiquement localisés), une sur la Côte Est des Etats-Unis et une autre en Irlande, une panne a privé les américains du service pendant une douzaine d'heures lors des fêtes de Noël 2012. Depuis, une troisième zone a été mise en production sur la Côte Ouest des Etats-Unis. Depuis, en cas de panne majeure, le trafic est redirigé vers la zone survivante via Denominator, l'outil de gestion DNS créé par les équipes de Netflix.

Dans ces trois zones AWS, Netflix exécute en permanence plusieurs dizaines de milliers d'instances EC2. La société se montre discret sur le nombre exact d'instances en production mais, à sa décharge, ce nombre varie constamment afin de coller à la demande effective de puissance. De manière automatisée, ce sont plus ou moins 3 000 instances qui sont créées ou arrêtées selon la charge requise.

L'ensemble des instances EC2 de Netflix fonctionnent sous Linux, essentiellement sous CentOS et Ubuntu. Netflix utilise principalement quatre types d'instance. Les instances i2 pour les services qui privilégie le stockage, notamment avec la mise en œuvre de disques SSD, les instances r3 lorsque le besoin de mémoire est prépondérant, les instances c3 pour le calcul, et enfin des instances m3 pour un usage plus général.

netflix utilise actuellement trois zones amazon web services : une pour la côte
Netflix utilise actuellement trois zones Amazon Web Services : une pour la Côte Est des Etats-Unis, une autre pour la Côte Ouest, enfin une en Irlande. © Netflix

Si on ajoute les différents niveaux de puissance proposés par Amazon Web Services pour chaque type d'instance, Netflix utilise une trentaine d'instances différentes pour assouvir ses besoins. La durée de vie moyenne d'une instance Netflix ne dépasse pas 36 heures. La clef de la rentabilité pour Netflix, réside bien évidemment dans sa capacité à ne louer que la puissance qui lui est strictement nécessaire pour délivrer son service. Ses administrateurs utilisent notamment l'outil ICE pour suivre en direct les instances en production et le coût engendré.

Une "armée" d'outils pour tester l'infrastructure

Pour assurer une haute disponibilité aux services, les données sont répliquées entre les différentes zones Amazon Web Service utilisées par Netflix. La base Apache Cassandra assure la réplication entre zones tandis que Zuul assure un fail over entre régions. Pour s'assurer de la disponibilité de cette plateforme cloud, Netflix s'est doté de ce qu'il a baptisé en interne sa "Simian Army", une série d'outils de test particulièrement poussés. Dans cette armée simiesque, on trouve Chaos Monkey, un outil qui va tuer un service pour voir quel est l'impact sur le service global. Latency Monkey est plus sournois : il va ralentir un service pour permettre aux administrateurs d'analyser comment réagit l'architecture si les temps de réponse d'un composant passe de quelques millisecondes à plusieurs secondes, par exemple. Le Conformity Monkey vérifie quant à lui que chaque composant est bien paramétré.

Mais le plus terrible soldat de cette "armée de testeurs" est certainement le Chaos Gorilla. Cet outil est manié avec précaution par les administrateurs de la plateforme puisqu'il tue purement et simplement une zone Amazon Web Service entière. 3 000 instances arrêtées d'un seul coup, alors que des millions d'américains et d'européens regardent le dernier épisode de House of Cards, il faut avoir le cœur bien accroché quand on est responsable d'exploitation chez Netflix ! En fait, l'opération n'est réalisée qu'une fois chaque trimestre et probablement pas lorsqu'un block buster arrive au catalogue.