Essayer gratuitement
6 min lecture Guide 797 of 877

Feature flags et déploiement progressif

Les feature flags séparent le déploiement de la release. GitScrum aide les équipes à suivre les fonctionnalités sous flag et à coordonner les déploiements progressifs.

Bases des feature flags

Pourquoi les feature flags

AVANTAGES DES FEATURE FLAGS :
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ SANS FLAGS :                                                │
│ ────────────                                                │
│ Déployer = Releaser                                         │
│ Tous les utilisateurs ont la feature immédiatement          │
│ Rollback nécessite nouveau déploiement                      │
│ Risque big bang                                             │
│                                                             │
│ AVEC FLAGS :                                                │
│ ───────────                                                 │
│ Déployer ≠ Releaser                                         │
│ Activer quand prêt                                          │
│ Désactiver instantanément si problèmes                      │
│ Déploiement graduel possible                                │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ CAS D'USAGE DES FLAGS :                                     │
│                                                             │
│ TOGGLES DE RELEASE :                                        │
│ Déployer feature incomplète, activer quand terminée         │
│ "Ship dark" - code en prod mais off                         │
│                                                             │
│ TOGGLES D'EXPÉRIMENT :                                      │
│ Tester des features en A/B                                  │
│ Comparer les métriques entre variantes                      │
│                                                             │
│ TOGGLES OPS :                                               │
│ Kill switch pour features problématiques                    │
│ Dégradation gracieuse                                       │
│                                                             │
│ TOGGLES DE PERMISSION :                                     │
│ Features premium pour utilisateurs payants                  │
│ Features beta pour early adopters                           │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ EXEMPLE DE CODE :                                           │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ if (featureFlags.isEnabled('new-search')) {             │ │
│ │   return <NewSearchComponent />;                        │ │
│ │ }                                                        │ │
│ │ return <OldSearchComponent />;                          │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

Déploiement progressif

Stratégie de déploiement

ÉTAPES DE DÉPLOIEMENT PROGRESSIF :
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ ÉTAPE 1 : INTERNE (0.1%)                                    │
│ ─────────────────────────                                   │
│ • Équipe de développement uniquement                        │
│ • Attraper les problèmes évidents                           │
│ • Durée : 1-2 jours                                         │
│                                                             │
│ ÉTAPE 2 : EMPLOYÉS (1%)                                     │
│ ────────────────────────                                    │
│ • Tous les employés de l'entreprise                         │
│ • Tests en conditions réelles                               │
│ • Durée : 1-3 jours                                         │
│                                                             │
│ ÉTAPE 3 : UTILISATEURS BETA (5%)                            │
│ ────────────────────────────────                            │
│ • Early adopters inscrits                                   │
│ • Collecter le feedback                                     │
│ • Durée : 3-5 jours                                         │
│                                                             │
│ ÉTAPE 4 : CANARY (10%)                                      │
│ ─────────────────────                                       │
│ • Échantillon aléatoire d'utilisateurs                      │
│ • Surveiller les métriques                                  │
│ • Durée : 2-3 jours                                         │
│                                                             │
│ ÉTAPE 5 : PARTIEL (25%, 50%)                                │
│ ───────────────────────────                                 │
│ • Population plus large                                     │
│ • Confirmer à l'échelle                                     │
│ • Durée : 1-2 jours chaque                                  │
│                                                             │
│ ÉTAPE 6 : DÉPLOIEMENT COMPLET (100%)                        │
│ ────────────────────────────────────                        │
│ • Tous les utilisateurs                                     │
│ • Continuer la surveillance                                 │
│ • Retirer le flag quand stable                              │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ À CHAQUE ÉTAPE :                                            │
│ • Surveiller les taux d'erreur                              │
│ • Observer les métriques de performance                     │
│ • Collecter le feedback utilisateur                         │
│ • Prêt à pauser ou rollback                                 │
└─────────────────────────────────────────────────────────────┘

Suivi des déploiements

SUIVI DES DÉPLOIEMENTS :
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ TÂCHE FEATURE FLAG :                                        │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ FLAG-012 : Déploiement nouvelle expérience recherche   │ │
│ │                                                         │ │
│ │ NOM DU FLAG : new-search-experience                     │ │
│ │ CRÉÉ : 10 Jan 2025                                      │ │
│ │ PROPRIÉTAIRE : @product-lead                            │ │
│ │                                                         │ │
│ │ PLAN DE DÉPLOIEMENT :                                   │ │
│ │ ☑ 12 Jan : Interne (0.1%)                               │ │
│ │ ☑ 14 Jan : Employés (1%)                                │ │
│ │ ☑ 17 Jan : Utilisateurs beta (5%)                       │ │
│ │ ☑ 20 Jan : Canary (10%)                                 │ │
│ │ ☐ 22 Jan : 25% (approbation en attente)                 │ │
│ │ ☐ 24 Jan : 50%                                          │ │
│ │ ☐ 27 Jan : 100%                                         │ │
│ │ ☐ 10 Fév : Retirer le flag                              │ │
│ │                                                         │ │
│ │ MÉTRIQUES À SURVEILLER :                                │ │
│ │ • Latence recherche (p95 < 200ms)                       │ │
│ │ • Taux de clic (≥ baseline)                             │ │
│ │ • Taux d'erreur (< 0.1%)                                │ │
│ │                                                         │ │
│ │ STATUT ACTUEL : Déploiement 10%                         │ │
│ │ Métriques : Tout au vert ✅                              │ │
│ │                                                         │ │
│ │ TRIGGER DE ROLLBACK :                                   │ │
│ │ • Taux d'erreur > 1%                                    │ │
│ │ • Latence > 500ms                                       │ │
│ │ • Plaintes utilisateurs significatives                  │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

Bonnes pratiques

  1. Commencez toujours petit avec l'équipe interne
  2. Définissez des métriques de succès avant le déploiement
  3. Préparez le plan de rollback à l'avance
  4. Surveillez activement à chaque étape
  5. Documentez le statut dans les tâches GitScrum
  6. Définissez une date d'expiration pour chaque flag
  7. Nettoyez rapidement après stabilisation
  8. Apprenez de chaque déploiement pour améliorer

Solutions connexes