Au cours des 20 dernières années environ, les équipes informatiques se sont surtout appuyées sur l'APM pour surveiller et dépanner les applications. L'APM échantillonne et agrège périodiquement les données des applications et des systèmes, appelées télémétrie, qui sont connues pour être liées à des problèmes de performance des applications.
L'APM analyse la télémétrie par rapport aux indicateurs clés de performance (KPI) et rassemble les résultats dans un tableau de bord. Ces résultats alertent les équipes chargées des opérations et du support sur des conditions anormales qui doivent être traitées pour résoudre ou éviter un problème.
L'APM est suffisamment efficace pour surveiller et dépanner des applications monolithiques ou des applications distribuées traditionnelles. Dans ces configurations, les nouvelles versions du code sont périodiques et les flux de travail et les dépendances entre les composants de l'application, les serveurs et les ressources connexes sont bien connus ou faciles à retracer.
Aujourd'hui, les organisations adoptent avec engouement des pratiques de développement modernes qui comprennent le développement agile, l’intégration et le déploiement continus (CI/CD), le DevOps et plusieurs langages de programmation.
Les organisations adoptent également des technologies cloud natives telles que les microservices, les conteneurs Docker, Kubernetes et les fonctions serverless. Cela leur permet de lancer leurs services sur le marché plus rapidement que jamais, mais ce faisant elles déploient de nouveaux composants d'application à plein d'endroits différents, dans plusieurs langues et pendant des périodes très variables, qui peuvent se compter en secondes ou fractions de seconde, pour les fonctions serverless : l'échantillonnage des données une fois par minute par APM ne peut pas suivre ce rythme.
Cela nécessite une télémétrie de meilleure qualité et bien plus fournie, qui puisse être utilisée pour créer un enregistrement de haute fidélité, riche en contexte et entièrement corrélé de chaque demande ou transaction de l’utilisateur de l’application. C'est là que l'observabilité entre en jeu.