5 min lecture • Guide 806 of 877
Gestion des environnements
Des environnements cohérents évitent les surprises. GitScrum aide à suivre quelles fonctionnalités sont déployées où et à coordonner les promotions d'environnement.
Stratégie d'environnement
Types d'environnements
APERÇU DES ENVIRONNEMENTS :
┌─────────────────────────────────────────────────────────────┐
│ │
│ DÉVELOPPEMENT (DEV) : │
│ ────────────────────── │
│ • Développement de fonctionnalités actives │
│ • Déploiements fréquents (plusieurs/jour) │
│ • Peut être instable │
│ • Développeurs ont accès complet │
│ • Données exemples/test │
│ │
│ STAGING : │
│ ──────── │
│ • Environnement similaire production │
│ • Tests pré-production │
│ • Même configuration que production │
│ • Données réalistes (mais pas réelles) │
│ • Déployer avant production │
│ │
│ PRODUCTION (PROD) : │
│ ────────────────── │
│ • Trafic utilisateurs réels │
│ • Exigences de stabilité les plus élevées │
│ • Accès restreint │
│ • Données réelles │
│ • Monitoring et alerting │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ FLUX DE PROMOTION : │
│ │
│ DEV ──────→ STAGING ──────→ PRODUCTION │
│ │ │ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ Tests unit. Intégration Tests smoke │
│ Tests dev Tests QA Monitoring │
│ Approbation │
│ stakeholder │
└─────────────────────────────────────────────────────────────┘
Environnements étendus
ENVIRONNEMENTS ADDITIONNELS :
┌─────────────────────────────────────────────────────────────┐
│ │
│ ENVIRONNEMENTS OPTIONNELS : │
│ │
│ LOCAL : │
│ Machine du développeur │
│ Itération rapide │
│ Peut ne pas correspondre exactement à la production │
│ │
│ QA : │
│ Tests QA dédiés │
│ Stable pour exécution de tests │
│ Gestion des données de test │
│ │
│ UAT (Test d'Acceptation Utilisateur) : │
│ Tests stakeholder/client │
│ Validation métier │
│ Avant sign-off production │
│ │
│ PERFORMANCE/CHARGE : │
│ Tests de performance │
│ Infrastructure à l'échelle │
│ Simulation de charge réaliste │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ MATRICE DES ENVIRONNEMENTS : │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ENV BUT DONNÉES ACCÈS │ │
│ │ ─── ─── ─────── ───── │ │
│ │ Local Développement Mock/Sample Développeur │ │
│ │ Dev Intégration Données test Équipe │ │
│ │ QA Tests Données test QA + Équipe │ │
│ │ UAT Acceptation Sanitisées Stakeholders │ │
│ │ Staging Pré-prod Réalistes Limité │ │
│ │ Prod Live Réelles Très limité │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ PLUS D'ENVIRONNEMENTS = Plus de surcharge │
│ Équilibre : Assez pour le processus, pas trop à gérer │
└─────────────────────────────────────────────────────────────┘
Parité des environnements
Garder les environnements cohérents
PARITÉ DES ENVIRONNEMENTS :
┌─────────────────────────────────────────────────────────────┐
│ │
│ LE PROBLÈME : │
│ ──────────── │
│ "Ça marche en staging, ça casse en production" │
│ │
│ CAUSES : │
│ • Versions OS différentes │
│ • Versions dépendances différentes │
│ • Configuration différente │
│ • Caractéristiques données différentes │
│ • Configuration réseau différente │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ SOLUTIONS : │
│ │
│ CONTENEURISATION : │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Même image Docker sur tous les environnements │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ DEV │ │ STAGING │ │ PROD │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ image: │ │ image: │ │ image: │ │ │
│ │ │ v1.2.3 │ │ v1.2.3 │ │ v1.2.3 │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ ↑ ↑ ↑ │ │
│ │ └──────────────┴──────────────┘ │ │
│ │ Même image, même comportement │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ INFRASTRUCTURE AS CODE : │
│ • Terraform, Pulumi pour l'infrastructure │
│ • Manifestes Kubernetes pour le déploiement │
│ • Ansible pour la configuration │
│ • Versionné, révisable │
│ │
│ GESTION DE CONFIGURATION : │
│ • Variables d'environnement pour les différences │
│ • Gestion des secrets (Vault, AWS Secrets) │
└─────────────────────────────────────────────────────────────┘
Bonnes pratiques
- Utilisez l'infrastructure as code pour toutes les environnements
- Conteneurisez les applications pour la cohérence
- Automatisez les promotions entre environnements
- Gardez les configs séparées du code
- Utilisez les mêmes scripts de déploiement partout
- Testez en staging comme en production
- Surveillez tous les environnements pas juste prod
- Documentez les différences entre environnements