Essayer gratuitement
5 min lecture Guide 759 of 877

Gestion des feature flags avec GitScrum

Les feature flags découplent le déploiement de la release. GitScrum aide les équipes à suivre les fonctionnalités contrôlées par flag et à coordonner les déploiements efficacement.

Bases des feature flags

Ce que permettent les flags

CAS D'USAGE DES FEATURE FLAGS :
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ DÉPLOIEMENT GRADUEL :                                       │
│ Déployer à 1% → 10% → 50% → 100%                           │
│ Surveiller les métriques à chaque étape                     │
│ Rollback instantané si problèmes                            │
│                                                             │
│ DARK LAUNCHING :                                            │
│ Code déployé mais caché des utilisateurs                    │
│ Permet les tests d'intégration en production                │
│ Aucun risque pour les utilisateurs                          │
│                                                             │
│ TESTS A/B :                                                 │
│ 50% voient version A, 50% voient version B                  │
│ Mesurer quelle version performe mieux                       │
│ Décisions basées sur les données                            │
│                                                             │
│ KILL SWITCH :                                               │
│ Désactiver une fonctionnalité problématique instantanément  │
│ Aucun déploiement nécessaire                                │
│ Minutes vs heures pour répondre                             │
│                                                             │
│ ACCÈS BETA :                                                │
│ Activer pour utilisateurs/clients spécifiques               │
│ Collecter le feedback avant release large                   │
│ Contrôle d'accès aux fonctionnalités premium                │
│                                                             │
│ CONTRÔLES OPÉRATIONNELS :                                   │
│ Activer/désactiver fonctionnalités coûteuses sous charge    │
│ Dégradation gracieuse                                       │
│ Circuit breakers                                            │
│                                                             │
│ TRUNK-BASED DEVELOPMENT :                                   │
│ Fonctionnalités incomplètes derrière des flags              │
│ Merger sur main fréquemment                                 │
│ Pas de branches de fonctionnalités à longue durée           │
└─────────────────────────────────────────────────────────────┘

Types de flags

Catégoriser les flags

TYPES DE FEATURE FLAGS :
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ FLAGS DE RELEASE (courte durée) :                           │
│ ─────────────────────────────────                           │
│ But : Contrôler le déploiement de nouvelles fonctionnalités │
│ Durée de vie : Jours à semaines                             │
│ Exemple : new_dashboard_enabled                             │
│                                                             │
│ Créer → Déployer → Retirer                                  │
│ DOIT être retiré après déploiement 100%                     │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ FLAGS D'EXPÉRIMENT (courte durée) :                         │
│ ─────────────────────────────────────                       │
│ But : Tests A/B                                             │
│ Durée de vie : Durée de l'expérience                        │
│ Exemple : checkout_flow_experiment                          │
│                                                             │
│ Créer → Lancer expérience → Choisir gagnant → Retirer       │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ FLAGS DE PERMISSION (longue durée) :                        │
│ ───────────────────────────────────                         │
│ But : Droits/accès aux fonctionnalités                      │
│ Durée de vie : Permanente ou cycle de vie produit           │
│ Exemple : premium_analytics_enabled                         │
│                                                             │
│ Ce sont essentiellement des fonctionnalités produit         │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ FLAGS OPÉRATIONNELS (longue durée) :                        │
│ ─────────────────────────────────────                       │
│ But : Contrôle du comportement système                      │
│ Durée de vie : Permanente                                   │
│ Exemple : enable_caching, rate_limit_mode                   │
│                                                             │
│ Utilisés pour les ops, pas les fonctionnalités              │
└─────────────────────────────────────────────────────────────┘

Cycle de vie des flags

Création des flags

WORKFLOW DE CRÉATION DE FLAG :
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ QUAND CRÉER UN FLAG :                                       │
│                                                             │
│ Pendant le développement :                                  │
│ • Nouvelle fonctionnalité utilisateur                       │
│ • Changement risqué                                         │
│ • Dépendance inter-équipes                                  │
│ • Fonctionnalité nécessitant déploiement graduel            │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ CONVENTION DE NOMMAGE DES FLAGS :                           │
│                                                             │
│ Format : [scope]_[fonctionnalité]_[type]                    │
│                                                             │
│ Exemples :                                                  │
│ • dashboard_new_charts_release                              │
│ • checkout_one_click_experiment                             │
│ • premium_analytics_permission                              │
│ • cache_disable_operational                                 │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ TÂCHE GITSCRUM :                                            │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ PROJ-123 : Nouveaux graphiques du dashboard             │ │
│ │                                                         │ │
│ │ Feature Flag :                                          │ │
│ │ Nom : dashboard_new_charts_release                      │ │
│ │ Type : Flag de release                                  │ │
│ │ Créé : 2024-01-15                                       │ │
│ │ Propriétaire : @alex                                    │ │
│ │ Nettoyage prévu : 2024-02-15                            │ │
│ │                                                         │ │
│ │ Plan de déploiement :                                   │ │
│ │ ☐ 5% - Tests internes                                   │ │
│ │ ☐ 20% - Clients beta                                    │ │
│ │ ☐ 50% - Disponibilité générale                          │ │
│ │ ☐ 100% - Déploiement complet                            │ │
│ │ ☐ Retirer le flag (nettoyage)                           │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

Bonnes pratiques

  1. Nommez les flags de façon cohérente avec scope et type
  2. Définissez un propriétaire responsable du flag
  3. Documentez le but et la date d'expiration prévue
  4. Suivez le statut de déploiement dans GitScrum
  5. Surveillez les métriques à chaque étape
  6. Nettoyez les anciens flags rapidement
  7. Évitez la dette de flags avec des audits réguliers
  8. Catégorisez par type pour gérer les durées de vie

Solutions connexes