Home Articles techniques Pouvez-vous bénéficier de l’automatisation des serveurs ?
Applications

Pouvez-vous bénéficier de l’automatisation des serveurs ?

About The Author

Outline

Au cours des dernières années, notre réseau a pris en charge des centaines de milliers d’événements sportifs en streaming en direct, des téléchargements massifs de logiciels, des milliards d’heures de contenu vidéo en streaming et des demandes de milliers d’applications Web qui nécessitent toutes 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 Tbps, nécessitant des milliers de nouveaux serveurs sur nos 300 points de vente.

Pour faire face au défi du déploiement d’une empreinte réseau en constante croissance et évolution, nos équipes opérationnelles ont développé une plateforme d’automatisation INFORMATIQUE à l’aide de StackStorm. Il s’agit d’un bond 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 de 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.
  • Donnez à 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 Crayfish

Reconnaissant la valeur et la maturité croissante des plates-formes d’automatisation INFORMATIQUE, en 2015, nous avons formé l’équipe Infrastructure Automation sous le nom de projet Crayfish. Nous avons sérieusement commencé à développer une solution d’automatisation INFORMATIQUE, ce qui n’est pas une mince affaire pour une organisation de notre taille. Le choix du nom du projet — que nous utilisons encore — était intentionnel. Nous avons depuis longtemps 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 besoins uniques et notre évolutivité, nous a permis d’aller de l’avant plus efficacement. 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 au sein de nos équipes opérationnelles, et bénéficie d’un support ChatOps natif.

Des 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 déclenche la soumission de 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 politiques surveillent la simultanéité, la capacité, le trafic, l’état de la production, l’infrastructure, listes noires et 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é pratiquement illimitée.

Codifier le savoir tribal

L’approche de base de tout projet d’automatisation INFORMATIQUE consiste à capturer les processus et workflows existants, à les transformer en code capable de mettre en œuvre les étapes du workflow sans intervention manuelle, et stockez les workflows codifiés dans un référentiel centralisé où ils peuvent être appelés en fonction des besoins, soit dans le cadre d’une autre automatisation, soit via des commandes ChatOps.

Une fois le projet lancé, l’équipe d’é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 différents groupes, tels que le Network Operation Center (NOC), Data Center Operations ou SysOps, étaient bien documentés et pouvaient rapidement être codifiés à l’aide du langage de programmation Python et ajoutés aux écrevisses.

Par exemple, si notre NOC voulait implémenter un workflow de redémarrage, il devrait vérifier que le travail sur la machine est sûr 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 effectuera le redémarrage réel et les étapes nécessaires pour vérifier que la machine est prête pour la production avant de la remettre en production.

Pour être sûr, il y avait beaucoup de cas de bord. Parmi les plus difficiles figuraient les processus qui n ‘ avaient pas abouti à la documentation. Ces cas de connaissance tribale nécessitaient une collaboration interfonctionnelle et la communication avec les personnes dont l’expertise assurait qu’ils étaient traités correctement. L’un des avantages de l’effort d’automatisation était 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 communiquant avec 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, il y avait différents niveaux de connaissances parmi les divers membres de l’équipe. C’est à ce moment-là que nous allions recueillir l’intelligence de chacun et développer un flux de travail unique dont tout le monde était d’accord pour fournir 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. En 2018 seulement, 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 augmenter de manière significative les effectifs.

Actuellement, Crayfish 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, Crayfish 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 des degrés variables de support pour environ 40 ou 50 de plus. Puisque nous nous sommes concentrés sur les types de serveurs les plus largement déployés, Crayfish prend en charge environ 96 % de notre population mondiale de serveurs.

L’utilisation d’écrevisses a entraîné une augmentation globale de la performance du CDN et de sa capacité à s’adapter aux é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 les interruptions de retrait de 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 datacenter, vous pouvez planifier les temps d’arrêt et rester au fait des besoins de ce datacenter. Mais lorsque vous parlez d’un centre de données dans presque tous les fuseaux horaires, comme le montre 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 manipulent 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. Imaginons qu’un événement d’actualité en Lettonie ait provoqué un grand pic de streaming vidéo au moment même où nous voulions reprovisionner tous les serveurs en Lettonie. En raison de l’intégration entre les écrevisses et notre système de collecte de métriques, 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 pannes 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 à la recherche de problèmes ou de 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 la vitre pour repérer les erreurs de réseau – les ordinateurs ne s’ennuient jamais ou ne se fatiguent jamais 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 métriques exécute en permanence des vérifications matérielles 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 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 indiquent qu’un disque dur commence à tomber en panne, les systèmes automatisés lanceront un flux de travail dans l’écrevisse qui vérifie l’erreur sur la machine affectée et collecte des détails sur la panne, tels que le disque dur défaillant dans quel emplacement, le numéro du bouclier et ainsi de suite. Il crée ensuite un ticket spécialement conçu pour le groupe opérations du centre de données et un technicien sera envoyé pour installer un ticket de remplacement.

Historiquement, tout flux de travail manuel qui exigeait que plusieurs départements coordonnent ou transfèrent entre les étapes entraînait des retards importants en cours de route. Avec un flux de travail automatisé, le temps jusqu’à l’achèvement peut être de quelques minutes au lieu de jours passés dans une file d’attente de tickets en attendant que la demande apparaisse. Les équipes opérationnelles individuelles qui connaissent le mieux leurs systèmes et leurs applications disposent ainsi d’un contrôle accru.

Offrir aux ingénieurs des outils qui les rendent plus productifs

Notre approche antérieure 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 normalement, 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 être mises à l’échelle horizontalement. Donc, si nous avons besoin de plus de travail, nous pouvons ajouter un nouveau nœud. Si nous devons soudainement faire beaucoup de travail en même temps, nous pouvons augmenter quelques nœuds sur l’ensemble du CDN, puis le réduire.

De plus, les techniciens ne disposent que d’une mémoire suffisante sur le nombre de machines sur lesquelles ils peuvent travailler en même temps. 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 ni commettre d’erreurs. Mais avec les écrevisses, il n’est pas nécessaire de sauter entre 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 exploitation des systèmes, d’autres aspects des cycles de vie des serveurs sont entièrement pris en charge par Crayfish et se déroulent en grande partie de manière autonome, y compris les mises à jour du système d’exploitation, le provisionnement ou le reprovisionnement des mises à jour du micrologiciel et les correctifs de sécurité Lorsqu’un nouveau patch est publié, l’écrevisse accélère les tests de validation pour s’assurer que le patch peut être libéré.

Parce que l’écrevisse est intégrée à Slack, elle prend en charge les processus INFORMATIQUES normaux et facilite le travail collaboratif en fonction de l’évolution des besoins et des exigences. 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. Des règles limitant le moment où un flux de travail peut être exécuté en toute sécurité peuvent également être mises en œuvre. 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 poussant des téraoctets de données sur notre réseau mondial de plus de 20 000 serveurs par jour, notre implémentation de StackStorm est devenue un outil opérationnel essentiel pour maintenir nos services sains et sécurisés. Cela 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 ne fonctionnent pas à la même échelle que nous, il existe encore plusieurs enjeux opérationnels 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é
  • Normaliser les tâches courantes et banales.
  • Améliorez la collaboration entre les services.
  • Réduisez les temps d’arrêt des serveurs.
  • Améliorez la sécurité en implémentant des mises à jour de firmware et des correctifs de sécurité.

Il ne fait aucun doute que le passage à l’automatisation INFORMATIQUE offre un retour sur investissement très attractif, mais il est important de s’assurer que vous faites un déménagement pour les bonnes raisons. Une bonne approche consiste à considérer l’automatisation comme un moyen de fournir 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 l’automatisation basée sur le workflow 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, élaborons un flux de travail commun et permettons à chacun de contribuer aux connaissances futures acquises pour un résultat net unique.