2026-03-02 11:35:49 +00:00
# Performance Baseline — Veza API
2026-03-02 18:22:38 +00:00
**Version** : v0.951
2026-03-02 11:35:49 +00:00
**Objectif** : Documenter les latences P50/P95/P99 des endpoints critiques pour détecter les régressions.
## Méthodologie
1. Démarrer l'API en mode profiling : `pprof` est exposé si `ENABLE_PPROF=true`
2. Exécuter un load test (k6 ou Go) sur les endpoints critiques
3. Mesurer latences via Prometheus (`http_request_duration_seconds`) ou pprof
## Endpoints critiques à monitorer
| Endpoint | Méthode | Description |
|----------|---------|-------------|
| `/api/v1/auth/login` | POST | Login utilisateur |
| `/api/v1/auth/register` | POST | Inscription |
| `/api/v1/tracks` | GET | Liste des tracks (cursor pagination v0.931) |
| `/api/v1/tracks/search` | GET | Recherche |
| `/api/v1/users/me` | GET | Profil utilisateur |
| `/api/v1/marketplace/orders` | POST | Création commande |
| `/api/v1/notifications` | GET | Notifications |
| `/api/v1/conversations` | GET | Conversations |
| `/api/v1/analytics/me` | GET | Analytics |
| `/health` | GET | Health check |
2026-03-02 18:22:38 +00:00
## Cibles v1.0 (v0.951)
2026-03-02 11:35:49 +00:00
2026-03-02 18:22:38 +00:00
- **P99 < 500ms ** sur tous les endpoints critiques à 500 req / s ( stress_500rps . js )
- **1000 WebSocket** : connexions stables 5 min, taux livraison > 99% (stress_1000ws.js)
- **50 uploads concurrents** : tous réussis, backpressure respecté (uploads.js)
2026-03-02 11:35:49 +00:00
- **GET /tracks** : pagination cursor-based (v0.931) garantit des performances constantes quelle que soit la page
2026-03-02 18:22:38 +00:00
## Scripts k6 v0.951
| Script | Commande | Seuils |
|--------|----------|--------|
| API stress 500 VUs | `k6 run loadtests/backend/stress_500rps.js` | P99 < 500ms ( login , tracks , search , products ) |
| WebSocket 1000 | `k6 run loadtests/chat/stress_1000ws.js` | ws_connection_failures < 1 %, ws_message_failures < 1 % |
| Uploads 50 | `k6 run loadtests/backend/uploads.js` | P95 < 5s ( simple ), P95 < 8s ( chunked ) |
Voir [loadtests/README.md ](../loadtests/README.md ) pour l'exécution complète.
2026-03-02 11:35:49 +00:00
## Commande pprof
```bash
# Profiler 30s pendant un load test
go tool pprof -http=:8081 http://localhost:8080/debug/pprof/profile?seconds=30
```
## Métriques Prometheus
Les middlewares de monitoring exposent `http_request_duration_seconds` avec les labels `method` , `path` , `status` . Utiliser des histogram quantiles pour P50/P95/P99.