Les flags de fonctionnalité d'App Lifecycle Manager vous permettent de contrôler la disponibilité et le comportement des fonctionnalités de vos applications, sans nécessiter de nouveaux déploiements de code ni de modifications d'infrastructure.
Vous pouvez utiliser les flags de deux manières principales :
- Intégrée : associez la gestion des flags aux déploiements de votre application gérés par App Lifecycle Manager.
- Autonome : utilisez le système de flags robuste de manière indépendante, même si l'infrastructure de votre application est gérée ailleurs, en modélisant les composants de votre système en tant qu'unités App Lifecycle Manager.
Les flags de fonctionnalité s'intègrent aux concepts de base d'App Lifecycle Manager, tels que les unités et les déploiements. Vous pouvez ainsi gérer les configurations de flags en même temps que l'infrastructure de votre application (approche intégrée).
Consultez la présentation principale d'App Lifecycle Manager si vous ne connaissez pas les unités ou les déploiements d'App Lifecycle Manager.
Pourquoi utiliser les flags de fonctionnalité d'App Lifecycle Manager ?
Lorsque vous implémentez des flags de fonctionnalité avec App Lifecycle Manager, vous bénéficiez de plusieurs avantages pour le cycle de vie de développement et d'exploitation de votre solution SaaS :
- Dissociez les versions de fonctionnalités des déploiements de code : envoyez du nouveau code en production avec les fonctionnalités désactivées par défaut. Activez les fonctionnalités pour des utilisateurs spécifiques ou déployez-les progressivement lorsqu'elles sont prêtes, ce qui réduit les risques associés aux déploiements à grande échelle.
- Améliorez la sécurité, la rapidité et la fiabilité
- Testez les fonctionnalités en production auprès d'une audience limitée (versions Canary).
- Effectuez des déploiements progressifs à l'aide des fonctionnalités de déploiement d'App Lifecycle Manager, ce qui minimise l'impact des problèmes potentiels.
- Activez les listes d'autorisation et la personnalisation des locataires : activez ou désactivez des fonctionnalités pour les unités qui peuvent représenter des locataires, des services ou des environnements.
- Simplifiez les rollbacks : lorsque vous désactivez un flag de fonctionnalité, l'opération est souvent beaucoup plus rapide et moins perturbatrice que le déploiement d'une version précédente de votre application. Ce workflow vous permet de désactiver les fonctionnalités problématiques sans effectuer de rollback des binaires.
- Gestion unifiée des configurations de flags : gérez les définitions des flags de fonctionnalité et utilisez-les pour configurer les déploiements. Ce workflow assure la fiabilité opérationnelle en vous permettant de modifier les fonctionnalités de votre application en créant des déploiements de flags de fonctionnalité.
Fonctionnement des flags de fonctionnalité d'App Lifecycle Manager
L'utilisation de flags de fonctionnalité dans App Lifecycle Manager implique deux aspects principaux : le plan de gestion (définition et déploiement des flags) et le plan de données (accès aux valeurs des flags dans votre application).
Utilisation intégrée avec App Lifecycle Manager
Si vous utilisez App Lifecycle Manager pour gérer les déploiements de votre application (par exemple, en déployant l'infrastructure à l'aide de plans Terraform) :
- Définissez des flags : créez des ressources de flags de fonctionnalité dans App Lifecycle Manager, en spécifiant une
Flag keyunique (par exemple,enable-new-dashboard) et en l'associant à un type d'unité. Les flags booléens sont acceptés. - Provisionnez les modifications de flags : les modifications apportées aux flags (création ou mise à jour) ne sont pas mises en ligne tant que vous n'avez pas lancé de déploiement App Lifecycle Manager. Vous pouvez ainsi utiliser des fonctionnalités telles que les lots, la supervision et les vérifications de sécurité pour les déploiements de flags. Le déploiement met à jour la configuration de flags associée aux unités ciblées.
- Accédez aux flags dans l'application : le code de votre application, qui s'exécute dans l'unité provisionnée (par exemple, dans un conteneur sur Cloud Run ou Google Kubernetes Engine), utilise un SDK OpenFeature configuré avec le fournisseur
flagd. Ce fournisseur se connecte au point de terminaison de servicesaasconfig.googleapis.com. À l'aide d'App Lifecycle Manager, injectez l'identifiant d'unité nécessaire dans l'environnement de votre application, ce qui permet au SDK de récupérer les valeurs de flags correctes pour cette unité spécifique.
Cette intégration approfondie vous permet de gérer les cycles de vie des fonctionnalités en même temps que les cycles de vie de l'infrastructure. Pour obtenir un exemple pratique, consultez le guide de démarrage rapide Déployer des flags de fonctionnalité.
Plan de gestion
Vous interagissez avec le plan de gestion pour définir et contrôler vos flags. Vous pouvez utiliser Google Cloud la console, la gcloud CLI ou l'API App Lifecycle Manager pour :
- Créer ou mettre à jour des flags : pour définir des flags, spécifiez la
Flag key, associez-la à un type d'unité, puis définissez son type et sa valeur par défaut. - Créer des déploiements : vous lancez un déploiement pour distribuer les modifications de flags (créations ou mises à jour) aux unités ciblées appartenant au type d'unité du flag. Les déploiements garantissent que les modifications sont appliquées de manière sûre et fiable conformément aux règles que vous avez configurées.
Plan de données
Le code de votre application interagit avec le plan de données pour consommer les valeurs des flags :
- SDK OpenFeature : intégrez le SDK OpenFeature indépendant du fournisseur à votre application.
- Fournisseur
flagd: configurez le SDK OpenFeature pour qu'il utilise le fournisseurflagd. - Configuration : pointez le fournisseur
flagdvers le point de terminaison du service de flags de fonctionnalité d'App Lifecycle Manager :saasconfig.googleapis.com:443. - Ciblage : fournissez le
provider_idpour identifier la configuration du flag. Cette valeur correspond généralement au nom complet de la ressource de l'unité App Lifecycle Manager (par exemple,projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID). - Authentification : le fournisseur utilise les identifiants par défaut de l'application (ADC) pour authentifier de manière sécurisée les requêtes adressées au point de terminaison du Google Cloud service. Le compte de service utilisé doit disposer du rôle Identity and Access Management
roles/saasconfig.viewer. - Évaluation des flags : utilisez les méthodes OpenFeature standards (
client.get_boolean_value(...)) dans votre code pour vérifier les valeurs des flags. Le fournisseur gère la récupération de la dernière configuration déployée à partir du service.
App Lifecycle Manager fournit des implémentations et des exemples de référence pour l'intégration au plan de données :
Types de valeurs des flags de fonctionnalité
Les flags de fonctionnalité d'App Lifecycle Manager sont compatibles avec plus que les évaluations booléennes standards (activation/désactivation). Vous pouvez définir des flags avec des valeurs STRING, INTEGER ou DOUBLE pour contrôler des variables opérationnelles complexes telles que les seuils d'exécution, les paramètres de thème ou les limites de configuration.
Contrairement aux indicateurs booléens, vous devez définir explicitement les indicateurs non booléens lors de la création pour déterminer l'univers des types de retour possibles.
Flags de chaîne
Les flags de chaîne transmettent directement les identifiants de configuration aux clients connectés.
gcloud beta app-lifecycle-manager flags create "feature-mode" \
--key="feature-mode" \
--flag-value-type=STRING \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "standard", "stringValue": "STANDARD"}, {"id": "advanced", "stringValue": "ADVANCED"}]' \
--evaluation-spec='{"defaultTarget": "standard"}'
Flags entiers
Les flags entiers régissent les limites numériques exactes et les limites de charge utile.
gcloud beta app-lifecycle-manager flags create "max-retry-count" \
--key="max-retry-count" \
--flag-value-type=INTEGER \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "low", "integerValue": 3}, {"id": "high", "integerValue": 10}]' \
--evaluation-spec='{"defaultTarget": "low"}'
Flags doubles
Les flags doubles fournissent des valeurs de haute précision utilisées pour les seuils de probabilité ou les paramètres flottants.
gcloud beta app-lifecycle-manager flags create "sampling-rate" \
--key="sampling-rate" \
--flag-value-type=DOUBLE \
--location="global" \
--unit-kind="demo-test-unitkind" \
--variants='[{"id": "minimal", "doubleValue": 0.01}, {"id": "full", "doubleValue": 1.0}]' \
--evaluation-spec='{"defaultTarget": "minimal"}'
Provisionner des flags de fonctionnalité à l'aide de déploiements
App Lifecycle Manager assure la sécurité des modifications ou des mises à jour à grande échelle en utilisant des déploiements pour provisionner les mises à jour des flags de fonctionnalité.
Sans déploiements par étapes, une modification mineure de la configuration des flags (activation d'une fonctionnalité pour 1 % des utilisateurs, par exemple) se propage instantanément à toutes les instances d'application. Si cette fonctionnalité introduit une régression, des problèmes peuvent survenir simultanément dans l'ensemble de votre infrastructure. Cette propagation globale augmente considérablement le risque d'impact généralisé sur le service.
Les déploiements App Lifecycle Manager atténuent ce risque en permettant une distribution progressive et contrôlée des modifications de flags, ce qui limite la portée potentielle des problèmes imprévus.
Ensembles de flags de fonctionnalité
Les ensembles de flags de fonctionnalité regroupent plusieurs flags de fonctionnalité et vous permettent de les gérer en tant que ressource logique unique. Cela est utile pour publier des fonctionnalités qui nécessitent la coordination de plusieurs flags.
En savoir plus sur les ensembles de flags.
Fichiers manifestes
Les fichiers manifestes vous permettent de définir et de gérer des flags de fonctionnalité à l'aide de fichiers JSON. Vous pouvez envoyer ces définitions à l'API App Lifecycle Manager ou extraire des configurations existantes pour générer des accesseurs de type sécurisé pour votre application.
En savoir plus sur les fichiers manifestes.
Ciblage complexe
Vous pouvez utiliser le langage CEL (Common Expression Language) pour créer des règles de ciblage sophistiquées basées sur les attributs des utilisateurs ou des requêtes afin de contrôler précisément les fonctionnalités que les utilisateurs voient.
En savoir plus sur le ciblage complexe.
Architecture mutualisée
Vous pouvez utiliser des déploiements mutualisés avec App Lifecycle Manager si vous ciblez des flags sur des unités ou des groupes d'unités spécifiques (à l'aide d'étiquettes ou de locataires). Vous pouvez également implémenter des déploiements progressifs dans l'ensemble de votre parc de locataires.
En savoir plus sur l'architecture mutualisée.
Allouer des flags de fonctionnalité
Définissez des allocations (telles que expérimentales ou de référence) et utilisez la répartition du trafic pour effectuer des tests ou des déploiements aléatoires.
En savoir plus sur les allocations de flags de fonctionnalité.
Étape suivante
- Essayez le guide de démarrage rapide Déployer des flags de fonctionnalité pour intégrer des flags à un déploiement géré par App Lifecycle Manager.
- Consultez la présentation principale d'App Lifecycle Manager si vous êtes un nouvel utilisateur de la plate-forme.