Vous n’avez pas pu assister à Transform 2022 ? Découvrez dès maintenant toutes les sessions du sommet dans notre bibliothèque à la demande ! Regardez ici.
L’observabilité est essentielle au succès de toute application. Cependant, définir l’observabilité est délicat. Certaines personnes le confondent avec la surveillance ou la journalisation, et d’autres pensent qu’il s’agit essentiellement d’analyse, qui n’est qu’une partie de l’observabilité.
L’observabilité, lorsqu’elle est effectuée correctement, vous donne un aperçu incroyable des parties internes profondes de votre système et vous permet de poser des questions complexes axées sur l’amélioration, telles que :
- Où est votre système fragile?
- Qu’est-ce que tu fais bien ? Qu’est-ce que tu fais mal ?
- Quelle devrait être la prochaine étape de votre feuille de route produit ?
- Un code doit-il être retravaillé/réécrit ?
- Quels sont vos points communs d’échec ?
Toutes ces questions sont importantes à poser et peuvent être résolues avec des informations basées sur les données créées en mettant en œuvre de bonnes pratiques d’observabilité.
Dans cet article, vous apprendrez ce qu’est l’observabilité, pourquoi elle est importante et quels types de problèmes l’observabilité aide à résoudre. Vous découvrirez également certaines des meilleures pratiques d’observabilité et comment les mettre en œuvre afin que vous puissiez commencer à améliorer votre application dès aujourd’hui.
Qu’est-ce que l’observabilité ?
L’observabilité est la mesure dans laquelle vous savez ce qui se passe à l’intérieur de votre système logiciel sans écrire de nouveau code.
Si on vous demandait lequel de vos microservices rencontre le plus d’erreurs, quelle est la partie la moins performante de votre système ou quelle est l’erreur frontale la plus courante rencontrée par vos clients, seriez-vous en mesure de répondre à ces questions ? Si votre équipe doit partir et écrire du code pour y répondre, il est juste de dire que votre système n’est pas observable. Cela signifie que votre système devient constamment un jeu de taupe chaque fois que de nouvelles questions sont posées.
Pourquoi l’observabilité est-elle importante ?
Une bonne observabilité vous permet d’obtenir des résultats commerciaux positifs, basés sur les données. Savoir sur quoi travailler, quoi améliorer et quoi ignorer peut propulser votre entreprise de succès en succès et vous faire gagner du temps sur des choses dont vos clients ne se soucient pas ou ne sont même pas de vrais problèmes, comme proposer une langue sur votre site que vos clients n’utilisent probablement pas.
L’observabilité est également d’une importance vitale pour les nouvelles pratiques logicielles. Au cours des dernières décennies, les systèmes logiciels sont devenus de plus en plus complexes ; cependant, les meilleures pratiques de surveillance ne se sont pas développées à la même vitesse. Traditionnellement, le développement Web se faisait à l’aide de quelque chose comme la pile LAMP (Linux, Apache, MySQL, PHP/Perl/Python), qui est une grande base de données avec un middleware, une couche Web et une couche de mise en cache. La pile LAMP est très simple et assez triviale à déboguer. Tout ce que vous avez à faire est d’équilibrer la charge de tout ce qui précède à l’échelle, et tous les problèmes peuvent être rapidement triés, résolus et résolus en raison de la nature monolithique de l’application.
Cependant, aujourd’hui, les offres logicielles, les cadres, les paradigmes et les bibliothèques ont considérablement accru la complexité de leurs systèmes en raison d’éléments tels que l’infrastructure cloud, les microservices distribués, les emplacements géographiques multiples, les langues multiples, les offres logicielles multiples et la technologie d’orchestration des conteneurs.
L’observabilité peut vous aider à poser et à répondre à des questions importantes sur votre système logiciel et tous les différents états qu’il peut traverser en l’observant.
Selon le rapport The Developer Coefficient de Stripe, une bonne observabilité permet d’économiser environ 42 % du temps de développement d’une entreprise, y compris le débogage et la refactorisation.
Quels problèmes l’observabilité aide-t-elle à résoudre ?
Il existe de nombreux avantages lorsque vous suivez de bonnes pratiques d’observabilité et que vous les intégrez directement dans votre système logiciel, notamment les suivants :
Les sorties sont plus rapides
Lorsque vous en savez plus sur votre système, vous pouvez itérer plus rapidement. Vous épargnez à vos développeurs des jours de débogage de problèmes vagues et aléatoires.
Par exemple, j’ai travaillé dans une entreprise de plusieurs milliards de dollars avec des millions d’utilisateurs simultanés. L’une des tâches de toute l’équipe logicielle était de parcourir les journaux de la file d’attente de support et d’essayer de les résoudre. Cependant, ce fut une tâche incroyablement difficile. Tout ce que l’équipe a reçu dans le ticket était une trace de pile et un décompte des journaux d’erreurs. Cela a laissé les développeurs parcourir le code pendant des heures, essayant de trouver la raison la plus probable de l’erreur.
Il y a eu de nombreux cas où la raison (présumée) a été corrigée, a passé le contrôle qualité et a été publiée, mais le développeur s’est trompé et le processus a dû tout recommencer.
Une bonne observabilité élimine les conjectures de ce processus et peut offrir beaucoup plus de contexte, de données et d’assistance pour résoudre les problèmes de votre système.
Les incidents deviennent plus faciles à résoudre
Lorsque vous disposez d’informations et de données claires pour les éléments clés de votre code et de votre activité, vous fournissez à vos développeurs le contexte et les informations dont ils ont besoin pour résoudre les problèmes.
Une entreprise ne peut jamais réparer quelque chose qu’elle ne mesure pas. Cela s’applique également aux incidents.
Disposer d’informations clés, telles que les suivantes, vous permet de réduire considérablement votre temps moyen de récupération après un incident :
- Comment reproduisez-vous l’incident ?
- Quand est-ce que cela arrive?
- Y at-il un travail autour?
- Une erreur de service se produit-elle lorsque vous répliquez l’incident ?
Il vous aide à décider sur quoi travailler
Comme indiqué précédemment, avec les informations supplémentaires que vous obtenez grâce aux bonnes pratiques d’observabilité, vous êtes en mesure de décider sur quoi vous devez travailler.
Par exemple, si un certain bogue n’affecte que 0,001 % de la clientèle, se produit dans une langue rarement utilisée et est facilement corrigé par une actualisation, il est logique de se concentrer sur les bogues système les plus graves. Cela vous en donnera le plus pour votre argent en ce qui concerne le temps que les développeurs passent sur votre système, et cela vous permet de vous concentrer sur la résolution des problèmes des clients, en vous concentrant finalement sur l’expérience utilisateur.
Avec une bonne observabilité, vous saurez quelles sont les plus grandes frustrations de vos clients, et ces informations peuvent vous aider à orienter votre feuille de route produit ou votre historique de bogues.
Bonnes pratiques d’observabilité
Il existe quelques bonnes pratiques que vous devez suivre lors de la mise en œuvre de l’observabilité, notamment les suivantes :
Trois piliers de l’observabilité
N’oubliez pas les trois piliers de l’observabilité : les journaux, les métriques et les traces. Ce sont tous différents types de données de séries chronologiques et peuvent aider à améliorer l’observabilité de votre système. L’utilisation d’une base de données de séries chronologiques, comme InfluxDB, facilite le travail et l’utilisation efficace de ces types de données.
Chacun de ces éléments constitue une partie utile et importante de l’observabilité de votre système. Par exemple, les journaux sont des enregistrements horodatés des événements qui se sont produits dans votre système. Les métriques sont des représentations numériques de données mesurées au fil du temps (par exemple, 100 clients ont utilisé votre site sur une période d’une heure). Les traces sont une représentation des événements liés au flux dans votre système (c’est-à-dire, un client votre page de destination, l’ajout d’un t-shirt à son panier, puis l’achat de ce t-shirt).
Chacun d’entre eux offre des informations uniques et puissantes sur votre système et peut vous aider à l’améliorer.
Réaliser des tests A/B
Les tests A/B sont un outil important pour apporter des améliorations à votre produit et à votre code.
En observant votre système, vous pouvez apporter des modifications à votre système/refactoring et mesurer directement l’impact client.
Un exemple serait de déplacer la navigation de votre site du pied de page vers l’en-tête, là où la plupart des sites la placent normalement. À partir de là, vous pouvez mesurer le temps que les gens mettent pour naviguer vers l’endroit où ils doivent aller, la durée de la session ou le temps d’achat en conséquence directe du déplacement de votre fil d’Ariane de navigation vers l’en-tête.
Vous pouvez vous débarrasser de la version peu performante de votre test et utiliser votre test A/B pour piloter vos indicateurs de performance clés (KPI) positifs.
Ne jetez pas le contexte
Pour que votre système soit vraiment observable, vous devez conserver autant de contexte que possible. Tout se passe dans le contexte du temps, et les données de séries chronologiques préservent ce contexte. Il s’agit également de métadonnées autour des événements que vous observez. Le contexte vous aide à mieux comprendre l’image globale d’un problème auquel vous êtes confronté et conduit à des résolutions plus rapides.
Par exemple, si votre système commence à avoir une erreur à un certain moment, le contexte pourrait être la clé pour vraiment observer et déchiffrer la cause. Ainsi, si votre système commence à recevoir une erreur uniquement le vendredi, vous pouvez vous rendre compte que les erreurs sont causées par un script de sauvegarde de base de données automatisé qui a également lieu à ce moment-là. Cependant, si vous n’avez pas capturé tout le contexte et toutes les informations autour de ce journal spécifique, le journal isolé est inutile. Une solution comme InfluxDB peut aider à stocker, gérer et utiliser ce type de données.
Le contexte inclut des éléments tels que :
- L’heure de votre événement.
- Le décompte de votre événement.
- L’utilisateur associé à votre événement.
- Le jour de l’événement.
Maintenir des identifiants uniques dans tout le système
Dans les systèmes où plusieurs parties du système doivent communiquer, un seul événement peut généralement être aliasé.
Par exemple, si votre page d’accueil envoie un client vers une page de paiement, vous pouvez avoir un identifiant unique pour le client qui est difficile à corréler au paiement qu’il vient d’effectuer. Ceci est considéré comme un anti-modèle.
Vous devez vous assurer que toutes les différentes parties de votre système parlent une langue unifiée. Si vous ne le faites pas, vous n’obtiendrez l’observabilité que dans une partie de votre système. Une fois qu’il devient difficile de corréler une erreur entre deux systèmes différents, vous reviendrez à un système non observable.
Observabilité vs. surveillance
Suivi et observabilité sont souvent confondus ; Cependant, il est important de comprendre leurs différences afin de pouvoir implémenter les deux avec précision.
Surveillance
La surveillance porte sur des inconnues connues. Par exemple, si vous savez que vous n’avez pas beaucoup d’informations dans votre API qui traitent de votre backend de paiement, vous pouvez y ajouter des journaux afin de surveiller ce système. La surveillance est généralement plus réactive et est utilisée pour suivre une partie particulière de votre système.
Le suivi est important mais différent de l’observabilité.
Observabilité
L’observabilité traite généralement des inconnues inconnues. Par exemple, vous ne savez peut-être même pas que vous n’avez pas beaucoup d’informations dans votre système de gestion des paiements, et c’est là que l’observabilité entre en jeu. Vous commencez à comprendre votre système plus en profondeur et lorsque vous obtenez une vue approfondie et complexe de votre système, vous pouvez identifier vos lacunes et les points à améliorer.
Ceci est moins réactif et est normalement généralement appelé travail de découverte.
Conclusion
Dans cet article, vous avez découvert l’importance de l’observabilité et les questions courantes qui apparaissent régulièrement lorsque vous rencontrez l’observabilité, telles que pourquoi elle est importante et quels problèmes elle résout. Vous avez également appris en quoi l’observabilité et la surveillance diffèrent.
Kealan Parr est ingénieur logiciel senior chez Amber Labs.
DataDecisionMakers
Bienvenue dans la communauté VentureBeat !
DataDecisionMakers est l’endroit où les experts, y compris les techniciens travaillant sur les données, peuvent partager des informations et des innovations liées aux données.
Si vous souhaitez en savoir plus sur les idées de pointe et les informations à jour, les meilleures pratiques et l’avenir des données et de la technologie des données, rejoignez-nous sur DataDecisionMakers.
Vous pourriez même envisager de rédiger votre propre article !
En savoir plus sur DataDecisionMakers