Catégories : Expertise DSIPar Commentaires fermés sur Supervision du DevOps : en route vers l’amélioration continue

Le DevOps c’est un changement de culture professionnelle profond et un état d’esprit dans lequel les silos disparaissent au profit d’une relation agile et collaborative entre les équipes qui partagent les mêmes méthodes de travail.

En faisant tomber les barrières notamment entre les développeurs et les opérationnels mais aussi la sécurité, les métiers, la finance… l’objectif est de raccourcir les cycles de développement, d’augmenter la fréquence de déploiement et d’améliorer la fiabilité de chaque version en continu.

Cette nouvelle relation entre les équipes s’accompagne de méthodes (souvent agiles) et de nouveaux outils (automatisation, suivi, déploiement).  Cela favorise les cycles courts, permet de générer des indicateurs de suivi et offre l’avantage de créer de la valeur rapide pour les clients. La supervision se place donc au cœur du dispositif DevOps et consiste à définir les bonnes données à faire remonter.

L’idée est de mesurer l’impact d’une action pour connaître son efficacité, réinjecter tout ou partie de l’information à l’itération suivante et, ainsi, continuer à apprendre et à améliorer, c’est que l’on appelle le ‘feedback loop’ ou encore la boucle infinie du DevOps.

La supervision : un élément central du DevOps

La monitoring étant le meilleur moyen de garantir l’amélioration continue, cela participe à l’adoption avec succès de la démarche par les équipes mais conforte également :

La collaboration

Grâce au principe des équipes restreintes, multi compétentes et autonomes (appelées également Feature Teams), la responsabilité est partagée par tous, sur l’ensemble de la chaîne de valeur.

La supervision du DevOps offre d’emblée aux équipes l’opportunité de travailler en collaboration pour optimiser les performances et la disponibilité. En réutilisant les artefacts des phases de conception et de test pour créer des indicateurs pouvant s’exécuter dans des environnements de pré-production, les équipes peuvent s’assurer que tout le monde est aligné, que l’environnement est stable et conforme.

Idéalement, certains indicateurs devraient exister préalablement à l’implémentation du CI/CD. Ils permettent ainsi d’avoir une vue objective des améliorations que le CI/CD apporte. Certains peuvent ensuite être ajoutés pour mesurer d’autres aspects, offrant alors la possibilité de détecter d’autres difficultés éventuelles, d’y apporter une réponse adaptée et finalement de progresser globalement.

L’automatisation

Par nature, la surveillance proactive est un processus automatisé. En fait, moins vous interagissez avec votre outil de supervision, mieux c’est. Cela signifie que vos applications fonctionnent comme prévu et que l’outil de surveillance lui-même fonctionne correctement. Du point de vue de l’équipe, une surveillance plus précoce et plus fréquente permet de réduire la quantité de travail manuel dédié au bon fonctionnement de l’application.

L’automatisation contribue aussi à la réalisation d’un concept fort du DevOps, celui de la confiance. Avec une automatisation mature, bien maîtrisée, on est à priori à l’abri d’une mise en production à déployer en urgence un vendredi soir, juste avant le week-end. Le principe des livraisons régulières minimise également l’enjeu et le risque de chaque livraison.

Les KPI

Pour le DevOps, les indicateurs de performance doivent être concrets, utiles, mesurables et répondre aux particularités de ces processus :

  • Etre évocateurs auprès des équipes de développement comme des équipes des opérations
  • Permettre de mesurer la performance de toute la chaîne en termes de productivité, qualité, et satisfaction client

La surveillance doit donc être exhaustive et doit évoluer en même temps que les évolutions techniques. La conteneurisation, par exemple, pour assurer une montée en charge implique une réorchestration de la supervision pour la récupération des logs.

Les KPI sont gage de rapidité et d’efficacité pour les équipes d’autant plus s’ils sont liés à un KPI métier. Non seulement cela permet de soigner le périmètre et l’efficacité des tests (les tests pour les tests ne sont pas forcément utiles et surtout il faut penser à archiver ceux devenus inutiles) mais cela permet surtout de stimuler et de motiver l’équipe.

Le partage

La transparence est un des fondements du DevOps, c’est le ‘sharing’ du modèle CALMS (Culture, Automation, Lean, Measure, Sharing).

Un facteur clé de la collaboration est la capacité de partager des informations. La surveillance peut aider à fournir aux équipes un ensemble de données qui peut être partagé entre différents services pour améliorer l’application. L’alignement est un aspect fondamental de la culture DevOps, et le partage des données en est l’élément vital.

Superviser les processus DevOps permet de définir les bonnes données à faire remonter pour récupérer les informations qui paraissent les plus pertinentes, se mettre d’accord sur les alertes et les canaux de diffusion pour un partage optimisé des informations.

 

La surveillance continue : comment ça fonctionne ?

La supervision dans le cadre d’une démarche DevOps concerne non seulement le système, les services, les applications (logs) mais aussi la chaine d’automatisation DevOps, sans oublier l’UX ; la complémentarité et la centralisation des informations étant primordiales.

La mise en production d’une modification, aussi mineure qu’un bouton sur un site e-commerce par exemple, peut avoir des impacts fort sur l’expérience utilisateur et la conversion.  L’outil de monitoring doit être aussi en mesure de mettre ce type de comportement en évidence.

Il devient essentiel d’obtenir de plus en plus d’indicateurs métiers en intégrant des données diverses (internes comme externes) et de les corréler.

Il faut donc :

  • Recueillir, stocker, visualiser, analyser
  • Impliquer toutes les parties prenantes pour répondre au concept de transparence du DevOps (« Sharing » de CALMS)
  • Déterminer une politique d’alertes (niveaux, canaux) pour être le plus réactif possible

 

La Collecte des données

La capture se fait via des connecteurs qui accèdent directement à la donnée, en mode push ou pull, sans modifier la source.

Le choix des KPI’s

La donnée collectée va ensuite alimenter des modèles de données et d’observation qui intègrent des indicateurs préalablement définis afin d’évaluer la situation en continu sur des critères pertinents pour le métier.

L’analyse

Ces indicateurs sont mis à disposition de toutes les parties prenantes via des tableaux de bord qui permettent d’analyser l’activité et de visualiser les éventuels problèmes.

L’interprétation

Des indicateurs c’est bien, à condition de savoir les interpréter. C’est là que les fonctions d’évaluation vont être utiles pour juger si la situation est normale ou, au contraire, inquiétante via des règles métier (ex. des seuils et niveaux d’alertes).

Politique d’alerte

Il s’agit d’utiliser des techniques de type Machine Learning pour déterminer automatiquement les seuils d’alertes, leur niveau et les canaux mais aussi les éventuelles corrélations entre indicateurs.

Prévision et anticipation

Lorsque ces modèles sont pertinents et bien interprétés, ils peuvent aussi aider à anticiper pour prendre les mesures avant même l’arrivée des problèmes.

Recommandation

Certaines solutions vont jusqu’à nourrir une base de données de connaissances afin que l’utilisateur sache comment réagir face à telle ou telle situation.

Les outils de monitoring du DevOps comme moyen de partage

Les outils de monitoring s’appuient sur des datawarehouses pour stocker, historiser, contextualiser et analyser de gros volumes de données. Ils restituent aisément les données et offrent une vue globale sur l’ensemble de l’IT et sur les services rendus. La vision du SI est unifiée et centralisée permettant ainsi de voir l’activité des différentes ressources.

Cela permet également de fournir aux directions métier des indicateurs qui leur sont propres afin d’alimenter le processus de l’amélioration continue, principe fondamental des processus ITIL et DevOps.

Attention toutefois à :

  • Ne pas multiplier les outils
  • Opter pour des solutions simples (configuration, exploitation)
  • Estimer et tenter de limiter les coûts (Mode SaaS ? Compétences à intégrer ? Solutions Open Source ?…)
  • Progresser par étapes

Exemple d’outils de Monitoring

  • Splunk : plateforme logicielle permettant d’analyser, de traiter et de transformer en informations exploitables les données collectées à partir de sites web, d’applications, de capteurs, et d’appareils en tout genre. Les entreprises disposent d’un tableau de bord visuel pour détecter d’où viennent les éventuels problèmes techniques de leurs machines.
  • Azure application insight : fonctionnalité d’Azure Monitor, App Insight est un service extensible de gestion des performances des applications (APM) pour superviser vos applications en temps réel. Ce service détecte automatiquement les anomalies de performances et intègre de puissants outils analytiques conçus pour vous aider à diagnostiquer les problèmes et à comprendre l’usage que les utilisateurs font de votre application.
  • ELK, ou Suite Elastic (nouveau nom) :souvent utilisé pour exploiter les logs en provenance de multiples sources, composé de Elasticsearch (système de stockage, de recherche et d’analyse), Logstash (moteur d’ETL qui renvoie les données transformées vers Elasticsearch) et Kibana : outil de visualisation des données Elasticsearch sous forme de tableaux et de graphes
  • Prometheus et Grafana : souvent utilisés pour superviser les API
  • Possibilité aussi d’exploiter un outil comme PowerBI (même si ce n’est pas sa vocation première).

Ne ratez plus aucunes actualités avec la newsletter mensuelle de SoftFluent