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