28 lines
1.2 KiB
Markdown
28 lines
1.2 KiB
Markdown
# Annexe A2 — Estimation de charge
|
||
|
||
## 4 scénarios d'usage
|
||
|
||
| Scénario | Utilisateurs simultanés | Workers Gunicorn | RAM recommandée | vCPU |
|
||
|---|---|---|---|---|
|
||
| Développement local | 2–5 | 1 (serveur Flask dev) | 512 Mo | 1 |
|
||
| Usage promo ydays | 10–30 | 4 (formule 2×2+1≈5, arrondi à 4 threads×2) | 1 Go | 2 |
|
||
| Déploiement département | 50–100 | 9 (2×4+1) | 2 Go | 4 |
|
||
| Pic événementiel | 100–200 | 9–17 selon CPU disponible | 4 Go | 4–8 |
|
||
|
||
## Formule appliquée
|
||
|
||
`workers = 2 × CPU + 1` (formule standard Gunicorn). Configuration retenue
|
||
en production : 4 workers, classe `gthread`, 2 threads par worker
|
||
(`web/Dockerfile` : `gunicorn --workers=4 --worker-class=gthread
|
||
--threads=2 --bind=0.0.0.0:5000 app:app`), dimensionnée pour le scénario
|
||
« usage promo ydays », le plus représentatif de l'usage réel actuel du
|
||
projet.
|
||
|
||
## Disponibilité
|
||
|
||
`restart: unless-stopped` sur tous les services Docker (redémarrage
|
||
automatique en cas de crash), healthcheck MariaDB avec 6 tentatives
|
||
espacées de 10 s avant que Flask ne tente de se connecter (`depends_on:
|
||
condition: service_healthy` dans `docker-compose.yml`), TLS/HTTP2 géré
|
||
automatiquement par Caddy (renouvellement Let's Encrypt sans intervention).
|