Pour garder le leadership et une bonne réputation dans un monde fortement concurrentiel il faut être en mesure de quantifier et suivre les indicateurs essentiels des applications.
Depuis quelques années déjà le monitoring de systèmes informatiques a fait un grand pas en avant grâce à l’intelligence artificielle (IA). L’observabilité des systèmes est améliorée grâce à des outils de nouvelle génération comme Dynatrace. La démarche globale du monitoring applicatif a évolué en l’inscrivant dans une approche DevOps : les outils d’observabilité assistés par l’IA comme Dynatrace ont conquis les chaînes d’intégration continue (CI), accompagnent les tests de charges, épaulent les ingénieurs (y compris les product owners) et le métier dans le suivi quotidien des applications en production et ils s’inscrivent dans d’autres domaines comme le capacity planning, la prédiction d’incidents, la remédiation automatique.
La démarche SRE donne des recommandations pragmatiques pour améliorer la disponibilité et la performance d’un service informatique : Afin d’augmenter la résilience et la disponibilité, elle préconise trois leviers d’actions :
C’est sur ce dernier point que l’outil Dynatrace peut apporter les précieuses secondes ou minutes qui réduiront le temps de détection et par conséquent de réparation (les fameux MTTI=mean time to identify et MTTR=mean time to repair). La disponibilité du service étant autant liée à la fréquence de pannes qu’à la durée des pannes, le MTTR est par conséquent une valeur que l’on cherche à réduire.
Savoir mesurer, quantifier et alerter tôt est donc un enjeu important, et la démarche SRE propose des façons de quantifier ces objectifs de manière rationnelle et impartiale à travers les SLI, SLO et SLAs.
Autant le terme de SLA (Service Level Agreement) a déjà largement conquis notre langage métier et signifie l’engagement souvent contractuel d’un niveau de qualité de service proposé par un fournisseur, autant les termes SLI et SLO méritent de s’y attarder pour bien comprendre la suite.
D’après la définition de Google, un SLI (Service Level Indicator) est une mesure qui permet de quantifier le niveau de qualité délivré par un service : les SLIs s’expriment souvent en termes de temps de réponse, de taux d’erreur, de débits, ou de disponibilité. Exemples : le temps de réponse moyen d’un service, ou le nombre de requêtes en erreur par rapport au nombre total de requêtes sur une période. Dans Dynatrace, les SLIs sont exprimés par des metrics (en français : mesure ou indicateur).
Il n’est pas toujours facile de positionner les SLOs mais l’idée générale est de viser des objectifs en termes de temps de réponses et de disponibilité pour garantir un haut niveau de satisfaction des utilisateurs : avec la forte concurrence des offres, une application lente ou instable représente un risque économique. Les clients mécontents se tournent rapidement vers la concurrence. La satisfaction utilisateur est devenu le nerf de la guerre, les SLIs et SLOs servent à la quantifier, la surveiller et travailler sur son amélioration continue.
Dynatrace a incorporé la notion de SLOs depuis décembre 2020 dans son offre de plateforme d’observabilité basée sur l’IA.
L’outil d’orchestration keptn peut ensuite être déclenché par l’extérieur (p.ex. par un trigger d’une chaîne d’intégration continue, un outil de test de charge, ou un outil de déploiement) afin d’évaluer un système par rapport aux objectifs fixés. Dynatrace a choisi le terme évoquant de « quality gates » pour dénommer cette étape : keptn va chercher les mesures dans Dynatrace, NeoLoad, Prometheus etc via des apis, les compare avec les objectifs, et donne son verdict (Les SLOs sont-ils atteints par rapport aux SLIs mesurés? ). Le jugement de keptn lui permet alors de revenir vers son environnement de CI, de build, de test de charge etc. avec ses décisions qui permettront l’orchestration de la suite : release acceptée, déploiement ou rollback, mise en place d’une remédiation ou autres actions. keptn évolue aujourd’hui sous forme d’un projet open source de la CNCF (cloud native computing foundation)
La notion de SLOs dans Dynatrace reprend d’ailleurs un autre indicateur cher au SRE de Google, le budget d’erreurs (error budget). Il correspond à l’écart entre les SLIs mesurés sur une période de référence et l’objectif SLO associé et représente un budget que l’équipe SRE doit consacrer à la remédiation durable du souci si l’objectif n’est pas atteint. En revanche si l’objectif a été atteint, l’équipe bénéficie de ce budget pour faire évoluer son produit : en d’autres termes, ce budget favorise une balance entre disponibilité du site et innovation (qui par définition met en péril la disponibilité). Tant que l’équipe n’a pas eu à allouer ce budget à la correction, elle peut le consacrer à l’innovation : c’est donc un moyen d’arbitrer les tensions antinomiques entre stabilité et innovation.
Afin de définir un nouvel objectif SLO dans Dynatrace, rendez-vous dans le menu correspondant (Cloud automation -> Service level objectives). Dynatrace propose alors d’assister l’utilisateur dans la définition de ses objectifs en proposant un guidage selon s’ils sont coté service ou coté client :
La définition d’un SLO doit ensuite incorporer la notion de seuils (warning, error) et de période d’observation (-1w pour une semaine, par exemple).
Afin de simplifier l’expression des SLIs entre autres, Dynatrace a récemment ajouté les metric expressions au produit. Il permet de combiner des mesures pour en faire des expressions plus complexes : on peut alors faire des calculs arithmétiques comme additionner deux mesures, réduire l’étendue via des filtres ou encore ventiler selon des critères (splitting). Les expressions utilisent des transformers comme filter(), splitBy() etc. Pour les calculs arithmétiques, sachez que les sous-expressions doivent être mises entre parenthèses, y compris des constantes numériques. Exemple : (100) – (builtin.apps.other.crashFreeUsersRate.os). Le plus simple est d’utiliser le nouveau Data Explorer (menu Observe and explore -> Explore data) qui permet d’affiner les expressions avec une assistance de type auto-complétion :
Un retard de +100ms sur le temps de chargement équivaut à une perte de 1% de revenues (source : Amazon)
Les utilisateurs quittent un site dès lors qu’il met plus de 2,5 secondes à s’afficher (source : Forrester Research)