Au cours des dernières années, notre réseau a pris en charge des centaines de milliers d’événements sportifs diffusés en direct, des téléchargements massifs de logiciels, des milliards d’heures de contenu vidéo diffusé en continu et des demandes de milliers d’applications Web qui nécessitent une réactivité en temps réel et des performances homogènes à l’échelle mondiale. Pour soutenir cette croissance massive, depuis 2015, notre réseau mondial est passé à plus de 250 Tbit/s, nécessitant des milliers de nouveaux serveurs sur nos 300 POP.
Pour relever le défi de déployer une empreinte réseau qui ne cesse de croître et de changer, nos équipes des opérations ont développé une plate-forme d’automatisation INFORMATIQUE à l’aide de StackStorm. Il s’agit d’un pas de géant en avant qui a transformé la façon dont nos équipes déploient, modifient, réparent et désactivent l’infrastructure de serveurs, couvrant plus de 95 % de la population de serveurs sur notre réseau mondial.
Voici un aperçu de la façon dont nous avons construit une plateforme d’automatisation qui nous a permis de:
- Ajoutez plus de 12 000 serveurs à notre réseau en moins de trois ans.
- Automatisez la génération de tickets dans certains cas et résolvez les problèmes sans tickets dans d’autres.
- Offrez à nos équipes des outils pour qu’elles puissent collaborer en temps réel.
- Réduisez le temps passé par les ingénieurs à suivre une série d’étapes manuelles.
Personnalisation de StackStorm dans le projet Cramfish
Conscients de la valeur et de la maturité croissante des plateformes d’automatisation INFORMATIQUE, nous avons formé en 2015 l’équipe infrastructure Automation sous le nom de projet Ecrayfish. Nous avons commencé à développer sérieusement une solution d’automatisation INFORMATIQUE, ce qui n’est pas une mince tâche pour une organisation de notre taille. Le choix du nom du projet — que nous utilisons toujours — était intentionnel. Nous avons longtemps eu des thèmes de poissons et nautiques pour nos outils, mais plus que cela, nous avons choisi les écrevisses parce qu’elles servent de filtreurs, aidant à garder l’environnement dans lequel elles vivent propre.
Au départ, nous avons envisagé de développer notre propre infrastructure d’automatisation INFORMATIQUE, mais nous avons décidé très tôt que StackStorm, avec des améliorations supplémentaires pour prendre en charge nos exigences et notre évolutivité uniques, nous permettait d’avancer de la manière la plus efficace possible. StackStorm est une plate-forme open source orientée événements qui prend en charge une approche « infrastructure en tant que code » de l’automatisation DevOps. Il excelle dans l’exécution de workflows basés sur des événements, s’intègre à Slack, que nous utilisons dans toutes nos équipes opérationnelles, et dispose d’une prise en charge native de ChatOps.
Certaines modifications de configuration ont été apportées à StackStorm pour lui permettre de fonctionner à l’échelle dont nous avons besoin. Il s’agissait principalement d’augmenter le nombre d’instances de service en cours d’exécution et de réduire la rétention des données. Lorsque nous avons commencé le projet, notre réseau était composé de 8 000 serveurs. Maintenant, nous sommes à 20 000 serveurs et nous comptons. La clé de notre évolutivité a été la possibilité d’exécuter un nombre illimité d’instances StackStorm en tant que workers plutôt que d’essayer de faire en sorte qu’une seule instance StackStorm gère tout. Comme le montre l’illustration ci-dessous, cela est rendu possible par quelque chose que nous avons développé appelé Policy Engine, qui synchronise la soumission des demandes à StackStorm en fonction de notre logique métier. Policy Engine peut éventuellement mettre les demandes en file d’attente et les exécuter automatiquement lorsque les stratégies déterminent qu’elles sont sûres. Ces stratégies surveillent la simultanéité, la capacité, le trafic, l’état de production, l’infrastructure, les listes noires et le taux d’échec.
Les demandes de soumission sont acheminées via une instance de Policy Engine vers un nombre illimité de StackStorm Workers pour une évolutivité quasi illimitée.
Codifier les connaissances tribales
L’approche de base dans tout projet d’automatisation INFORMATIQUE consiste à capturer les processus et flux de travail existants, à les transformer en code capable d’implémenter les étapes du flux de travail sans intervention manuelle, et à stocker les flux de travail codifiés dans un référentiel centralisé où ils peuvent être appelés selon les besoins, soit dans le cadre d’une autre automatisation, soit via des commandes ChatOps.
Une fois le projet lancé, l’équipe des écrevisses a capturé les flux de travail et les processus existants de l’ensemble de l’organisation. Heureusement, la majorité des processus les plus importants utilisés par les différents groupes, tels que le Network Operation Center (NOC), les opérations de centre de données ou SysOps, étaient bien documentés et pouvaient rapidement être codifiés en utilisant le langage de programmation Python et ajoutés à Crayfish.
Par exemple, si notre NOC voulait implémenter un workflow de redémarrage, il devrait vérifier qu’il est sûr de travailler sur la machine en fonction de diverses vérifications de stratégie. Par exemple, si un serveur était en production, le système prendrait des mesures pour vider les connexions et mettre à jour l’état. Ensuite, il effectuerait le redémarrage réel et les étapes nécessaires pour vérifier que la machine est prête pour la production avant de finalement la remettre en production.
Bien sûr, il y avait beaucoup de cas marginaux. Parmi les plus difficiles figuraient les processus qui n’avaient pas atteint la documentation. Ces cas de connaissances tribales ont nécessité une collaboration interfonctionnelle et la discussion avec les personnes dont l’expertise a permis de les traiter correctement. L’un des avantages de l’effort d’automatisation a été que nous avons pu capturer ces connaissances, en veillant à ce qu’elles restent au sein de notre organisation à l’avenir.
Dans certains cas, nous avons même pu identifier des moyens plus efficaces de gérer une tâche particulière en contactant plusieurs ingénieurs et techniciens qui comprenaient ce qui se passait pour une tâche spécifique ou comment résoudre un problème particulier. Nous avons constaté que, dans certains cas, les différents niveaux de connaissances des membres de l’équipe étaient différents. C’est à ce moment que nous rassemblions les renseignements de chacun et développions un flux de travail unique dont tout le monde convenait qu’il fournirait la solution la plus efficace.
Déploiement de nouveaux serveurs à la demande
Crayfish a transformé nos opérations INFORMATIQUES à de nombreux niveaux, notamment en simplifiant l’administration des serveurs, en réduisant les temps d’arrêt des serveurs et en accélérant le déploiement des serveurs. Rien qu’en 2018, ITOps a ajouté une capacité de 22 Tbps à notre réseau mondial. L’ajout de milliers de serveurs n’aurait pas été possible sans l’automatisation des écrevisses. Et cela a été accompli sans augmentation significative des effectifs.
Actuellement, Ecrayfish fournit une automatisation robuste pour environ 20 types de serveurs différents. Dans notre organisation, nous définissons un type de serveur comme un groupe de serveurs qui exécutent plus ou moins le même service. Différentes applications s’exécutent sur différents types de serveur, et chaque type de serveur a des besoins de support différents en production. Aujourd’hui, Cryfish prend en charge le cycle de vie complet du serveur pour environ 10 types de serveurs et peut également effectuer la plupart des réparations, révisions et correctifs pour environ 10 types de serveurs supplémentaires. Il fournit également divers degrés de soutien pour environ 40 ou 50 de plus. Puisque nous nous sommes concentrés sur les types de serveurs les plus largement déployés, Cryfish prend en charge environ 96 % de notre population mondiale de serveurs.
L’utilisation d’écrevisses a entraîné une augmentation globale du rendement du CDN et de sa capacité à s’adapter à des événements imprévus. Notre réseau est bien équipé pour prendre en charge un trafic massif et sans cesse croissant provenant des flux d’événements sportifs majeurs et des téléchargements de logiciels de pointe, par exemple, en maintenant plus de serveurs en production et en réduisant l’interruption du retrait des serveurs de la production pendant les périodes de pointe.
Notre échelle contribue à expliquer pourquoi les écrevisses sont essentielles du point de vue de la performance. Si votre entreprise dispose d’un seul centre de données, vous pouvez planifier les temps d’arrêt et rester au fait des besoins de ce centre de données. Mais lorsque vous parlez d’un centre de données dans presque tous les fuseaux horaires, comme indiqué dans la carte du réseau ci-dessous, vous devez faire face à différents profils, utilisations et durées d’utilisation. La prise en compte de tous ces facteurs au cas par cas peut être extrêmement complexe, mais les écrevisses le gèrent facilement.
Avec les écrevisses, nous pouvons toujours planifier des tâches telles que l’approvisionnement ou les mises à niveau pour se produire automatiquement, mais le système est suffisamment intelligent pour répondre aux besoins locaux. Disons qu’un événement d’information en Lettonie a provoqué un pic important dans le streaming vidéo alors que nous voulions reprovisionner tous les serveurs en Lettonie. En raison de l’intégration entre les écrevisses et notre système de collecte de mesures, le système verrait le trafic augmenter et le réapprovisionnement s’arrêter. Il pourrait même mettre plus de serveurs en production si nécessaire.
Détecter les défaillances d’infrastructure avant qu’elles ne deviennent des pannes de service
Les écrevisses et autres systèmes de surveillance réduisent considérablement les temps d’arrêt et de réparation des serveurs individuels. Nos systèmes surveillent en permanence le réseau pour détecter les problèmes ou les défaillances et peuvent créer automatiquement des tickets ou appliquer directement des correctifs. Avec les systèmes automatisés, le personnel n’est pas tenu d’avoir les yeux sur le verre pour repérer les erreurs de réseau – les ordinateurs ne s’ennuient jamais ou ne se fatiguent pas et surveillent en permanence.
Il y a très peu de limitation à la quantité de vérification qui peut être faite de cette façon. Notre système de mesure exécute en continu des vérifications du matériel qui ne nécessitent pas de retirer les machines de la production, tandis qu’un autre système recherche les mauvaises valeurs et appelle les écrevisses pour vérifier sur la machine lorsque des problèmes sont détectés. Avec cette approche, nous pouvons détecter les pannes matérielles très tôt.
Par exemple, si les mesures montrent qu’un disque dur commence à tomber en panne, les systèmes automatisés lanceront un flux de travail dans Ecrayfish qui vérifie l’erreur sur la machine impactée et collecte des détails sur la panne, tels que quel disque dur a échoué dans quel emplacement, le numéro de bouclier, etc. Il crée ensuite un ticket spécialement conçu pour le groupe opérations du centre de données et un technicien est envoyé pour installer un ticket de remplacement.
Historiquement, tout flux de travail manuel nécessitant la coordination ou le transfert entre les étapes de plusieurs services entraînait des retards importants en cours de route. Avec un flux de travail automatisé, le temps de réalisation peut être de quelques minutes au lieu de jours passés dans une file d’attente de ticket à attendre que la demande apparaisse. Les équipes opérationnelles individuelles, qui connaissent le mieux leurs systèmes et applications, disposent ainsi d’un meilleur contrôle.
Donner aux ingénieurs des outils qui les rendent plus productifs
Notre approche antérieure à l’égard du travail de la CNP consistait à émettre un ordre et à attendre que les choses se produisent. Si un technicien NOC passe 10, 20 ou 30 minutes à attendre qu’un serveur s’arrête correctement, vous devez vous demander pourquoi. Est-ce une bonne utilisation du temps ? Les écrevisses peuvent exécuter de nombreuses exécutions en parallèle. Et, comme indiqué précédemment, les écrevisses ont été conçues pour s’étaler horizontalement. Donc, si nous avons besoin de plus de travail, nous pouvons ajouter un nouveau nœud. Si nous nous retrouvons soudainement à devoir faire beaucoup de travail en même temps, nous pouvons augmenter quelques nœuds sur l’ensemble du CDN, puis le réduire à nouveau.
En outre, les techniciens ont seulement beaucoup de mémoire concernant le nombre de machines sur lesquelles ils peuvent travailler à un moment donné. Seul le multitâche le plus exceptionnel peut gérer plus de cinq ou six machines dans des états différents sans perdre de vue ou faire des erreurs. Mais avec les écrevisses, il n’est pas nécessaire de sauter entre les différentes tâches, ils peuvent émettre une commande et passer à autre chose.
En s’appuyant sur les systèmes de provisionnement intelligents existants développés par les équipes infrastructure logicielle et opérations des systèmes, d’autres aspects du cycle de vie des serveurs sont entièrement pris en charge par Cryfish et se produisent de manière largement autonome, notamment les mises à jour du système d’exploitation, le provisionnement ou le reprovisionnement des serveurs, les mises à jour du micrologiciel et les correctifs de sécurité. Lorsqu’un nouveau patch est publié, les écrevisses accélèrent les tests de validation pour s’assurer que le patch est en bon état d’être publié.
Parce que les écrevisses sont intégrées à Slack, il prend en charge les processus INFORMATIQUES normaux et facilite le travail collaboratif à mesure que les besoins et les exigences changent. Plutôt que d’attendre qu’un seul département mette en œuvre un changement, les équipes peuvent désormais définir leur processus manuel comme un workflow automatisé. Ils peuvent ensuite donner le workflow aux utilisateurs finaux pour qu’ils l’exécutent à la demande. Il est également possible de mettre en œuvre des stratégies limitant le moment où un workflow peut être exécuté en toute sécurité. Cela permet également à un ingénieur se tenant devant un serveur dans un centre de données d’émettre une commande pour modifier l’état de production d’un serveur sur lequel il souhaite travailler.
Réflexions finales
Avec des milliers de clients transmettant quotidiennement des téraoctets de données sur notre réseau mondial de plus de 20 000 serveurs, notre implémentation de StackStorm est devenue un outil opérationnel essentiel pour maintenir la santé et la sécurité de nos services. Il nous a permis de faire évoluer notre réseau plus rapidement pour répondre à la demande des clients tout en offrant de meilleures performances malgré les changements dynamiques et les pics de trafic inattendus. Cette agilité opérationnelle fait de nous un fournisseur de services plus fiable qui peut évoluer pour répondre aux demandes de streaming multimédia et d’applications Web.
Bien que la plupart des organisations n’opèrent pas à la même échelle que nous, il y a encore plusieurs enjeux de table opérationnelle qui peuvent rendre l’automatisation attrayante, y compris sa capacité à :
- Concentrez les développeurs sur le travail qui génère un rendement plus élevé
- Standardiser les tâches courantes et banales.
- Améliorez la collaboration entre les services.
- Réduisez les temps hors service des serveurs.
- Améliorez la sécurité en mettant en œuvre des mises à jour de micrologiciel et des correctifs de sécurité.
Sans aucun doute, le passage à l’automatisation INFORMATIQUE offre un retour sur investissement très attractif, mais il est important de s’assurer que vous faites un changement pour les bonnes raisons. Une bonne approche consiste à considérer l’automatisation comme un moyen de donner aux ingénieurs des outils qui les rendront plus productifs et compétents et leur permettront de se concentrer sur les améliorations.
La transition vers une automatisation basée sur les flux de travail est un excellent moyen de socialiser et de codifier les connaissances tribales. Au lieu que chacun ait sa propre approche — nous réunissons la tribu, nous élaborons un flux de travail commun et permettons à chacun de contribuer aux connaissances futures acquises à un seul résultat.