# 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).