Essayer gratuitement
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

  1. Utilisez l'infrastructure as code pour toutes les environnements
  2. Conteneurisez les applications pour la cohérence
  3. Automatisez les promotions entre environnements
  4. Gardez les configs séparées du code
  5. Utilisez les mêmes scripts de déploiement partout
  6. Testez en staging comme en production
  7. Surveillez tous les environnements pas juste prod
  8. Documentez les différences entre environnements

Solutions connexes