Injecter de l'échec chez Netflix, tout en restant fiable pour plus de 40 millions de clients
Corey Bertram, ingénieur en fiabilité du site chez Netflix, s'est récemment exprimé à un groupe DevOps Meetup au siège de PagerDuty à propos de l'échec de l'injection chez Netflix. Pour Corey, il voulait montrer aux gens ce qui peut mal tourner, car tout peut mal tourner, cela arrivera. Promouvoir le chaos et provoquer l’échec ont été un excellent moyen de maintenir Netflix opérationnel pour ses plus de 40 millions de clients.
Chargé de la disponibilité et de la fiabilité de Netflix, Corey a déclaré :
« Je passe beaucoup de temps à réfléchir à la façon de casser Netflix »
Selon Corey, en injectant l’échec dans ses systèmes de production, Netflix a pu améliorer considérablement la manière dont il parvient à l’échec.
La culture de liberté et de responsabilité de Netflix est une rareté, surtout pour les grandes entreprises. Chaque développeur de Netflix est libre de faire ce qu'il pense être le mieux pour Netflix. Leurs quelque 1000 ingénieurs sont encouragés à faire preuve d'audace et à résoudre les problèmes, ce qui permet à Netflix de tout se dérouler de manière organique. C'est pour cette raison que Netflix n'a pas d'équipe d'exploitation, à la place chaque ingénieur est responsable de ses propres services, de la conception à la production.
Corey admet que cela crée un environnement hostile pour les ingénieurs, où chaque incident est unique et où personne ne sait comment tout cela fonctionne. Mais, lorsque leurs ingénieurs sont invités à se déchaîner, ils le font. Ils n'ont pas peur des défis et trouvent des solutions à des problèmes qu'aucune autre entreprise n'a jamais rencontrés.
Netflix possède des centaines de bases de données et des centaines de services en cours de production, ce qui rend l'injection fréquente de défaillances dans leur système nécessaire à leur succès et à leur croissance continus.
« Personne ne sait comment fonctionne Netflix. Je le dis de la manière la plus sincère possible. Personne ne comprend plus comment fonctionne ce truc de bout en bout. C'est énorme. »
Adopter une approche différente de la défaillance et de la fiabilité
Les déploiements ont lieu 24 heures sur 24 et 7 jours sur 7 chez Netflix, ce qui signifie que tout peut arriver à tout moment sur leurs dizaines de milliers d'instances. C'est pourquoi ils ont décidé de se concentrer sur les clusters plutôt que sur les incidents individuels. Selon Corey, il est plus facile de restaurer un millier de services plutôt qu'un seul, ce qui permet de repérer les tendances.
Corey admet que Netflix ne fait pas de tests. Il est impossible de reproduire ce qui a été construit en production dans un environnement de test. Cependant, cela ne signifie pas qu'aucun test n'est effectué, mais leurs environnements de test ne représentent qu'une petite fraction de ce qui se passe en production. Lorsque les services sont déployés, ils s'attaquent à un environnement de production entièrement nouveau causé par des conditions uniques qui se produisent dans leur environnement de production.
« Du point de vue de la fiabilité, nous sommes en quelque sorte simplement là pour le voyage. »
En l'absence d'environnement de test, Netflix a tout automatisé et créé la Simian Army.
Injectez de l'échec… mais ne cassez pas Netflix
Netflix garantit la fiabilité de ses systèmes de production en automatisant en permanence les tests. En testant délibérément leurs systèmes, ils peuvent voir s'ils peuvent réellement résister à un combat. Mais pour inculquer la nécessité de la fiabilité, il fallait vendre les concepts en interne. Pour ce faire, Netflix a décidé de promouvoir et d'encourager l'utilisation de son processus, la Simian Army.
Commencer petit. Trouvez les solutions faciles et faites simple en vous concentrant sur les solutions faciles à mettre en œuvre. Selon Corey, ce sont ces solutions faciles qui vous mordront si vous les ignorez. Ne vous enlisez pas dans la création de centaines de scénarios de test.
Tout enregistrer Certains disent que Netflix est une entreprise de journalisation qui diffuse des vidéos car elle enregistre chaque action client pour avoir un aperçu de ce qui fonctionne et de ce qui ne fonctionne pas. Vous ne pouvez pas réussir sans aperçu, alors enregistrez tout. Enregistrez toutes vos mesures, graphiques, alertes, tout. Vous devrez investir massivement dans votre infrastructure d'analyse afin de pouvoir évoluer.
Test de fiabilité de l'échelle à la zone. Une excellente façon de voir comment vous allez gérer une panne de zone. Netflix construit tout par trois, donc ils devraient être capables de résister aux pannes de zone. Pour Netflix, Chaos Gorilla automatise la relocalisation du trafic, fait évoluer le trafic, puis détruit tout.
Astuce : si vous êtes sur Amazon, Corey recommande d’utiliser un équilibrage de charge asymétrique pour éviter de transférer une tonne de trafic dans une zone qui est toujours debout après une panne.
Autorisez les opt-outs, mais encouragez les opt-ins. Vous ne souhaitez peut-être pas que tous vos services connaissent des pannes, car cela peut entraîner des retards ou la perte de semaines de travail. Vous souhaitez établir des relations avec vos développeurs et non les ruiner en détruisant leur travail.
Créez une salle de guerre (elles sont essentielles). Lors de l'exécution de l'automatisation des pannes, il est essentiel qu'un représentant de chaque équipe soit présent. Vous ne savez pas comment votre système peut réagir à la panne. Le fait de réunir tout le monde pour surveiller le service dont il est responsable permettra de réagir et de traiter facilement ce que vous avez appris.
Répéter. Souvent. Actuellement, Netflix exécute ses automatisations de pannes tous les trimestres. Cette mesure est en cours d'adoption toutes les deux semaines. Ce n'est ni simple ni facile, mais c'est nécessaire si vous voulez évoluer et rester fiable.
Corey résume que si vous cherchez à accroître la fiabilité, ce n'est pas une tâche que vous pouvez entreprendre seul, sinon vous échouerez. Bien qu'il vous faudra toujours trouver un équilibre entre la fiabilité, le coût ou l'innovation, il nous rappelle qu'il est encore plus essentiel de rester simple.