BT

Comment Netflix déploie son code

par Zef Hemel , traduit par Eric Bellemon le 25 juin 2013 |

Netflix, le populaire site de streaming de films, procède à une centaine de déploiements par jour, sans l'utilisation de Chef ou Puppet, sans équipes d'Assurance Qualité et sans ingénieurs spécialisés dans les déploiements. Pour faire cela, Netflix a construit un PaaS (Platform as a Service) fait maison, qui permet à chaque équipe de déployer leurs propres parties de l'infrastructure quand ils le souhaitent, et autant de fois que nécessaire. Lors de la QCon New York 2013, Jeremy Edberg a présenté l'infrastructure que Netflix a mis en place pour permettre ces itérations rapides, par dessus Amazon AWS.

Netflix utilise une architecture orientée service pour implémenter leur API, qui gère la plus grande partie des requêtes du site (2 milliards de requêtes par jours). Dans les coulisses, leur API est séparée en de nombreux services, et chaque service est géré par une équipe, permettant à chaque équipe de travailler de manière relativement autonome et de décider eux-mêmes quand et à quelle fréquence déployer une nouvelle version.

Netflix s'est énormément investi dans le DevOps. Les développeurs créent, déploient et administrent leurs propres clusters de serveurs et sont responsables lorsque quelque chose se passe mal. En cas d'échec, une réunion est organisée où la cause d'origine du problème est examinée et des solutions pour empêcher que cela se reproduise dans le futur sont discutées, de manière similaire aux Cinq pourquoi.

Le déploiement chez Netflix est entièrement automatisé. Lorsqu'un service a besoin d'être déployé, le développeur push le code sur un gestionnaire de code source. Le code est récupéré par Jenkins qui lance la génération d'un build qui génère un package de l'application. Puis, une nouvelle image VM (AMI) est construite en se basant sur une image squelette, qui contient une distribution Linux, les logiciels que tous les serveurs Netflix utilisent, y compris une JVM et Tomcat, et les customisations de l'équipe. Par-dessus cette installation de base, le package de l'application est installé. À partir de cela, l'AMI est générée et enregistrée.

Pour déployer les images sur son infrastructure, Netflix a créé Asgard. À travers l'interface web d'Asgard, les images peuvent être instanciées pour créer des clusters EC2. Chaque cluster est composé d'au minimum 3 instances EC2 pour la redondance et distribués sur plusieurs zones. Lors du déploiement d'une nouvelle version, le cluster exécutant la précédente version continue à fonctionner pendant que la nouvelle version est en cours d'instanciation. Quand la nouvelle version a démarré et s'est enregistrée elle-même à l'annuaire des services Netflix (Eureka), le load balancer redirige tout le trafic vers le nouveau cluster. Le nouveau cluster est monitoré attentivement pendant toute une journée. Si tout s'execute correctement, l'ancien cluster est détruit. Si quelque chose se passe mal, le load balancer redirige à nouveau le trafic vers l'ancien cluster.

Il y a des défaillances tous les jours dans l'infrastructure Netflix. Le logiciel doit être capable de gérer des problèmes matériels, des problèmes de réseaux et beaucoup d'autres types d'erreurs. Même si le problème ne se produit pas naturellement, il est provoqué volontairement par The Simian Army. The Simian Army est composé d'un certain nombre de "monkeys" (logiciels) qui provoque un problème aléatoirement. Par exemple, le Chaos Monkey fait tomber aléatoirement des serveurs et le Latency Monkey ajoute aléatoirement de la latence sur le réseau. Garantir que des problèmes arrivent en permanence permet d'empêcher les équipes d'ignorer ces problèmes et instaure une culture de résilience aux problèmes.

Beaucoup de parties de l'infrastructure Netflix sont déjà open source et disponibles sur GitHub. C'est un des objectifs de Netflix d'éventuellement rendre disponible son infrastructure pour que d'autres entreprises en bénéficient.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2014 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT