appuyez sur ⌘K pour changer d’outil
SRE

Calculateur d'Error Budget

Calcule l'error budget d'un objectif SLO : temps d'arrêt et requêtes en échec autorisés.

local
error-budget
Error budget
0.100%
Allowed downtime
43.2 min
Allowed failed requests
1,000
§01 À PROPOS DE CET OUTIL

Vue d’ensemble

Un SLO est une promesse formulée comme un rapport : telle fraction des requêtes aboutira. Son corollaire utile, c’est le reste — le budget d’erreur, la quantité d’échec à laquelle vous avez droit avant d’avoir rompu la promesse.

Présenter la fiabilité comme un budget change la nature de la conversation. « Ne rien casser » n’est pas un objectif d’ingénierie : cela valorise le risque à l’infini et interdit donc de livrer quoi que ce soit. « Vous disposez de 43 minutes d’indisponibilité ce mois-ci et vous en avez consommé 12 » est en revanche un objectif sur lequel on peut planifier.

Ce calculateur convertit un SLO en trois chiffres : le budget exprimé en pourcentage, l’indisponibilité autorisée sur votre fenêtre, et — si vous fournissez un volume de requêtes — le nombre de défaillances individuelles qui tient à l’intérieur.

Utilisation

  1. Saisissez le SLO sur lequel vous vous engagez, en pourcentage.
  2. Réglez la fenêtre en jours. 30 correspond au mois glissant habituel ; 7 donne une boucle de retour plus rapide ; 90 s’aligne sur une revue trimestrielle.
  3. Éventuellement, saisissez le volume de requêtes de cette fenêtre pour obtenir le nombre d’échecs.

Lire les chiffres

Le budget d’erreur vaut simplement 100 % − SLO. Il paraît dérisoirement petit à côté du SLO, et c’est précisément le point : passer de 99,9 % à 99,99 % divise par dix ce que vous avez le droit de dépenser, ce qui explique pourquoi chaque neuf supplémentaire coûte tellement plus cher que le précédent.

L’indisponibilité autorisée est ce budget appliqué à la fenêtre, exprimé en temps réel. C’est le chiffre le plus utile pour parler à des interlocuteurs extérieurs à l’équipe, parce que « environ 43 minutes par mois » est concret là où « 99,9 % » ne l’est pas.

Les requêtes en échec autorisées sont le même budget appliqué au volume. C’est sur ce chiffre qu’il faut planifier, parce qu’il se projette directement sur ce que vos métriques savent observer : un décompte de réponses 5xx, ou de requêtes au-delà de votre seuil de latence.

Budget en temps et budget en requêtes ne sont pas la même chose

Deux incidents peuvent consommer un budget temps identique et des budgets requêtes radicalement différents, et réciproquement.

Une panne totale de cinq minutes à 3 h du matin coûte cinq minutes d’indisponibilité et très peu de requêtes. Une dégradation d’une journée entière pendant laquelle 0,5 % des requêtes échouent ne coûte presque aucune « indisponibilité » au sens naïf du terme, et peut à elle seule épuiser un mois de budget requêtes.

C’est la seconde que les utilisateurs vivent. Si vous ne mesurez la disponibilité qu’en temps, vous sous-comptez systématiquement les défaillances qui agacent le plus, parce que les pannes partielles ne s’enregistrent tout bonnement pas comme de l’indisponibilité.

La résolution usuelle consiste à définir le SLI comme un rapport entre événements bons et événements valides — requêtes réussies sur requêtes totales, ou requêtes rapides sur requêtes totales — et à n’en dériver une valeur temporelle que pour la communication.

Ce qui consomme réellement le budget

L’erreur classique consiste à voir le budget comme une réserve dédiée aux incidents. En pratique, il est partagé avec tout ce qui fait échouer des requêtes :

  • Les déploiements. Même une mise en production propre coupe des connexions si chaque couche ne se vide pas correctement.
  • La maintenance planifiée. Si elle est visible pour l’utilisateur, elle compte, que vous l’ayez annoncée ou non.
  • Les défaillances de dépendances. Votre budget est dépensé par les incidents de votre fournisseur, sans que vous ayez eu voix au chapitre.
  • La longue traîne. Des délais d’attente isolés, des reprises qui ont épuisé leurs tentatives, un nœud défectueux. Cela devient rarement un incident, et ça s’additionne.

C’est pour cela que les équipes qui budgètent une consommation de 100 % de leur budget d’erreur le dépassent. Prévoyez d’en dépenser une fraction sur les incidents et laissez le reste au coût ordinaire de l’exploitation.

Exemples

  • 99,9 % sur 30 jours — environ 43 minutes. Un seul mauvais déploiement avec un retour arrière lent peut consommer l’essentiel d’un mois.
  • 99,95 % sur 30 jours — environ 22 minutes. C’est le point où le retour arrière manuel cesse d’être assez rapide et où il faut de l’automatisation.
  • 99,99 % sur 30 jours — environ 4 minutes. Atteignable uniquement avec une bascule multi-région qui s’enclenche sans humain dans la boucle.
  • 99,999 % sur 30 jours — environ 26 secondes. La détection seule prend généralement plus de temps que cela : l’architecture doit donc tolérer les pannes au lieu d’y réagir.

Chaque palier divise à peu près par dix la défaillance permise et change d’un cran l’ordre de grandeur du coût. Choisissez le SLO en fonction de ce dont les utilisateurs ont réellement besoin, et non du nombre de neufs qui fait bonne impression : un pipeline de traitement par lots interne à 99,99 % est de l’argent dépensé au bénéfice de personne.

Remarques

La fenêtre est traitée comme comptant exactement le nombre de jours que vous saisissez : un mois de 30 jours vaut donc 2 592 000 secondes. Les mois calendaires diffèrent de jusqu’à trois jours, ce qui compte si vous devez vous réconcilier avec un contrat ; une fenêtre glissante de 30 jours est le choix opérationnel le plus courant et elle contourne le problème.

Le décompte de requêtes en échec est tronqué et non arrondi, parce qu’une défaillance partielle n’est pas une chose que l’on peut dépenser.

Pour une disponibilité exprimée sous forme d’engagement contractuel avec des paliers de pénalité, utilisez le calculateur de SLA. Il répond à la question voisine — combien d’indisponibilité un engagement de disponibilité donné autorise — sans le volet volume de requêtes.

FAQ
Quelle est la différence entre un SLO et un SLA ?
Un SLO est l'objectif que vous vous imposez ; un SLA est l'engagement contractuel assorti d'une pénalité. Gardez le SLO plus strict que le SLA, car l'écart entre les deux constitue votre marge d'exploitation — la zone où vous avez manqué votre propre objectif sans devoir encore d'avoirs à personne.
Pourquoi 99,9 % de 1 000 000 de requêtes donne-t-il exactement 1 000 ?
Parce que c'est la bonne réponse. En virgule flottante binaire, 1 - 99,9/100 vaut un peu moins que 0,001 : un calcul naïf tronque donc à 999. L'arithmétique employée ici arrondit à douze chiffres significatifs avant de tronquer, ce qui est exact sur toute la plage utile en pratique.
Faut-il mesurer le budget en temps ou en requêtes ?
En requêtes, si c'est possible. Une disponibilité fondée sur le temps traite une minute de panne totale comme une minute où un point d'entrée sur vingt échouait, ce qui ne correspond pas au vécu des utilisateurs. Les chiffres temporels restent utiles pour dialoguer avec ceux qui raisonnent en neufs.
Que faire quand le budget est épuisé ?
Décidez-le à l'avance, et par écrit. La politique habituelle consiste à geler les livraisons de fonctionnalités et à consacrer la période suivante à la fiabilité, jusqu'à ce que le budget se reconstitue. Un budget sans conséquence attachée est un indicateur, pas une politique.
Le budget est-il intégralement à ma disposition ?
Non. La maintenance planifiée, les déploiements, les incidents de dépendances et la longue traîne des défaillances isolées se servent tous sur le même compte. Les équipes qui prévoient de dépenser 100 % du budget terminent régulièrement la fenêtre en dépassement.