Aller au contenu

SLO, SLI et SLA

Définir des indicateurs pertinents, fixer des objectifs realistes et gérer les error budgets.


Définitions et relations

graph TD
    SLI["SLI\nService Level Indicator\nMetrique mesuree"] --> SLO["SLO\nService Level Objective\nObjectif interne"]
    SLO --> SLA["SLA\nService Level Agreement\nContrat externe"]
    SLO --> EB["Error Budget\nMarge de tolerance"]
Terme Définition Exemple
SLI Métrique qui mesure la qualité d'un service Taux de requêtes HTTP < 500ms
SLO Cible a atteindre sur un SLI sur une periode 99,5% des requêtes < 500ms sur 30 jours
SLA Engagement contractuel avec pénalités 99% de disponibilité mensuelle garantie
Error Budget Marge d'échec tolérée avant violation du SLO 0,5% des requêtes peuvent échouer

Choisir de bons SLI

Un bon SLI mesure ce que l'utilisateur ressent directement, pas ce qui est commode a mesurer.

Bons SLI

  • Taux de succès des requêtes (HTTP 2xx vs total)
  • Latence au percentile 95 ou 99
  • Disponibilité d'un parcours utilisateur critique
  • Fraicheur des données (âge du dernier batch traite)

Pieges a éviter

Anti-pattern Problème
CPU moyen Proxy indirect, pas ressenti utilisateur
Uptime du process Un process peut tourner et ne rien servir
Métriques internes uniquement Ne reflete pas l'expérience réelle
Trop de SLI Dilution de l'attention, alerting confus

Partir de l'utilisateur

Demandez-vous : qu'est-ce qui ferait dire a un utilisateur que le service est dégradé ? C'est ca votre SLI.


Fixer des SLO realistes

Un SLO doit refléter la fiabilité réelle historique, pas un idéal.

Principes

  • Partir des données historiques des 90 derniers jours
  • Définir une cible atteignable, pas maximale
  • Impliquer le product owner : fiabilité a un coût
  • Réviser régulièrement (trimestriellement)

Niveaux typiques par type de service

Type de service SLO disponibilité typique
API critique (paiement) 99,9%
API standard 99,5%
Service batch interne 99%
Dashboard analytique 95%

SLO a 100% interdit

Un SLO a 100% interdit tout changement : le moindre déploiement risque de le violer. Il n'existe pas de système a 100% fiable. Fixez 99,9% maximum pour les services les plus critiques.


Error budgets

L'error budget est la marge de dégradation tolérée avant violation du SLO.

Calcul

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

  • Fenêtre : \(30 \text{ jours} \times 24\text{h} \times 60\text{min} = 43\,200 \text{ minutes}\)
  • Budget d'indisponibilite : \(43\,200 \times 0{,}5\% = 216 \text{ minutes}\)

Cycle de décision

graph LR
    M["Mesure SLI"] --> C{"Budget\nconsomme ?"}
    C -- "< 50%" --> F["Deploiements\nlibres"]
    C -- "50-80%" --> R["Ralentir\nles releases"]
    C -- "> 80%" --> G["Freeze\nFocus fiabilite"]
    G --> M
    F --> M
    R --> M

Utilisation du budget

État du budget Décision recommandee
Budget intact Déploiements, experimentations autorisees
Budget a moitie consomme Revue des risques avant chaque release
Budget presque épuisé Freeze features, sprints fiabilité
Budget dépassé Post-mortem obligatoire, plan de remediattion

SLA : quand formaliser

Le SLA est un contrat externe avec conséquences financieres ou juridiques.

SLA interne vs externe

Type Usage Pénalités
SLA externe Client, partenaire Credits, remboursements
SLA interne Entre équipes (platform team) Priorisation, escalade

Bonnes pratiques

  • Le SLA doit être inférieur au SLO (marge de sécurité)
  • Définir clairement les exclusions (maintenance planifiee, force majeure)
  • Ne formaliser un SLA que si vous pouvez le mesurer et le prouver

SLA sans mesure

Un SLA sans instrumentation est une promesse en l'air. Avant de signer, assurez-vous de pouvoir produire les rapports de conformité.