5 min lecture • Guide 339 of 877
Gestion des feature flags
Les feature flags découplent le déploiement de la release. Déployez le code quand il est prêt, releasez les fonctionnalités quand vous êtes confiant. Cela permet des déploiements plus sûrs, des rollbacks plus faciles et de meilleurs tests. Ce guide couvre les approches pratiques de gestion des feature flags.
Types de flags
| Type | But | Durée de vie |
|---|---|---|
| Release | Déploiement graduel | Courte |
| Expériment | Tests A/B | Moyenne |
| Ops | Kill switch | Longue |
| Permission | Fonctionnalités client | Permanente |
Implémentation de base
Feature flags simples
BASES DES FEATURE FLAGS
═══════════════════════
IMPLÉMENTATION SIMPLE :
─────────────────────────────────────
Vérification basique de flag :
// Configuration
const FLAGS = {
newCheckout: true,
darkMode: false,
betaFeatures: true,
};
// Usage
if (FLAGS.newCheckout) {
return <NewCheckoutFlow />;
} else {
return <OldCheckoutFlow />;
}
CONFIGURATION EXTERNE :
─────────────────────────────────────
Flags depuis le serveur :
// Récupérer les flags au démarrage
const flags = await fetchFlags(userId);
// Usage
if (flags.isEnabled('newCheckout')) {
return <NewCheckoutFlow />;
}
// Avantages :
// - Changer sans déployer
// - Flags spécifiques utilisateur
// - Déploiements en pourcentage
// - Analytics intégrés
FOURNISSEURS DE SERVICES FLAG :
─────────────────────────────────────
Services populaires :
├── LaunchDarkly
├── Split.io
├── ConfigCat
├── Unleash (open source)
├── Flagsmith (open source)
└── Choisir selon les besoins
Stratégies de déploiement
Release graduelle
STRATÉGIES DE DÉPLOIEMENT
═════════════════════════
DÉPLOIEMENT EN POURCENTAGE :
─────────────────────────────────────
Augmentation graduelle :
Jour 1 : 1% des utilisateurs
├── Surveiller les erreurs
├── Vérifier la performance
├── Observer les métriques
└── Petit rayon d'impact
Jour 2 : 10% des utilisateurs
├── Plus de trafic
├── Plus confiant
├── Encore contrôlé
└── Rollback facile
Jour 3 : 50% des utilisateurs
├── Moitié du trafic
├── Validation significative
├── Presque là
└── Prêt pour 100% ?
Jour 4 : 100% des utilisateurs
├── Déploiement complet
├── Fonctionnalité live
├── Flag peut être retiré
└── Terminé !
DÉPLOIEMENT CIBLÉ :
─────────────────────────────────────
Utilisateurs spécifiques d'abord :
├── Employés internes d'abord
├── Puis utilisateurs beta
├── Puis pourcentage de tous
├── Puis release complète
└── Construction de confiance par étapes
// Règles de ciblage
flag.targets = [
{ type: 'email', contains: '@company.com' }, // Staff
{ type: 'segment', equals: 'beta_users' }, // Beta
{ type: 'percentage', value: 10 }, // 10%
];
RELEASE CANARY :
─────────────────────────────────────
├── Combiner avec déploiement canary
├── Flag activé sur instances canary
├── Double filet de sécurité
├── Très contrôlé
└── Sécurité maximale
Cycle de vie des flags
De la création au retrait
CYCLE DE VIE DES FEATURE FLAGS
══════════════════════════════
CRÉATION :
─────────────────────────────────────
À la création du flag :
├── Nom : descriptif, cohérent
├── Propriétaire : qui est responsable
├── But : pourquoi ce flag existe
├── Expiration : quand le retirer
└── Documentation : comment l'utiliser
DÉVELOPPEMENT :
─────────────────────────────────────
├── Implémenter la feature derrière le flag
├── Tester avec flag on/off
├── Déployer en prod (flag off)
└── Prêt pour le rollout
ROLLOUT :
─────────────────────────────────────
├── Activer pour interne → beta → % graduel
├── Surveiller les métriques à chaque étape
├── Pause/rollback si problèmes
└── Atteindre 100%
STABILISATION :
─────────────────────────────────────
├── 100% déployé
├── Surveiller 1-2 semaines
├── Confirmer que c'est stable
└── Prêt pour le nettoyage
NETTOYAGE :
─────────────────────────────────────
├── Retirer les checks de flag du code
├── Supprimer la config du flag
├── Mettre à jour la documentation
└── Flag complètement retiré
Bonnes pratiques
- Nommez les flags clairement avec convention cohérente
- Définissez un propriétaire pour chaque flag
- Fixez une date d'expiration pour les flags temporaires
- Documentez le but et les critères de rollout
- Surveillez à chaque étape du déploiement
- Nettoyez rapidement après stabilisation
- Auditez régulièrement les flags actifs
- Évitez le suremballage de flags