Published Date: March 1, 2020
La définition de l’observabilité (ou observability en anglais) est la capacité à mesurer les états internes d’un système en examinant ce qu’il produit. Un système est considéré comme « observable » si son état actuel peut être estimé uniquement en utilisant les informations de sortie, à savoir les données des capteurs. Même si le terme d’observabilité informatique est à la mode depuis peu, il est né il y a des décennies de la théorie du contrôle (qui consiste à décrire et à comprendre les systèmes d’autorégulation). Toutefois, il est de plus en plus appliqué à l’amélioration des performances des systèmes informatiques distribués. Dans ce contexte, l’observabilité utilise trois types de données de télémétrie (les métriques, les logs et les traces) pour offrir une visibilité approfondie sur les systèmes distribués, et permettre aux équipes d’identifier la cause profonde d’une multitude de problèmes et d’améliorer les performances du système.
Au cours des dernières années, les entreprises ont rapidement adopté des services d’infrastructure cloud-native. Dans ces systèmes distribués, le traçage d’un événement jusqu’à son origine nécessite l’exécution de milliers de processus dans le cloud, sur site ou les deux. Mais les techniques et les outils de supervision conventionnels peinent à suivre les nombreuses voies de communication et interdépendances dans ces architectures distribuées. L’observabilité, ou observability, permet alors aux équipes de superviser plus efficacement les systèmes modernes et les aide à trouver et à connecter les effets dans une chaîne complexe pour remonter jusqu’à leur cause. De plus, elle offre aux administrateurs système, aux analystes des opérations IT et aux développeurs une visibilité sur l’ensemble de leur architecture.
Dans cet article, nous allons examiner les grands principes de l’observabilité informatique de plus près : ce qu’elle est, comment la mettre en œuvre et les avantages que votre entreprise peut en attendre.
La supervision et l’observabilité sont des concepts distincts qui dépendent l’un de l’autre. On effectue une supervision pour accroître l’observabilité du système. En informatique, l’observabilité est une propriété de ce système, comme sa fonctionnalité ou sa testabilité.
Plus précisément, la supervision consiste à observer les performances d’un système dans le temps. Les outils de supervision collectent et analysent les données système et les traduisent en informations exploitables. Fondamentalement, les technologies de supervision, notamment celle des performances des applications, peuvent vous indiquer si un système est en service ou hors service, ou si les performances des applications sont dégradées. L’agrégation et la corrélation des données de supervision peuvent également vous aider à faire des inférences plus importantes à propos du système. Le temps de chargement, par exemple, peut donner aux développeurs des informations sur l’expérience utilisateur d’un site web ou d’une application.
En revanche, en définition, l’observability (ou observabilité) est une mesure de la manière dont les états internes du système peuvent être déduits de la connaissance de ce qu’il renvoie. Elle exploite les données et les informations obtenues par la supervision pour fournir une compréhension globale de votre système, notamment de son état et de ses performances. En informatique, l’observabilité de votre système dépend donc en partie de la manière dont vos métriques de supervision peuvent interpréter les indicateurs de performance de votre système.
Autre différence importante, la supervision exige que vous sachiez à l’avance ce qu’il faut superviser. L’observability de vos data vous permet de déterminer les indicateurs importants en observant les performances du système au fil du temps et en posant des questions pertinentes à son sujet.
L’observabilité est essentielle car elle vous donne un contrôle accru sur les systèmes complexes. Les systèmes simples ont moins de « pièces mobiles », ce qui les rend plus faciles à gérer. La supervision de l’état du CPU, de la mémoire, des bases de données et du réseau suffit généralement à comprendre ces systèmes et à appliquer la solution appropriée à un problème.
Les systèmes distribués ont un nombre beaucoup plus élevé de pièces interconnectées, et les défaillances qui peuvent se produire sont également plus nombreuses et variées. En outre, les systèmes distribués sont constamment mis à jour et chaque modification peut créer un nouveau type de défaillance. Dans un environnement distribué, comprendre un problème en cours représente un défi considérable, en grande partie parce qu’il produit plus d’« inconnues inconnues » que des systèmes plus simples. Parce que la supervision exige des « inconnues connues », elle ne parvient souvent pas à résoudre correctement les problèmes de ces environnements complexes.
En informatique, l’observabilité est mieux adaptée à l’imprévisibilité des systèmes distribués, principalement parce qu’elle vous permet de poser des questions sur le comportement de votre système au fur et à mesure que les problèmes surviennent. « Pourquoi est-ce que X ne fonctionne plus ? » ou « Qu’est-ce qui provoque de la latence en ce moment ? ». Voilà le type de questions auxquelles la mise en œuvre d’une solution d’observabilité peut répondre.
Dans les environnements de conteneurs et de microservices, l’observabilité expose l’état des applications en production pour permettre aux développeurs de mieux identifier et résoudre les problèmes de performance.
Les services de conteneur (tels que Docker, Kubernetes et autres) et les microservices répondent aux risques accrus d’indisponibilité et autres liés aux logiciels monolithiques, dans lesquels toute modification apportée à la base de code affecte l’ensemble de l’application et ses dépendances. Les conteneurs et les microservices décomposent les applications en services indépendants, ce qui permet aux développeurs de modifier et de redéployer un service particulier plutôt que l’ensemble de l’application.
Une architecture en conteneurs présente toutefois de nouveaux défis. Les microservices interdépendants sont généralement répartis sur plusieurs hôtes et, lorsque l’infrastructure grandit, le nombre de microservices en production suit la même tendance. Il est donc difficile pour les développeurs de savoir ce qui est actuellement exécuté en production, ce qui entraîne des cycles de livraison plus longs, des temps d’arrêt et d’autres problèmes.
Par définition, l’observability (ou observabilité) répond à ces défis en offrant une visibilité sur les systèmes distribués, aidant ainsi les développeurs à mieux comprendre les performances et la disponibilité d’une application. En cas d'interruption de service, elle offre le contrôle nécessaire pour localiser et déboguer ou résoudre rapidement le problème.
Quelles sont les principales classes de données utilisées dans l’observabilité, et comment sont-elles exploitées ?
Les principales classes de données utilisées dans l’observabilité sont les logs, les métriques et les traces. Ensemble, ils forment ce qu’on appelle souvent « les trois piliers de l’observabilité ».
Logs : un log est un enregistrement texte d’un événement qui s’est produit à un moment donné, accompagné d’un horodatage indiquant quand il s’est produit et de données contexte. Les logs existent sous trois formes : texte brut, structurés et binaires. Le texte brut est le plus courant, mais les logs structurés, qui incluent des données et des métadonnées supplémentaires et sont plus faciles à interroger, deviennent de plus en plus populaires. Dans le cadre de votre système de data observability (observabilité des données), bien souvent, les logs sont aussi le premier endroit où regarder lorsqu’un système ne fonctionne pas comme prévu.
Métriques : une métrique est une valeur numérique mesurée sur un intervalle de temps et qui inclut des attributs spécifiques : horodatage, nom, KPI et valeur, entre autres. Contrairement aux logs, les métriques sont structurées par défaut, ce qui facilite les requêtes et l’optimisation du stockage, permettant de les conserver pendant des périodes plus longues.
Traces : une trace représente le trajet de bout en bout d’une requête à travers un système distribué. Lorsqu’une requête se déplace dans le système hôte, chaque opération effectuée sur celui-ci, appelée « unité logique », est encodée avec des données importantes concernant le microservice qui réalise cette opération. En visualisant les traces, chacune comprenant une ou plusieurs unités logiques, vous pouvez suivre son parcours à travers un système distribué et identifier la cause d’un goulot d’étranglement ou d’une interruption.
L’utilisation de ces classes de données n’est pas garante d’observabilité, en particulier si vous les exploitez indépendamment les unes des autres ou si vous utilisez des outils différents pour chaque fonction. Au contraire, vous réussirez votre approche de la data observability en intégrant vos logs, métriques et traces au sein d’une solution unique. Ce faisant, vous ne saurez plus seulement à quel moment les problèmes se produisent : vous pourrez aussi rapidement passer à l’étape consistant à en comprendre la raison.
Pour atteindre l’observabilité, vous devez équiper vos systèmes et applications d’un outillage adéquat afin de recueillir les données de télémétrie appropriées. Vous pouvez créer un système observable en concevant vos propres outils, en utilisant un logiciel open source ou en achetant une solution d’observabilité commerciale. En général, quatre éléments sont impliqués dans la mise en œuvre de l’observabilité :
- Instrumentation : ce sont les outils de mesure qui collectent les données de télémétrie d’un conteneur, d’un service, d’une application, d’un hôte et de tout autre composant de votre système, offrant une visibilité sur l’ensemble de votre infrastructure.
- Corrélation des données : les données de télémétrie collectées à partir de votre système sont traitées et corrélées, ce qui apporte un contexte et permet une sélection automatique ou personnalisée des données pour les visualisations de séries chronologiques.
- Réponse aux incidents : ces technologies d’automatisation sont destinées à transmettre des données sur les interruptions aux personnes et aux équipes concernées en fonction des horaires d’astreinte et des compétences techniques.
- AIOps : des modèles de machine learning sont utilisés pour regrouper, corréler et hiérarchiser automatiquement les données d’incident, ce qui vous permet de filtrer les alertes inutiles, de détecter les problèmes pouvant avoir un impact sur le système et d’accélérer la réponse aux incidents lorsqu’ils surviennent.
Que vous choisissiez de construire vos propres solutions ou d’utiliser des solutions open source ou commerciales, tous les outils informatiques d’observabilité doivent :
S’intégrer à vos outils actuels : si vos outils d’observabilité ne fonctionnent pas avec votre pile actuelle, vos efforts d’observabilité sont voués à l’échec. Assurez-vous qu’ils prennent en charge les structures et les langages de votre environnement, de votre plateforme de conteneur, de votre plateforme de messagerie et de tout autre logiciel stratégique.
Être faciles à utiliser : si vos outils d’observabilité sont difficiles à prendre en main ou à utiliser, ils ne seront pas intégrés aux flux de travail, et votre initiative d’observabilité ne pourra pas décoller.
Fournir des données en temps réel vos outils informatiques d’observabilité doivent fournir des informations pertinentes via des tableaux de bord, des rapports et des requêtes en temps réel pour permettre aux équipes de comprendre un problème, son impact et la façon de le résoudre.
Prendre en charge les techniques modernes de gestion des événements : des outils d’observabilité efficaces doivent être capables de recueillir toutes les informations pertinentes à partir de vos piles, technologies et environnements d’exploitation, de distinguer les signaux utiles du bruit et d’ajouter suffisamment de contexte pour que les équipes puissent y répondre.
Visualiser les données agrégées : les outils d’observabilité doivent présenter les informations dans des formats faciles à interpréter, comme des tableaux de bord, des résumés interactifs et autres types de visualisations.
Fournir du contexte : lorsqu’un incident se produit, vos outils doivent fournir suffisamment de contexte pour vous permettre de comprendre comment les performances de votre système ont changé au fil du temps, si cette évolution est liée à d’autres changements dans le système, quelle est la portée du problème et toute interdépendance du service ou du composant affecté. Sans le niveau de contexte que l’observabilité est capable de fournir, la réponse aux incidents est handicapée.
Exploiter le machine learning : vos outils doivent inclure des modèles de machine learning qui automatisent le traitement et la sélection des données, afin que vous puissiez détecter et prendre en charge plus rapidement les anomalies et autres incidents de sécurité.
Apporter de la valeur commerciale : pensez bien à évaluer votre outil d’observabilité par rapport aux indicateurs importants pour votre entreprise, tels que la vitesse de déploiement, la stabilité du système et l’expérience client.
En informatique, l’observabilité permet aux développeurs DevOps de comprendre l’état interne d’une application à tout moment et d’accéder à des informations plus précises sur les défaillances du système dans les environnements de production distribués. Quelques avantages clés :
Une meilleure visibilité : en raison de l’expansion des systèmes distribués, il est souvent difficile pour les développeurs de savoir quels services sont en production, si les performances des applications sont solides, qui est responsable de quel service ou à quoi ressemblait le système avant le déploiement le plus récent. La mise en place d’un processus d’observabilité apporte une visibilité en temps réel sur les systèmes de production, et cet atout contribue à éliminer ces obstacles.
De meilleures alertes : l’observabilité permet aux développeurs de détecter et de résoudre les problèmes plus rapidement, en offrant une visibilité plus approfondie qui les aide à déterminer rapidement ce qui a changé dans le système, à déboguer ou à résoudre les problèmes et, le cas échéant, à déterminer quels problèmes ces changements ont entraînés.
Un meilleur workflow : les outils d’observabilité permettent aux développeurs de voir le parcours de bout en bout d’une requête, ainsi que des données contextualisées pertinentes sur un problème spécifique, ce qui a pour effet de rationaliser le processus d’investigation et de débogage d’une application, et d’en optimiser les performances.
Moins de temps passé en réunion : traditionnellement, les développeurs devaient tracer les informations par le biais d’entreprises et d’applications tierces pour savoir qui était responsable d’un service particulier ou à quoi ressemblait le système quelques jours ou semaines avant le déploiement le plus récent. Grâce à un système de data observability efficace, cette information est facile d’accès.
Accroître la vélocité des développeurs : ll’observabilité rend la supervision et le dépannage plus efficaces en éliminant le principal point de friction pour les développeurs. Le résultat : la rapidité de livraison augmente et le personnel DevOps dispose de davantage de temps pour proposer des idées innovantes, et répondre aux besoins de l’entreprise et de ses clients.
Comme dans le cas du DevOps, l’observabilité informatique profite aux ingénieurs logiciels en leur apportant des informations sur l’ensemble de l’infrastructure et en leur donnant à voir ses modifications en cas de problème, lors du déploiement de nouveaux logiciels ou lors d’un changement de dimension.
L’observabilité informatique est un atout pour les développeurs et les ingénieurs logiciels en raison de la visibilité qu’elle apporte sur l’ensemble de leur architecture, autant sur les applications et services tiers que sur les leurs. Cela leur permet non seulement de résoudre plus facilement les problèmes et même de les prévenir, mais aussi de mieux comprendre les performances du système et la manière dont elles améliorent l’expérience pour le client. Les développeurs et les ingénieurs ont alors plus de temps à consacrer à des initiatives stratégiques qui profitent à toute l’entreprise.
Les équipes en profitent également parce que la mise en place d’un système d’observability, par définition, offre une vision commune de l’environnement et une compréhension plus complète de son architecture, de son état de santé et de ses performances au fil du temps. L’observabilité permet aux développeurs, opérateurs, ingénieurs, analystes, chefs de projet et autres membres de l’équipe d’accéder aux mêmes informations sur les services, les clients et bien d’autres aspects du système. En outre, l’observabilité améliore la précision des analyses post-incident, car toutes les parties peuvent examiner des enregistrements documentés du comportement du système en temps réel au lieu de reconstituer les événements à partir de sources disparates et cloisonnées. Les data issues de votre observability, plutôt que les opinions, aideront vos équipes à comprendre pourquoi les incidents se sont produits, pour mieux prévenir et gérer les incidents futurs.
C’est toutefois l’entreprise qui pourrait en tirer le plus de bénéfices. L’observabilité vous permet d’apporter des modifications à vos applications et services sans compromettre la stabilité de vos systèmes en vous donnant les outils pour comprendre ce qui fonctionne ou non, identifier les problèmes qui se posent et les réduire ou les résoudre rapidement. La combinaison de nouvelles fonctionnalités et d’une réduction des temps d’arrêt se traduit par des clients plus satisfaits et des revenus plus solides.
Bien plus qu’un simple mot à la mode, l’observabilité est une approche stratégique et utile pour comprendre l’état de l’ensemble de votre infrastructure. Le cloud, les conteneurs, les microservices et autres nouvelles technologies ont rendu les systèmes plus complexes qu’ils ne l’ont jamais été. Bien que le résultat net de ces outils soit positif, le dépannage et la gestion de ces systèmes sont ardus. L’interconnexion accrue des éléments entraîne une diversification des problèmes qui, lorsqu’ils se produisent, sont plus difficiles à détecter et à résoudre.
Heureusement, ces systèmes distribués produisent une multitude de données de télémétrie qui permettent de mieux comprendre leurs performances, à condition de pouvoir les exploiter. Des outils d’observabilité efficaces fournissent toute l’instrumentation et la puissance analytique dont vous avez besoin pour capturer et contextualiser les produits de votre système, et générer les informations nécessaires pour prospérer dans la nouvelle ère des systèmes distribués.
Quelle est la différence entre la supervision et l’observabilité ?
Comprendre l’importance de l’observabilité
Qu’est-ce que l’observabilité dans les conteneurs et les microservices ?
Comment mettre en œuvre l’observabilité ?
Quels sont les critères pour choisir de bons outils d’observabilité ?
Quels sont les avantages de l’observabilité pour les DevOps ?
Quels sont les avantages de l’observabilité pour l’ingénierie logicielle ?
À qui l’observabilité rend-elle service ?
Pour résumer : Obtenez des informations sur votre infrastructure
Les 5 pratiques fondamentales du DevOps
Qu’est-ce qui distingue les équipes DevOps performantes de celles qui échouent ? Ces 5 pratiques fondamentales.