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 de l'infrastructure.
Vous pouvez utiliser les options de deux manières principales :
- Intégration : associez la gestion des flags à vos déploiements d'applications gérés par App Lifecycle Manager.
- Autonome : utilisez le système de signalement 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. Cela vous permet de gérer les configurations de flag 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 ?
L'implémentation de flags de fonctionnalité avec App Lifecycle Manager offre plusieurs avantages pour le cycle de vie de développement et d'exploitation de votre SaaS :
- Dissociez les lancements de fonctionnalités des déploiements de code : déployez du nouveau code en production avec les fonctionnalités désactivées par défaut. Activez des fonctionnalités pour des utilisateurs spécifiques ou déployez-les progressivement lorsqu'elles sont prêtes, afin de réduire les risques associés aux déploiements à grande échelle.
- Améliorez la sécurité, la vitesse et la fiabilité :
- Tester des 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, afin de minimiser l'impact des problèmes potentiels.
- Activer la liste d'autorisation et la personnalisation des locataires : activez ou désactivez des fonctionnalités pour les unités pouvant représenter des locataires, des services ou des environnements.
- Simplifier les rollbacks : la désactivation d'un flag de fonctionnalité est souvent beaucoup plus rapide et moins perturbante 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 de 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és.
Fonctionnement des flags de fonctionnalité 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 vos applications (par exemple, pour déployer une infrastructure à l'aide de plans Terraform) :
- Définir des flags : créez des ressources de flag de fonctionnalité dans App Lifecycle Manager, en spécifiant un
Flag keyunique (enable-new-dashboard, par exemple) et en l'associant à un type d'unité. Les options booléennes sont acceptées. - Provisionner les modifications d'options : les modifications apportées aux options (création ou mises à jour) ne sont pas appliquées tant que vous n'avez pas lancé un déploiement App Lifecycle Manager. Cela vous permet d'utiliser des fonctionnalités telles que les lots, la supervision et les contrôles de sécurité pour les déploiements de flags. Le déploiement met à jour la configuration des flags associée aux unités ciblées.
- Accéder aux indicateurs 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 du 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 flag appropriées pour cette unité spécifique.
Cette intégration poussée vous permet de gérer les cycles de vie des fonctionnalités en même temps que ceux de l'infrastructure. Pour obtenir un exemple pratique, consultez le guide de démarrage rapide sur le déploiement de flags de fonctionnalité.
Plan de gestion
Vous interagissez avec le plan de gestion pour définir et contrôler vos flags. Vous pouvez utiliser la console Google Cloud , la gcloud CLI ou l'API App Lifecycle Manager pour :
- Créer ou mettre à jour des indicateurs : pour définir des indicateurs, vous spécifiez le
Flag key, l'associez à un type d'unité, et 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 flag (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 utiliser le fournisseurflagd. - Configuration : faites pointer le fournisseur
flagdvers le point de terminaison du service de flag de fonctionnalité d'App Lifecycle Manager :saasconfig.googleapis.com:443. - Ciblage : indiquez le
provider_idpour identifier la configuration de l'indicateur. Cette valeur correspond généralement au nom complet de la ressource de l'unité App Lifecycle Manager (projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID, par exemple). - 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 service Google Cloud . 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 de référence et des exemples d'intégration au plan de données :
Types de valeurs de flag de fonctionnalité
Les flags de fonctionnalité d'App Lifecycle Manager ne se limitent pas aux évaluations booléennes standards (activé/désactivé). Vous pouvez définir des flags avec des valeurs STRING, INTEGER ou DOUBLE pour contrôler des variables opérationnelles complexes telles que des seuils d'exécution, des paramètres de thème ou des limites de configuration.
Contrairement aux flags booléens, vous devez définir explicitement les flags non booléens lors de la création pour déterminer l'univers des types renvoyés possibles.
Indicateurs de chaîne
Les flags de chaîne transmettent les identifiants de configuration directement 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 d'entiers
Les options de type entier 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"}'
Double avertissement
Les options 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 garantit des modifications ou des mises à jour sécurisées à grande échelle en utilisant des déploiements pour provisionner les mises à jour des flags de fonctionnalité.
Sans déploiement par étapes, une modification mineure de la configuration d'un flag (par exemple, l'activation d'une fonctionnalité pour 1% des utilisateurs) se propage instantanément à toutes les instances de l'application. Si cette fonctionnalité introduit une régression, des problèmes peuvent se produire simultanément sur 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 l'impact potentiel de tout problème imprévu.
Ensembles de flags de fonctionnalité
Les ensembles de flags de fonctionnalité regroupent plusieurs flags de fonctionnalité et vous permettent de les gérer comme une seule ressource logique. Cela est utile pour lancer des fonctionnalités qui nécessitent la coordination de plusieurs indicateurs.
En savoir plus sur les ensembles d'options
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 transférer ces définitions vers l'API App Lifecycle Manager ou extraire des configurations existantes pour générer des accesseurs avec sûreté du typage 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 de l'utilisateur ou de la requête, afin de contrôler précisément quels utilisateurs voient quelles fonctionnalités.
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 vers des unités ou des groupes d'unités spécifiques (à l'aide de libellés ou de locataires). Vous pouvez également implémenter des déploiements progressifs dans votre parc de locataires.
En savoir plus sur l'architecture mutualisée
Allouer des flags de fonctionnalité
Définissez des allocations (telles que expérimentale 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é
Étapes suivantes
- Suivez le guide de démarrage rapide sur le déploiement de flags de fonctionnalité pour intégrer des flags à un déploiement géré par App Lifecycle Manager.
- Si vous débutez sur la plate-forme, consultez la présentation principale d'App Lifecycle Manager.