Bienvenue dans l'âge de l'Observabilité

Alors que le monitoring se limite à informer simplement quand une anomalie se produit dans un système d'information, l'observabilité permet elle de comprendre pourquoi elle survient.

De nombreuses technologies et pratiques récentes permettent aux équipes logicielles de déployer leur code en production beaucoup plus fréquemment et efficacement :  microservices, cloud, containers, serverless, DevOps, SRE, infrastructure-as-code, etc. Les gains sont réels, mais ces approches introduisent aussi un degré supérieur de complexité, de volatilité et de fragmentation, en particulier lorsqu'il s'agit de garantir la disponibilité, la qualité, la performance et l'expérience utilisateur.

L'observabilité va bien au-delà du monitoring

Dans le cycle logiciel, l’observabilité s’appuie sur la collecte, la visualisation et l’analyse exhaustive de la télémétrie d’un système.  Alors que le monitoring se limite à informer simplement de quand une anomalie se produit, l’observabilité permet de comprendre pourquoi cette anomalie survient. 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. Pour ce faire, l’observabilité requiert l’intégration de trois composantes essentielles : la collecte exhaustive et granulaire des données de télémétrie, la corrélation et la contextualisation des données, la visualisation et l’actionnabilité des données. 

Instrumentation complète et ouverte pour une télémétrie exhaustive et granulaire

L’observabilité moderne doit répondre à la complexité des architectures en microservices, la fréquence accrue des déploiements logicielles et la volatilité des infrastructures cloud en containers. Pour cela, l’observabilité fait appel à une instrumentation exhaustive et ouverte de l’ensemble de l’architecture ; elle va collecter la 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. Elle va aussi collecter la télémétrie du browser ou de l’application mobile pour caractériser l’expérience utilisateur, et même des événements et des attributs métier et business souhaités par les équipes pour comprendre les liens entre performance applicative et business. 

Sur cet ensemble exhaustif des entités du système, l’observabilité moderne assure la collecte de quatre grandes classes de télémétrie complémentaires : métriques, événements, logs et traces (M.E.L.T.). Elle assure une collecte exhaustive et ouverte en complétant la télémétrie des agents propriétaires optimisés avec celle d’outils open source, dont 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. Elle garantit l'interopérabilité de tous les types de donnée et de télémétrie, quelle qu'en soit la source, en créant automatiquement des entités et connexions entre elles. 

Connexion, contextualisation et curation

Les données de télémétrie doivent être analysées en temps réel pour construire un modèle des entités qui les génèrent et établir des connexions logiques entre ces entités, en utilisant les métadonnées pour établir des corrélations et des dimensions d’analyses. Cela permet de visualiser et de comprendre un système complexe et dynamique. Par exemple, en affichant une cartographie des appels entre microservices, ou encore une visualisation d’un cluster Kubernetes incluant les nœuds, pods, containers et applications. Les métadonnées sont principalement générées automatiquement par les agents de télémétrie, mais certaines sont insérées par les équipes pour enrichir le contexte ou la dimensionnalité, par exemple le nom d’une application, sa version, sa zone de déploiement, ou encore des attributs métiers (par exemple valeur panier, classe de fidélité, nomenclature produit, localisation de la transaction).

La curation des données est réalisée au travers de visualisations et des parcours utilisateurs pré-établis et optimisés, fruits de l’expérience et du savoir-faire accumulés auprès des meilleurs utilisateurs et experts. Elle aide à faire ressortir de façon évidente les signaux les plus importants de santé et de performance. La curation assure au SRE ou au développeur DevOps une expérience simple et efficace qui permet d’identifier, d’isoler et de résoudre les problèmes en parvenant beaucoup plus rapidement au pourquoi qui se cache derrière les données. 

La centralisation sur une plateforme de télémétrie permet aussi d’appliquer des techniques d’intelligence artificielle à ces très grands volumes de données. L’intelligence artificielle est capable de détecter des profils de comportement, des anomalies et des corrélations qui échapperaient à des opérateurs humains. Ces techniques permettent la détection automatique et précoce des incidents, leur corrélation entre eux et la détermination de leur cause probable, ainsi que l’enrichissement du diagnostic avec des informations de contexte et des recommandations. Ce champ relativement récent, nommé AIOps par Gartner, permet d'améliorer fortement les capacités d’anticipation et de résolution des équipes DevOps, et aussi de réduire sensiblement la fatigue liée au bruit généré par les alertes. 

Visibilité, actionnabilité et programmabilité

La plupart des solutions d’observabilité permettent aussi d’enrichir la visibilité sur les données et de les rendre actionnables au travers des alertes et des tableaux de bord. Les alertes, définies par les équipes ou générées automatiquement par l'intelligence artificielle, notifient les équipes d’un problème détecté, sur les outils de leur choix, comme Slack ou PagerDuty.

Les tableaux de bord sont des outils flexibles et puissants, regroupant des visualisations paramétrables ad hoc, s’appuyant sur un langage d’interrogation et d’analyse dimensionnelle. Ils autorisent le rapprochement des données de télémétrie, métier et business, offrant ainsi un suivi précis en temps réel de la performance du système et du business. Ces tableaux de bord sont partageables et assurent une collaboration avancée et personnalisée, permettant aux équipes d’anticiper les problèmes et d'optimiser la performance.

Néanmoins, compte tenu de l’immense diversité des métiers, des processus et des indicateurs spécifiques à chaque entreprise, il existe un besoin réel d'aller au-delà des tableaux de bord et d’autoriser les entreprises à construire de véritables applications. La programmabilité d’une plateforme d’observabilité offre à ses utilisateurs la liberté de construire leurs propres représentations et combinaisons des données, et d’introduire d’autres formes plus sophistiquées d’interactivité et de traitement. En collant au plus près à ses besoins spécifiques, la programmabilité permet à une organisation d’optimiser ses investissements logiciels et d’en mesurer l’efficacité en temps réel, et donc de prendre des décisions objectives qui maximisent ses performances. 

Bienvenue dans l’âge de l’observabilité

La transformation digitale augmente considérablement les attentes qui pèsent sur les équipes pour qu'elles innovent plus vite avec les pratiques DevOps, adoptent les infrastructure et technologies logicielles modernes, et bien sûr garantissent une performance et une expérience utilisateur parfaitement maîtrisées. L’observabilité fait désormais partie des technologies nécessaires pour atteindre et maintenir cette vélocité et cette performance optimales, pour se différencier de la compétition et répondre aux attentes des clients et des usagers.