Les allocations de flags de fonctionnalité App Lifecycle Manager vous aident à tester votre application en répartissant les pourcentages de trafic. Ainsi, certains de vos utilisateurs voient une variante de votre application, tandis que d'autres en voient une autre. Vous pouvez ainsi déterminer quelles variantes ou fonctionnalités sont les plus efficaces (ce processus est souvent appelé test A/B). Les allocations de flags de fonctionnalité vous aident à définir comment répartir votre trafic et à intégrer les variantes allouées à votre application.
Ce guide vous explique comment définir des variantes, configurer la répartition du trafic et intégrer des variantes à votre application.
Pour simplifier le suivi et l'analyse, vous devez attribuer des ID de chaîne descriptifs à vos variantes (par exemple, "experimental" et "baseline") et utiliser ces noms directement dans votre code et vos pipelines d'analyse.
Prérequis
À vérifier avant de commencer :
- Vous avez suivi le guide de démarrage rapide Déployer des flags de fonctionnalité ou Utiliser des flags de fonctionnalité (guide de démarrage rapide autonome).
- Vous disposez d'un environnement Google Cloud CLI configuré pour gérer les ressources App Lifecycle Manager.
Configurer une allocation de flag de fonctionnalité
Pour configurer un flag de fonctionnalité expérimentale :
Définissez l'attribut aléatoire (par exemple,
userID) qui sera utilisé pour le bucketing persistant afin de garantir une expérience cohérente pour chaque utilisateur.gcloud beta app-lifecycle-manager flags attributes create "user-id-attr" \ --key="userID" \ --attribute-value-type="STRING" \ --location=globalUtilisez une allocation pour définir la répartition (50/50, par exemple) en référençant vos ID de variante descriptifs.
# Create a flag with explicitly named variants for the experiment and a 50/50 allocation referencing the custom IDs gcloud beta app-lifecycle-manager flags create "search-algo-test" \ --key="search-algo-test" \ --flag-value-type=BOOL \ --location="global" \ --unit-kind="demo-test-unitkind" \ --variants='[ { "id": "experimental", "booleanValue": true }, { "id": "baseline", "booleanValue": false } ]'\ --evaluation-spec='{ "allocations": [{ "id": "search-split-50-50", "randomizedOn": "userID", "slots": [ {"variant": "baseline", "weight": 50}, {"variant": "experimental", "weight": 50} ] }], "defaultTarget": "search-split-50-50", "attributes": ["projects/PROJECT_ID/locations/global/flagAttributes/user-id-attr"] }'Dans votre service de backend, initialisez le SDK OpenFeature et injectez le
userIDdans le contexte d'évaluation. Utilisez la méthodeBooleanValueDetails(ou l'équivalent pour votre langage) pour récupérer levariantID(chaîne) dans votre application. Vous pouvez ainsi modifier la logique de votre backend en fonction du nom descriptif plutôt que d'une simple valeur booléenne.// 1. Prepare evaluation context evalCtx := map[string]any{"userID": currentUser.ID} // 2. Fetch evaluation details to get the variant name details, err := client.BooleanValueDetails(ctx, "search-algo-test", false, evalCtx) // 3. Execute logic based on the Variant ID (string name) if details.Variant == "experimental" { results = search.ExperimentalV2(query) } else { results = search.BaselineV1(query) }Utilisez des noms de variantes descriptifs pour que votre audit et votre analyse génèrent automatiquement de la documentation. Pour auditer les évaluations, enregistrez la chaîne
details.Variantavec vos métriques de performances :startTime := time.Now() // ... perform search ... duration := time.Since(startTime) // Audit: Log the descriptive variant name ("experimental" or "baseline") logger.Info("Search performed", "variant", details.Variant, "latency_ms", duration.Milliseconds(), )En comparant les métriques du groupe "Experimental" à celles du groupe "Baseline", vous pouvez analyser manuellement si le nouvel algorithme améliore l'efficacité du backend ou la pertinence de la recherche avant de procéder à un déploiement complet.