GitScrum / Docs
Toutes les Bonnes Pratiques

Feature Flags avec GitScrum | Guide

Déployez fonctionnalités en toute sécurité avec GitScrum. Contrôlez déploiements, lancez expériences et réduisez les risques avec feature flags.

5 min de lecture

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

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