Aller au contenu
medium

SLI, SLO et Error Budget : le langage commun entre ops et métier

10 min de lecture

Vendredi 17 h, un développeur veut déployer une fonctionnalité avant le week-end. L’ops hésite : “Le service a été instable cette semaine.” Débat sans fin, décision au feeling. Avec un SLO et un error budget, la réponse est immédiate : “Il reste 60 % du budget ce mois-ci, on peut déployer” — ou “Le budget est à 8 %, on gèle et on stabilise.” Les SLI (Service Level Indicators), SLO (Service Level Objectives) et error budgets sont les outils du SRE (Site Reliability Engineering) qui transforment la question subjective “est-ce assez fiable ?” en une décision mesurable et partagée entre équipes techniques et métier.

  • SLI, SLO, SLA : définitions, différences et relations entre ces concepts
  • Error budget : le calcul et pourquoi 100 % n’est jamais un bon objectif
  • Burn rate : mesurer la vitesse de consommation du budget pour alerter intelligemment
  • Politique d’error budget : que faire concrètement quand le budget s’épuise
  • Exemples concrets : SLI/SLO pour une API web, un paiement et un pipeline de données

Ces trois termes se confondent souvent. Une analogie simple les distingue : un SLI est le thermomètre, un SLO est la température souhaitée, et un SLA est le contrat avec le chauffagiste qui prévoit des pénalités si la maison est trop froide.

ConceptCe que c’estExemple concret
SLI (Service Level Indicator)Une métrique qui reflète l’expérience utilisateur”Proportion de requêtes HTTP avec un code 2xx/3xx”
SLO (Service Level Objective)Un objectif interne sur un SLI, défini par l’équipe”99,9 % des requêtes doivent renvoyer un code 2xx/3xx sur 30 jours”
SLA (Service Level Agreement)Un engagement contractuel avec le client, assorti de pénalités”Disponibilité mensuelle ≥ 99,5 %, sinon crédit de 10 %“
SLOSLA
À quiÉquipe interneClient ou utilisateur externe
Formalisé dansDocumentation interne, dashboardsContrat commercial
Si non atteintGel des features, focus fiabilitéPénalités financières, crédits
Niveau habituelPlus strict que le SLAPlus souple (marge de sécurité)

L’error budget : pourquoi 100 % n’est pas un bon objectif

Section intitulée « L’error budget : pourquoi 100 % n’est pas un bon objectif »

L’error budget est l’inverse du SLO. Si votre SLO est 99,9 %, votre error budget est 0,1 %. C’est la quantité d’indisponibilité tolérée sur une période donnée.

Pourquoi ne pas viser 100 % ? Parce que la fiabilité a un coût exponentiel. Passer de 99,9 % à 99,99 % coûte souvent 10 fois plus cher en infrastructure, en complexité et en temps d’ingénierie. Et pendant ce temps, vous ne livrez aucune fonctionnalité. L’error budget formalise ce compromis : chaque point de fiabilité gagné est un point de vélocité perdu.

Pour un SLO de 99,9 % sur 30 jours :

  • Error budget = 100 % − 99,9 % = 0,1 %
  • Budget en minutes = 30 jours × 24 h × 60 min × 0,001 = 43,2 minutes

Cela signifie que le service peut être indisponible ou dégradé pendant environ 43 minutes sur un mois sans violer l’objectif.

Tableau de référence : SLO → budget d’indisponibilité

Section intitulée « Tableau de référence : SLO → budget d’indisponibilité »
SLOError budgetIndisponibilité/moisIndisponibilité/an
99 %1 %~7 h 18 min~3,65 jours
99,5 %0,5 %~3 h 39 min~1,83 jour
99,9 %0,1 %~43 min~8,76 h
99,95 %0,05 %~21 min~4,38 h
99,99 %0,01 %~4 min 19 s~52 min

Hypothèses : mois = 30 jours, année = 365 jours.

Un bon SLI reflète ce que l’utilisateur perçoit, pas ce que le serveur mesure en interne. “CPU < 80 %” n’est pas un SLI : le CPU peut être à 95 % sans que l’utilisateur le ressente, ou à 40 % pendant une panne réseau.

FamilleCe qu’elle mesureExemple de SLI
DisponibilitéLe service répondProportion de requêtes HTTP avec code ≠ 5xx
LatenceLe service répond viteProportion de requêtes traitées en < 200 ms et sans erreur (un 500 rapide n’est pas un “good event”)
QualitéLe service répond correctementProportion de réponses complètes (pas de dégradation gracieuse)
FraîcheurLes données sont à jourProportion de lectures dont l’âge < 1 minute

Un SLI s’exprime toujours comme une proportion :

  • Numérateur : les bonnes expériences (requêtes réussies, requêtes rapides, données fraîches)
  • Dénominateur : les expériences valides (toutes les requêtes utilisateur légitimes)

Le dénominateur doit exclure le trafic qui ne reflète pas l’expérience utilisateur : healthchecks, sondes internes, endpoints techniques, trafic canary. Sans cette exclusion, on obtient un SLI artificiellement élevé (“99,99 % parce qu’on a compté les /health”).

Un SLI utile vérifie trois critères :

  • Centré utilisateur : il mesure ce que l’utilisateur voit, pas une métrique technique interne
  • Quantifiable : on peut le calculer automatiquement à partir de données existantes (logs, métriques, sondes)
  • Compréhensible : un product manager ou un manager non technique peut comprendre ce que “99,9 % des requêtes en < 200 ms” signifie
  1. Identifier les parcours utilisateur critiques

    Ne mesurez pas tout. Concentrez-vous sur les interactions qui comptent pour le business : connexion, recherche, paiement, consultation de compte. Ce sont les CUJ (Critical User Journeys) dans la terminologie Google SRE.

  2. Choisir un SLI pour chaque parcours

    Associez au moins un SLI de disponibilité et un de latence à chaque parcours critique. Par exemple, pour un checkout : “proportion de paiements réussis” + “P95 latence du checkout < 2 s”.

  3. Fixer un objectif initial conservateur

    Mesurez d’abord votre fiabilité actuelle pendant 2 à 4 semaines. Fixez un SLO légèrement en dessous de cette mesure. Il est beaucoup plus facile d’assouplir un SLO que de le durcir une fois que les équipes se sont habituées à un niveau de confort.

  4. Calculer l’error budget

    Error budget = 100 % − SLO. Traduisez-le en minutes par mois pour que tout le monde comprenne. “43 minutes par mois” est plus parlant que “0,1 %”.

  5. Instrumenter et visualiser

    Créez un dashboard qui montre en temps réel le SLI actuel et la consommation du budget. L’équipe doit voir d’un coup d’oeil combien de budget il reste.

  6. Définir une politique d’error budget

    Documentez explicitement ce qui se passe quand le budget atteint certains seuils. Sans politique, le budget s’épuise et rien ne change — c’est l’anti-pattern le plus courant.

L’error budget n’a de valeur que s’il déclenche des actions concrètes. Le SRE Workbook de Google recommande de définir une politique formelle, documentée et approuvée par les parties prenantes (engineering et product).

Budget restantComportement attendu
> 50 %Business as usual — déploiements normaux
25 % – 50 %Revue des déploiements risqués, tests renforcés
< 25 %Gel des features non critiques, focus stabilité
ÉpuiséFeature freeze complet, convenu à l’avance — seuls les correctifs de sécurité et les P0 passent

Quand le budget est épuisé, les développeurs consacrent leur temps à la fiabilité (dette technique, tests, résilience) plutôt qu’aux nouvelles fonctionnalités. Le budget se régénère naturellement à la fin de la fenêtre de mesure (généralement 30 jours glissants).

Scénario concret : consommation progressive du budget

Section intitulée « Scénario concret : consommation progressive du budget »

Prenons un SLO de 99,9 % sur 30 jours — soit un budget de 43 minutes.

  1. Jour 3 — un incident réseau cause 15 minutes d’indisponibilité. Budget restant : 28 min (65 %)

  2. Jour 12 — un déploiement raté provoque 10 minutes de temps de réponse dégradé. Budget restant : 18 min (42 %)

  3. Jour 18 — une latence anormale dure 5 minutes. Budget restant : 13 min (30 %). On entre en zone de vigilance.

À ce stade, la politique impose de revoir les déploiements à venir. Si un quatrième incident survient, le budget tombe sous 25 % et on gèle les features.

Burn rate : alerter sur la vitesse, pas sur le seuil

Section intitulée « Burn rate : alerter sur la vitesse, pas sur le seuil »

Le burn rate (taux de combustion) mesure à quelle vitesse le budget se consomme par rapport à la vitesse “normale”. Un burn rate de 1 signifie qu’on consomme le budget exactement au rythme prévu sur 30 jours. Un burn rate de 10 signifie qu’on l’épuisera en 3 jours au lieu de 30.

Pourquoi alerter sur le burn rate plutôt que sur le SLO brut ? Parce que sur une fenêtre courte et un trafic faible, la mesure est instable : un SLO à 99,85 % sur 5 minutes peut refléter du bruit statistique et non un problème réel. En revanche, un burn rate de 14× sur 1 heure signifie que 2 % du budget mensuel s’est évaporé en une heure. C’est la vitesse de dégradation qui compte, pas la valeur instantanée.

Le SRE Workbook de Google recommande l’alerting multi-window, multi-burn-rate. Le principe : combiner une fenêtre longue (pour détecter les tendances) et une fenêtre courte (pour confirmer que le problème est toujours en cours et éviter les faux positifs).

SévéritéFenêtre longueFenêtre courteBurn rateCe que ça signifie
Critique (page)1 h5 min> 14,4×2 % du budget consumé en 1 h
Urgent (ticket)6 h30 min> 6×5 % du budget consumé en 6 h
Avertissement3 jours6 h> 1×Tendance de dépassement sur le mois

L’alerte ne se déclenche que si les deux fenêtres (longue ET courte) confirment un burn rate élevé. Cela élimine la majorité des faux positifs.

SLIMesureSLO
DisponibilitéProportion de requêtes HTTP avec code ≠ 5xx≥ 99,9 % sur 30 j
Latence P9595e centile du temps de réponse< 200 ms
Latence P9999e centile du temps de réponse< 1 s
SLIMesureSLO
Taux de succèsProportion de transactions terminées sans erreur≥ 99,95 % sur 30 j
Latence P9999e centile du temps de réponse bout en bout< 2 s
IdempotenceProportion de requêtes rejouées traitées correctementZéro tolérance — SLO « must », aucun error budget alloué
SLIMesureSLO
ComplétudeProportion de jobs terminés dans les délais≥ 99 % sur 30 j
FraîcheurÂge maximum des données en sortie< 15 min
QualitéProportion de lignes sans erreur de parsing≥ 99,9 % sur 30 j
PiègePourquoi c’est un problèmeQue faire
SLO trop ambitieux (99,99 % “par sécurité”)Budget de 4 min/mois — chaque incident mineur viole l’objectifCommencer à 99,9 % et durcir si nécessaire
SLO déconnecté de l’utilisateur (CPU < 80 %)Ne prédit pas l’expérience réelleMesurer la latence et les erreurs vues par l’utilisateur
Trop de SLO (50 indicateurs par service)Personne ne les suit, perte de focus1 à 3 SLI par service critique, pas plus
Pas de politique d’error budgetLe budget s’épuise, rien ne changeDocumenter et faire signer la politique
SLO = SLAAucune marge de sécurité, alerte quand il est déjà trop tardSLO plus strict que le SLA
Pas d’ownershipPersonne ne se sent responsable du SLONommer un owner par SLO
  • Un SLI mesure ce que l’utilisateur perçoit (disponibilité, latence, qualité, fraîcheur) — pas une métrique serveur interne.

  • Un SLO est un objectif interne sur un SLI — il oriente les décisions d’ingénierie et de product management.

  • Un SLA est un engagement contractuel avec le client — le SLO interne doit toujours être plus strict pour garder une marge.

  • L’error budget (100 % − SLO) transforme la fiabilité en ressource finie : on la “dépense” pour livrer des fonctionnalités.

  • Viser 100 % est contre-productif : le coût de chaque “9” supplémentaire est exponentiel, et le budget de changement tombe à zéro.

  • Le burn rate mesure la vitesse de consommation du budget — alerter sur la vitesse est plus pertinent qu’alerter sur un seuil brut.

  • Sans politique d’error budget formalisée et appliquée, tout le mécanisme SLI/SLO est cosmétique.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.