Articles
Tutoriels
Guides interactifs
Surveillance DevOps
Sensibilisez les équipes à chaque étape du pipeline de livraison
Krishna Sai
Head of Engineering, IT Solutions
Les équipes attendent de DevOps un développement plus rapide, des tests réguliers ainsi que des livraisons plus fréquentes, le tout en améliorant la qualité et en réduisant les coûts. Pour y parvenir, les outils de surveillance DevOps offrent une automatisation ainsi qu'une mesure et une visibilité étendues tout au long du cycle de vie du développement, de la planification au développement et à l'intégration, en passant par les tests, le déploiement et les opérations.
Le cycle de vie de développement logiciel (SDLC) moderne est plus rapide que jamais, avec plusieurs phases de développement et de tests simultanées. C'est pour cette raison qu'est née DevOps, une évolution des équipes cloisonnées qui assurent les fonctions de développement, de tests et d'exploitation vers une équipe unifiée qui assure toutes les fonctions et adopte la pratique du « you build it, you run it » (vous le concevez, vous en êtes responsable ou YBIYRI).
Les changements de code fréquents étant désormais monnaie courante, les équipes de développement ont besoin d'une surveillance DevOps, qui offre une vue complète et en temps réel de l'environnement de production.
Qu'est-ce que la surveillance DevOps ?
La surveillance DevOps implique de superviser l'ensemble du processus de développement, depuis la planification et le développement jusqu'à l'intégration, les tests, le déploiement et les opérations. Elle implique une vue complète et en temps réel de l'état des apps, des services et de l'infrastructure dans l'environnement de production. Des fonctionnalités telles que les flux en temps réel, l'option permettant de revoir l'historique et les visualisations sont des éléments essentiels de la surveillance des apps et des services.
Découvrir les solutions
Simplifiez la gestion des incidents ainsi que la réponse à ces derniers
Matériel connexe
En savoir plus sur les outils DevOps
La surveillance DevOps permet aux équipes de réagir de manière rapide et automatique à toute dégradation de l'expérience client. Plus important encore, l'autonomie des équipes est renforcée dès les premières phases du développement et elles peuvent minimiser les changements de production en échec. Pour illustrer la surveillance DevOps, citons la meilleure instrumentation des logiciels pour détecter les erreurs et y répondre, à la fois manuellement via les astreintes et automatiquement lorsque cela est possible.
Surveillance et observabilité DevOps
Si vous considérez la partie gauche de la boucle de l'infini comme l'aspect produit et la partie droite comme l'aspect opérationnel, le responsable produit qui pushe une nouvelle fonctionnalité en production s'intéresse à la façon dont le projet se décompose en tâches et en user stories. Le développeur dans la partie gauche du projet doit voir comment mettre en production la fonctionnalité, y compris les tickets de projet, les users stories et les dépendances. Si les développeurs adoptent le principe DevOps YBIYRI (you build it, you run it ou vous le concevez, vous en êtes responsable), ils s'intéressent également à la remédiation des incidents.
En ce qui concerne l'aspect opérationnel du cycle de vie, l'ingénieur chargé de la fiabilité du site (SRE) doit comprendre les services qui peuvent être mesurés et surveillés, de sorte que s'il y a un problème, il peut être résolu. Si vous ne disposez pas d'une chaîne d'outils DevOps qui relie tous ces processus, vous avez un environnement brouillon, désordonné et chaotique. Au contraire, si vous disposez d'une chaîne d'outils bien intégrée, vous pouvez obtenir facilement le contexte des tâches en cours.
L'importance de la surveillance DevOps
Une approche DevOps étend la surveillance continue aux environnements de staging, de test et même de développement. Cela s'explique par de nombreuses raisons.
Les changements de code fréquents nécessitent de la visibilité
Les changements de code fréquents qui reposent sur l'intégration et le déploiement continus ont accéléré le rythme des changements et rendu les environnements de production de plus en plus complexes. Avec l'arrivée des microservices et des micro front-ends dans les environnements cloud natifs modernes, des centaines, voire des milliers, de charges de travail différentes fonctionnent en production, chacune ayant des exigences opérationnelles différentes en matière d'évolution, de latence, de redondance et de sécurité.
Cela a accentué la nécessité d'une visibilité accrue. Les équipes doivent non seulement détecter les dégradations de l'expérience client et y répondre, et ce, dans un délai critique.
Collaboration automatisée
DevOps nécessite implicitement d'assurer une plus grande collaboration en équipe entre le développement, les opérations et les fonctions métier. Cependant, un manque d'intégration entre les outils peut faire obstacle à la collaboration. En résultent des défis de coordination entre les différentes équipes, ce qui est un point clé de l'enquête DevOps d'Atlassian.
Vous pouvez automatiser la collaboration via des pratiques telles que l'obtention d'une vue complète du pipeline de développement dans l'éditeur. Vous pouvez également définir des règles d'automatisation qui tiennent compte des commits ou des pull requests, puis mettent à jour l'état des tickets Jira associés et envoient des messages dans le canal Slack de l'équipe. De plus, vous pouvez tirer parti des analyses qui fournissent des rapports d'examen et de test.
Expérimentation
La nécessité d'optimiser les produits pour répondre aux besoins des clients, grâce à la personnalisation et à l'optimisation des entonnoirs de conversion, engendre une expérimentation constante. Les environnements de production peuvent exécuter des centaines d'expériences et de feature flags, il est donc difficile pour les systèmes de surveillance de communiquer la cause d'une expérience dégradée.
Les exigences croissantes en matière de disponibilité continue des apps et services, ainsi que les exigences strictes en matière de SLA, peuvent renforcer la vulnérabilité des apps. Les équipes de développement doivent s'assurer qu'elles définissent des objectifs de niveau de service (SLO) ainsi que des indicateurs de niveau de service (SLI) qui font l'objet d'une surveillance et d'actions.
Gestion des changements
La plupart des interruptions de production étant dues à des changements, la gestion des changements est essentielle, notamment pour les apps critiques, comme celles des secteurs financiers et de santé. Les risques associés aux changements doivent être déterminés, et les flux d'approbation doivent être automatisés en fonction de ces risques.
La gestion de ces complexités nécessite une stratégie de compréhension et de surveillance complète. Cela implique de définir et d'adopter des pratiques de surveillance et de disposer d'un ensemble d'outils de surveillances riche, flexible et avancé qui est essentiel aux processus de développement.
Surveillance des systèmes dépendants
Les systèmes distribués sont de plus en plus fréquents et sont souvent constitués de nombreux services transverses de plus petite taille. Les équipes doivent désormais non seulement surveiller les systèmes qu'elles développent, mais également surveiller et gérer les performances ainsi que la disponibilité des systèmes dépendants. Amazon Web Services (AWS) propose plus de 175 produits et services, notamment des outils de calcul, de stockage, de mise en réseau, de base de données, d'analyse, de déploiement, de gestion, mobiles et de développement. Si vous développez votre app sur AWS, vous devez vous assurer de choisir le service adapté à ses besoins. Vous avez également besoin d'instruments et de stratégies pour identifier les erreurs de manière distribuée et gérer les défaillances des systèmes dépendants.
Fonctionnalités clés de la surveillance DevOps
Conformément à la tradition DevOps, l'élaboration et l'implémentation d'une stratégie de surveillance nécessitent de prêter attention aux pratiques essentielles ainsi qu'à un ensemble d'outils.
Tests autonomes
Les tests autonomes effectués au début du cycle de vie permettent d'améliorer la qualité, de raccourcir les cycles de test et de réduire les erreurs. Pour les équipes DevOps, il est important d'étendre les pratiques de tests autonomes pour surveiller l'intégrité des environnements de pré-production. Cela garantit que la surveillance est implémentée de façon anticipée et fréquente, de sorte à assurer la continuité lors de la production et à préserver la qualité des alertes de surveillances. Les tests et la surveillance doivent fonctionner ensemble, la surveillance anticipée permettant d'évaluer le comportement de l'app lors des parcours et transactions clés des utilisateurs. Cela permet également d'identifier les écarts de performances et de disponibilité avant le déploiement en production.
Gestion des alertes et des incidents
Dans un univers cloud natif, les incidents sont tout autant une réalité que les bugs dans le code. Ces incidents incluent des défaillances matérielles et de réseau, des erreurs de configuration, l'épuisement des ressources, des incohérences de données ainsi que des bugs logiciels. Les équipes DevOps doivent prendre en compte les incidents et disposer d'une surveillance d'excellente qualité pour y répondre.
Voici les bonnes pratiques pour vous aider en ce sens :
- Développez une culture de la collaboration, où la surveillance est utilisée lors du développement, en parallèle de fonctionnalités et de tests automatisés.
- Créez des alertes appropriées et de haute qualité dans le code lors du développement. Cela minimise le temps moyen de détection (MTTD) ainsi que le temps moyen d'isolement (MTTI).
- Créez des mécanismes de surveillance pour vous assurer que les services dépendants fonctionnent comme prévu.
- Octroyez un délai pour concevoir les tableaux de bord nécessaires et former les membres de l'équipe à leur utilisation.
- Planifiez des « war games » pour le service afin de vous assurer que les mécanismes de surveillance fonctionnent comme prévu et pour détecter les mécanismes de surveillance manquants.
- Lors des sprints, planifiez la clôture des mesures prises lors de précédentes revues d'incident, en particulier des mesures liées à l'élaboration de mécanismes de surveillance et d'automatisations manquants.
- Développez des détecteurs pour préserver la sécurité (mises à niveau/correctifs/identifiants propagés).
- Adoptez une mentalité de « mesure et de surveillance de tous les éléments » grâce à l'automatisation qui détermine la réponse aux alertes identifiées.
Outils de surveillance DevOps
Pour compléter un ensemble de pratiques de surveillance saines, il existe des outils avancés qui s'alignent sur la culture DevOps/YBIYRI. Pour identifier et implémenter des outils de surveillance, vous devez vous montrer attentif et bien appréhender les outils de développement des dépôts de code, les IDE, les débogueurs, les détecteurs de défauts, les outils d'intégration continue et de déploiement.
Une interface unique offre une vue complète des différentes apps, des services et des dépendances d'infrastructure dans l'environnement de production et de staging. Il est ainsi possible de provisionner, d'intégrer, d'étiqueter, d'afficher des environnements distribués complexes, et d'analyser leur intégrité. Par exemple, Micros, l'outil PaaS interne d'Atlassian, comprend un outil appelé Microscope qui fournit toutes les informations relatives aux services de manière concise et détectable.
La surveillance des performances applicatives est essentielle pour s'assurer que les indicateurs de performance spécifiques de l'app comme le temps de chargement d'une page, les latences des services en aval ou les transitions sont surveillés en plus des métriques système de base comme l'utilisation du processeur et de la mémoire. Des outils comme SignalFX et NewRelic sont parfaits pour observer les données de métriques en temps réel.
Implémentez différents types de mécanismes de surveillance, notamment pour les erreurs, les transactions, la synthèse, les pulsations, les alarmes, l'infrastructure, la capacité et la sécurité lors du développement. Assurez-vous que chaque membre est formé dans ces domaines. Ces mécanismes de surveillance sont souvent spécifiques de l'app et doivent être implémentés en fonction des exigences de celle-ci. Par exemple, notre équipe de développement Opsgenie implémente des mécanismes de surveillance synthétiques qui créent une alerte ou un incident, puis vérifient que le flux d'alerte est exécuté comme prévu (en d'autres termes, que les intégrations, les routages et les politiques fonctionnent correctement). Nous implémentons également des mécanismes de surveillance synthétiques pour les dépendances d'infrastructure qui vérifient régulièrement la fonctionnalité de divers services AWS.
Un système de gestion des alertes et des incidents qui s'intègre de manière transparente aux outils de vos équipes (gestion des journaux, rapports de crash, etc.) afin de s'adapter naturellement au rythme de développement et opérationnel de votre équipe. L'outil doit envoyer des alertes importantes dans vos canaux de notification préférés avec des latences ultra faibles. Il doit également offrir la possibilité de regrouper les alertes afin de les filtrer, notamment lorsque plusieurs alertes sont générées par une seule erreur ou défaillance. Chez Atlassian, nous ne nous contentons pas de proposer à nos clients Opsgenie pour répondre à ces attentes, nous l'utilisons également en interne pour nous assurer que nous disposons d'un système de gestion des incidents robuste, flexible et fiable intégré à nos pratiques de développement.
Conclusion…
Lors de l'adoption de la méthodologie DevOps, il est important de s'assurer que la surveillance gagne en autonomie en plus de mettre en place des tests, pratiques et outils pour répondre aux attentes de livraison rapide des changements en production avec une qualité élevée.
Pour en savoir plus, consultez les ressources Atlassian suivantes sur DevOps, la gestion des incidents et la gestion des changements.
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.