FastAPI : Automatiser la détection des régressions de performance avec des alertes basées sur des percentiles
Introduction
Dans un environnement micro‑services, chaque milliseconde compte. Les équipes backend et SRE constatent fréquemment que les régressions de performance passent inaperçues jusqu’à ce qu’elles impactent les SLA. En combinant FastAPI, les métriques percentile et les alertes intelligentes de Lescopr, il est possible d’identifier et de corriger ces régressions avant qu’elles n’affectent les utilisateurs. Cet article vous guide pas à pas, du concept initial au déploiement en production, en détaillant les décisions clés et les livrables attendus.
Étape 1 : Définir les objectifs de monitoring
1.1 Identifier les indicateurs critiques
- Latence p95 : temps de réponse que 95 % des requêtes ne dépassent pas.
- Erreur 5xx : taux d’erreurs serveur.
- Throughput : nombre de requêtes par seconde.
Ces indicateurs permettent de mesurer la stabilité et la conformité aux SLA définis par le produit.
1.2 Fixer les seuils d’alerte
Pourquoi choisir le percentile p95 ? Le p95 reflète les cas les plus fréquents de latence élevée sans être trop sensible aux outliers extrêmes, offrant ainsi un compromis entre réactivité et bruit.
Par exemple, un seuil de 300 ms pour le p95 peut être aligné avec un SLA de 99 % des requêtes en dessous de 400 ms.
Étape 2 : Instrumenter l’application FastAPI
2.1 Ajouter le middleware de tracing
from fastapi import FastAPI
from lescopr import LescoprMiddleware
app = FastAPI()
app.add_middleware(LescoprMiddleware, service_name="my-fastapi-service")
Le middleware injecte automatiquement des traces et des métriques dans chaque requête.
2.2 Exposer les métriques Prometheus
from lescopr import lescopr_exporter
app.mount("/metrics", lescopr_exporter)
Lescopr expose les métriques au format Prometheus, prêtes à être scrappées par votre serveur de collecte.
Étape 3 : Configurer les métriques percentile
3.1 Définir les buckets percentile dans Lescopr
Dans le tableau de bord Lescopr, créez un Histogram avec les buckets suivants :
- p50 : 100 ms
- p95 : 300 ms
- p99 : 600 ms
Ces valeurs sont ajustables en fonction du profil de charge de votre API.
3.2 Vérifier la collecte des données
Utilisez la console Lescopr pour visualiser les histogrammes en temps réel. Vous devez voir les trois courbes se mettre à jour dès que le trafic commence.
Étape 4 : Mettre en place les alertes de régression
4.1 Créer une règle d’alerte
alert: HighLatencyP95
expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 0.3
for: 5m
labels:
severity: critical
annotations:
summary: "Latence p95 > 300 ms"
description: "Le percentile 95 % dépasse le seuil SLA pendant plus de 5 minutes."
Cette règle déclenche une notification dès que le p95 dépasse 300 ms pendant 5 minutes.
4.2 Configurer la notification
Lescopr permet d’envoyer les alertes vers Slack, Microsoft Teams ou email. Choisissez le canal qui correspond à votre flux d’incident.
Étape 5 : Validation et déploiement
5.1 Tests de charge contrôlés
Utilisez locust ou k6 pour générer du trafic et vérifier que les alertes se déclenchent correctement lorsqu’une charge dépasse les seuils.
5.2 Revue de conformité RGPD
Les métriques collectées par Lescopr respectent le RGPD : aucune donnée personnelle n’est stockée, seules les mesures de performance sont enregistrées.
5.3 Déploiement en production
Déployez votre application avec le même middleware et les mêmes configurations d’alertes. Surveillez le tableau de bord Lescopr pendant les premières 24 h pour valider la stabilité.
Conclusion
En suivant ce processus, vous avez automatisé la détection des régressions de performance sous FastAPI, mis en place des alertes percentile fiables et intégré une couche d’observabilité conforme aux exigences d’entreprise. Vous disposez maintenant d’un système capable de réduire le MTTR et d’améliorer la confiance des utilisateurs.
Pour aller plus loin, la documentation Lescopr détaille la mise en place pas à pas.