Les indicateurs de fonctionnalités sont une technique puissante qui vous permet de contrôler la disponibilité des fonctionnalités en temps réel. Voyons comment les mettre en œuvre efficacement dans votre environnement de production.
Que sont les indicateurs de fonctionnalités ?
Les indicateurs de fonctionnalités (ou basculements de fonctionnalités) sont des mécanismes qui permettent :
- Activer/désactiver des fonctionnalités sans déploiement
- Tester les fonctionnalités avec des utilisateurs spécifiques
- Effectuer des restaurations rapides en cas de problèmes
- Mettre en œuvre des déploiements progressifs
Types d'indicateurs de fonctionnalités
1. Par environnement
interface EnvironmentFlag { name: string; environments: { development: boolean; staging: boolean; production: boolean; }; default: boolean; }
2. Par utilisateur
interface UserFlag { name: string; type: 'percentage' | 'specific' | 'custom'; rules: { percentage?: number; userIds?: string[]; customRule?: (user: User) => boolean; }; }
Mise en œuvre pratique
1. Structure de base
class FeatureFlagManager { private flags: Map<string, FeatureFlag>; constructor() { this.flags = new Map(); } isEnabled(flagName: string, context: FlagContext): boolean { const flag = this.flags.get(flagName); if (!flag) return false; return flag.evaluate(context); } async updateFlag(flagName: string, config: FlagConfig): Promise<void> { // Implementação da atualização } }
2. Intégration back-end
// Exemplo com Express app.use(async (req, res, next) => { const context = { userId: req.user?.id, environment: process.env.NODE_ENV, timestamp: Date.now() }; req.featureFlags = await featureFlagManager.getFlags(context); next(); });
Déploiements progressifs
1. Stratégies de déploiement
Un déploiement progressif se déroule par étapes, élargissant l'exposition à mesure que la confiance augmente. Une progression typique commence à partir de la fonctionnalité terminée et se déroule comme ceci :
- 5%, utilisateurs bêta, premier groupe à recevoir l'actualité.
- 25%, utilisateurs actifs, avec la fonctionnalité déjà validée dans le groupe initial.
- 50 %, majorité des utilisateurs.
- 100%, disponibilité pour toute la base.
Chaque saut n'a lieu qu'une fois que les métriques de l'étape précédente ont confirmé la stabilité.
2. Surveillance
interface RolloutMetrics { flagName: string; totalUsers: number; enabledUsers: number; errorRate: number; performanceMetrics: { responseTime: number; errorCount: number; }; }
Outils et services
1. Auto-hébergé
-
🏠 Libérez -Open source
- Contrôle total
- API REST
- Tableau de bord
-
🏢 Fabricant de drapeaux
- SDK pour plusieurs langues
- Tests A/B
- Analyse
2. Basé sur le cloud
-
☁️ LancerDarkly
- Gestion centralisée
- Analyses avancées
- Intégrations prêtes à l'emploi
-
🌐 Split.io
- Expérimentation
- Segmentation avancée
- Surveillance en temps réel
Bonnes pratiques
1. Nomenclature
// Exemplos de nomes claros const FLAGS = { NEW_CHECKOUT_FLOW: 'new-checkout-flow-v2', DARK_MODE_BETA: 'dark-mode-beta-test', PAYMENT_GATEWAY_MIGRATION: 'payment-gateway-migration' };
2. Documentation
Chaque drapeau mérite une forme courte et standardisée. Pour new-checkout-flow-v2, par exemple, la documentation couvrirait :
- Description : mise en place de la nouvelle version du flux de paiement.
- États : Développement activé, Staging activé, Production en déploiement progressif (25 %).
- Dépendances : passerelle de paiement v2 et service de validation d'adresse.
- Plan de déploiement : 5 % (bêta), 25 % (actif), 50 % (majoritaire), 100 % (tous).
Cet enregistrement évite que les drapeaux ne deviennent une dette technique oubliée et donne un contexte à ceux qui doivent décider s'il faut avancer ou retirer le drapeau.
Surveillance et alertes
1. Indicateurs essentiels
interface FlagMetrics { name: string; enabledCount: number; totalRequests: number; errorRate: number; performanceImpact: { p50: number; p95: number; p99: number; }; }
2. Alertes
alerts: - name: high_error_rate condition: error_rate > 1% action: disable_flag - name: performance_degradation condition: p95 > 500ms action: notify_team
Cas d'utilisation
1. Déploiement sécurisé
Le cycle de déploiement sécurisé ferme une boucle de rétroaction entre quatre acteurs. Le développeur active le drapeau pour une première fraction d'utilisateurs (5%). L'indicateur de fonctionnalité alimente le système de surveillance avec des mesures d'utilisation, d'erreur et de performances. Monitoring compare ces chiffres aux seuils définis et, chaque fois qu'une limite est dépassée, le système d'alerte avertit le développeur, qui décide d'avancer ou d'inverser le déploiement. C’est cette boucle continue qui sécurise la livraison incrémentielle.
2. Restauration rapide
async function handleError(flagName: string, error: Error) { // Desativa flag imediatamente await featureFlagManager.disable(flagName); // Notifica equipe await notifyTeam({ type: 'FLAG_ERROR', flagName, error: error.message, timestamp: new Date() }); // Registra métricas await metrics.recordRollback(flagName); }
Conclusion
Les indicateurs de fonctionnalités sont essentiels pour :
- Déploiement sécurisé
- Tests de production
- Retours rapides
- Expériences contrôlées
- Surveillance efficace
Prochaines étapes
- Choisissez votre outil
- Définir les normes de dénomination
- Mettre en œuvre le suivi
- Créer des documents
- Former l'équipe
Vous souhaitez partager votre expérience avec les indicateurs de fonctionnalités ? Laissez un commentaire ci-dessous !
A lire aussi
- Feature Flags : Guide complet des versions sécurisées -Feature flags : outils et éléments à prendre en compte avant de les adopter dans l'entreprise
- Feature flags dans les startups : les outils qui valent l'investissement
- KV pour la limitation de débit, les indicateurs de fonctionnalités et la configuration distribuée : où ça marche et où ça ne marche pas
- Docker pour la production : créer des images légères et sécurisées
- Kubernetes en production : ce que personne ne vous dit avant de migrer
