Qu’est-ce que l’observabilité des applications ?

Pour être compétitives, les entreprises n’ont pas d’autre choix que de prendre le virage digital et c’est une véritable course contre la montre pour être le 1er sur le marché, être le plus performant et le rester.

La pression du ‘Time to Market’ nécessite un environnement capable de favoriser des releases fiables, de meilleure qualité, livrées plus fréquemment et plus rapidement.

Cette pression pèse immanquablement sur les équipes pour qu’elles innovent et adoptent les technologies modernes : pratiques DevOps, architectures Cloud, Microservices, Serverless, infrastructure as a code, SRE (Site Reliability Engineering)…

Les gains sont réels en termes de disponibilité, performance et qualité pour maitriser l’expérience utilisateur, mais ces approches s’accompagnent d’une complexité accrue des projets.

Avec l’accélération des cycles de développement et l’augmentation des dépendances à mesure que les applications grandissent, le test et la surveillance logiciels sont essentiels pour garantir la qualité du code et du service fourni

Dans une application de microservices, le suivi du bon déroulement des opérations doit se faire dans plusieurs dizaines, voire plusieurs centaines de services

selon Ange Guyader, Team Leader et expert Microservices

Pour mieux appréhender la complexité des architectures et la fréquence accrue des déploiements logiciels, l’observabilité entre en jeu.

L’observabilité collecte des données de télémétrie de l’infrastructure, des machines virtuelles et des containers, des clusters Kubernetes, du middleware et du logiciel, dans le cloud ou non, en mode PaaS ou non, pour faciliter la supervision et la compréhension. Elle va aussi collecter la télémétrie à partir du browser ou de l’application pour appréhender l’expérience utilisateur, incluant des événements et des attributs métier pour mieux comprendre les liens entre performance applicative et besoin métier.

Différence avec le monitoring

L’observabilité et le monitoring se complètent, chacun servant un objectif différent.

Alors que le monitoring est passif avec des capteurs sur le logiciel en fonctionnement pour signaler les éventuels problèmes lorsqu’ils se produisent, l’observabilité est active et vous permet de comprendre pourquoi quelque chose ne se produit pas de manière attendue. Le monitoring est un sous-ensemble et une action clé pour l’observabilité.

L’observabilité s’appuie sur la collecte, la visualisation et l’analyse exhaustive de la télémétrie d’un système et requiert l’intégration de trois composantes essentielles : la collecte exhaustive et granulaire des données, la corrélation et la contextualisation des données, ainsi que la conversion de ces données en informations actionnables.

 

Le rôle de l’observabilité dans la qualité logicielle

Un logiciel de bonne qualité est un logiciel qui fonctionne, bien sûr, mais pas seulement, il doit aussi répondre aux attentes, être facile d’utilisation, performant, être capable d’évoluer en fonction des besoins, et aussi bien évidemment, être maintenable à moindre coûts.

Au-delà des signaux ou alertes, un environnement propice à la gestion de la qualité se construit dès la conception du logiciel. Un code bien conçu sera plus facilement compréhensible, réutilisable, maintenable et évolutif. En conséquence les anomalies dues aux incompréhensions ou à la complexité seront réduites.

Un logiciel doit donc fournir des indicateurs clés, des traces connectées, et des résultats métiers que les équipes DevOps et opérationnelles, les ingénieurs en fiabilité de site (SRE) et les équipes métiers peuvent exploiter.

C’est cet apport supplémentaire qui permet aux équipes de réagir plus rapidement et plus efficacement dans les situations d’urgence ou d’améliorer le suivi à long terme de la performance de leurs applications et donc de la qualité logicielle.

 

Les grands principes de l’observabilité

L’observabilité se compose de 3 piliers

Journaux

Les journaux sont des lignes de texte structurées et non structurées qu’un système produit lors de l’exécution du code. Un journal enregistre le ou les événements qui se produisent dans une application. Les journaux aident à découvrir les comportements imprévisibles des composants de l’architecture microservices.

Ils sont faciles à générer et à instrumenter. La plupart des frameworks, bibliothèques et langages d’application incluent cette fonctionnalité. Pratiquement tous les composants d’un système distribué génèrent des journaux d’actions et d’événements à tout moment.

Les fichiers journaux fournissent des détails complets sur le système, comme une panne, et l’heure précise à laquelle l’erreur s’est produite. En analysant les journaux, vous pouvez dépanner votre code et identifier où et pourquoi l’erreur s’est produite. Les journaux sont également utiles pour résoudre les incidents de sécurité dans les équilibres de charge, les caches et les bases de données.

Il est important de prévoir la journalisation des événements clés qui peuvent se produire au sein d’un composant que vous développez.

Métriques

Les métriques sont des valeurs numériques pour observer le système en temps réel ou pour analyser les tendances à différents niveaux de l’architecture, de l’infrastructure physique à l’application, notamment :

  • Mesures de niveau nœud, comprenant l’utilisation de l’UC, de la mémoire, du réseau, du disque et du système de fichiers. Elles permettent de comprendre l’allocation des ressources pour chacun des nœuds et de corriger les valeurs hors norme.
  • Métriques du conteneur grâce à Azure monitor par exemple. Ces données d’utilisation des ressources vous permettent de déterminer les meilleurs paramétrages de ressources pour vos groupes de conteneurs
  • Métriques de l’application qui permettent de comprendre le comportement d’un service. Il s’agit par exemple du nombre de requêtes HTTP entrantes en file d’attente, de la latence des requêtes ou de la longueur de la file d’attente de messages ou toutes mesures personnalisées spécifiques au domaine,
  • Métriques de service dépendantes tels que les services PaaS gérés ou les services SaaS lorsqu’ils fournissent des mesures.

Vous pouvez collecter des mesures sur la disponibilité du système, le temps de réponse, le nombre de requêtes par seconde et la puissance de traitement ou la mémoire qu’une application utilise. En règle générale, les ingénieurs SRE et opérationnels utilisent des métriques pour déclencher des alertes chaque fois qu’une valeur dépasse un certain seuil. Par exemple, si vous avez un pic brusque de trafic, les métriques vous aident à comprendre la cause du pic : une configuration de service incorrecte, un comportement malveillant ou des problèmes avec d’autres parties de votre système

selon Ange Guyader, Team Leader, expert Microservices

Certains outils peuvent faciliter l’utilisation de métriques comme :

  • Des bibliothèques logicielles Metrics : elles permettent d’envoyer les métriques d’un service. Elles sont disponibles dans plusieurs langages de programmation.
  • Graphite : il permet d’envoyer des métriques d’un serveur ou d’un service en temps réel. Il permet aussi de monitorer les métriques avec des graphiques

Traces

Bien que les journaux et les mesures soient pertinents pour comprendre le comportement et les performances de chaque système, ils fournissent rarement des informations utiles pour comprendre la durée de vie d’une demande dans un système distribué. Le traçage permet de comprendre le parcours complet d’une demande ou d’une action sur plusieurs systèmes.

Les traces permettent d’observer les applications conteneurisées, les architectures Serverless ou microservices et de

  • surveiller la santé globale de l’application,
  • identifier les goulots d’étranglement ou le code inefficace d’un service
  • résoudre les problèmes affectant la performance plus rapidement
  • hiérarchiser les problématiques à plus haute valeur ajoutée
  • optimiser les améliorations et l’expérience utilisateur

Les traces sont un pilier essentiel de l’observabilité car elles fournissent un contexte pour les autres composants de l’observabilité que sont les métriques et les journaux.

Bien que les journaux, les traces et les mesures servent chacun leur propre objectif, ils fonctionnent tous ensemble pour vous aider à mieux comprendre les performances et le comportement des systèmes distribués.

Vous avez le choix dans la palette d’outils open source : Prometheus, Telegraf, StatsD, DropWizard ou Micrometer pour les métriques, Jaeger ou Zipkin pour les traces, Fluentd, Fluent Bit ou Logstash pour la collecte, le filtrage et l’export des logs pour assurer une collecte exhaustive et une interopérabilité entre les outils.

En fonction des spécificités de votre métier, vous pouvez aussi programmer votre propre plateforme d’observabilité. La ‘programmabilité’ offre plus de liberté dans la combinaison de données, le traitement et l’interactivité pour répondre au plus près au besoin.

Comme l’explique Ange Guyader, Team Leader et expert Microservices

Sélectionner la bonne plateforme d’observabilité et l’intégrer aux processus ne suffit pas, il faut aussi l’inscrire dans la culture de votre entreprise à tous les niveaux (technique, processus et humain) pour tirer le meilleur parti des outils d’observation.

Comme pour les journaux, les bonnes traces doivent être implémentées dans les composants réalisés spécifiquement pour vos applications.

 

Les bénéfices de l’observabilité

Optimisation de la collaboration

Dans un contexte de compétitivité exacerbée, de rythme effréné des évolutions technologiques et d’attentes croissantes des clients, l’organisation en silo s’avère totalement inadaptée. Il faut livrer rapidement les développements pour que le client puisse en bénéficier le plus vite possible.

Grâce à l’observabilité, toutes les équipes (dev, prod, sécurité, métier) peuvent interagir sur des données partagées.

La compréhension des données

L’observabilité et l’instrumentation associée doivent permettre une visibilité sur l’ensemble du système informatique avec l’accessibilité de toutes les données (événement, logs, traces) en temps réel permettant la meilleure compréhension par toutes les parties prenantes.

Mettre le doigt sur les problèmes

Dans la mesure où toutes les données collectées peuvent être analysées, cela procure une visibilité qui permet de déceler tous les problèmes, y compris ceux complètement insoupçonnés et par conséquent, de les résoudre voire parfois de les anticiper.

Donner de l’assurance et de l’audace

Vous pouvez pousser du code, voir immédiatement ses effets, comprendre les éventuels problèmes réagir avant même que l’utilisateur ne s’en rende compte.

Dans la mesure où vous comprenez rapidement et efficacement vos systèmes complexes, non seulement vous ne craignez pas le changement mais vous pouvez même être moteur et force de proposition pour gagner en innovation.

Prévenir les problèmes

Maintenant que vous comprenez pourquoi les incidents critiques se sont produits, vous pouvez les empêchez proactivement de se reproduire. Résultat : amélioration de la qualité, gain de temps et plus de temps pour les tâches à plus haute valeur ajoutée et donc pour l’innovation.

Plus de sérénité

L’observabilité contribue à créer un climat de confiance avec une application robuste, des services maitrisés et des alertes priorisées pour que vous ne soyez inquiété qu’en cas de très gros problèmes.

L’observabilité est une boucle sans fin

Devenir une organisation apprenante, toujours à la recherche de l’amélioration, pour offrir plus de valeur aux clients est un travail de longue haleine. Avec une équipe qui s’inscrit dans un processus d’apprentissage et d’amélioration continue de l’ensemble des mécanismes internes de l’entreprise, l’observabilité n’est pas une fin en soi, c’est un voyage sans limite vers le progrès continu.

C’est une machine de guerre !

Elle vous permet de vous réinventer, de dynamiser les contributions de chacun et d’atteindre les objectifs. Plus vous améliorez, plus vous avez envie d’améliorer, c’est un véritable cercle vertueux.

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