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
- Commencez toujours petit avec l'équipe interne
- Définissez des métriques de succès avant le déploiement
- Préparez le plan de rollback à l'avance
- Surveillez activement à chaque étape
- Documentez le statut dans les tâches GitScrum
- Définissez une date d'expiration pour chaque flag
- Nettoyez rapidement après stabilisation
- Apprenez de chaque déploiement pour améliorer