Monitoring

Le monitoring fournit des informations sur les performances d'une application et sur ses modes d'utilisation.

L'un des objectifs du monitoring est de garantir une haute disponibilité en réduisant au minimum le temps de détection et le temps d'atténuation (TTD, TTM).

En d'autres termes, dès que des problèmes de performance ou autres surviennent, des données de diagnostic sur ces problèmes sont transmises aux équipes de développement par le biais d'une surveillance automatisée (le TTD).

Les équipes de développement agissent sur les informations pour atténuer les problèmes le plus rapidement possible afin que les utilisateurs ne soient plus affectés (le TTM).
Les temps de résolution sont mesurés et les équipes travaillent pour s'améliorer au fil du temps.
Après l'atténuation, les équipes travaillent sur la façon à remédier aux problèmes à la racine afin qu'ils ne se reproduisent pas. Ce temps est mesuré en tant que TTR.

Un deuxième objectif du monitoring est de permettre un "apprentissage validé" en suivant l'utilisation.
Le concept de base de l'apprentissage validé est que chaque déploiement est une occasion de suivre les résultats expérimentaux qui soutiennent ou diminuent les hypothèses qui ont conduit au déploiement.
Le suivi de l'utilisation et des différences entre les versions permet aux équipes de mesurer l'impact des changements et de prendre des décisions commerciales.
Si une hypothèse est diminuée, l'équipe peut "échouer rapidement" ou "pivoter". Si l'hypothèse est soutenue, l'équipe peut alors doubler ou "persévérer". Ces décisions fondées sur des données conduisent à de nouvelles hypothèses et à une hiérarchisation des priorités.

La "télémétrie" est le mécanisme de collecte des données issues de la surveillance.
La télémétrie peut utiliser des agents qui sont installés dans les environnements de déploiement, un SDK qui repose sur des marqueurs insérés dans le code source, la journalisation du serveur, ou une combinaison de ces éléments.
En général, la télémétrie fait la distinction entre le pipeline de données optimisé pour les alertes et les tableaux de bord en temps réel et les données de plus grand volume nécessaires au dépannage ou à l'analyse de l'utilisation.

La "surveillance synthétique" utilise un ensemble cohérent de transactions pour évaluer les performances et la disponibilité.
Les transactions synthétiques sont des tests prévisibles qui ont l'avantage de permettre une comparaison d'une publication à l'autre de manière très prévisible.
La surveillance de l'utilisateur réel (RUM), d'autre part, signifie la mesure de l'expérience à partir du navigateur, de l'appareil mobile ou du bureau de l'utilisateur, et tient compte des conditions du "dernier kilomètre" comme les réseaux cellulaires, le routage Internet et la mise en cache.
Contrairement aux synthétiques, la RUM ne fournit généralement pas de mesures répétables dans le temps.

Le monitoring est souvent utilisé pour tester en production.
Un déploiement bien surveillé transmet les données sur son état de santé et ses performances afin que l'équipe puisse repérer immédiatement les incidents de production. Combinée à un pipeline de déploiement continu, le monitoring permet de détecter de nouvelles anomalies et de les atténuer rapidement. Cela permet de découvrir les inconnus dans le comportement des applications qui ne peuvent être prévues dans les environnements de pré-production.
Une surveillance efficace est essentielle pour permettre aux équipes DevOps de livrer rapidement, d'obtenir un retour d'information de la production et d'accroître la satisfaction, l'acquisition et la fidélisation des clients.