Le allocazioni dei flag funzionalità di App Lifecycle Manager ti aiutano a testare l'applicazione dividendo le percentuali di traffico. In questo modo, alcuni utenti vedono una variante dell'applicazione, mentre altri ne vedono una diversa, il che ti aiuta a determinare quali varianti o funzionalità hanno più successo (questo processo viene spesso chiamato test A/B). Le allocazioni dei flag funzionalità ti aiutano a definire come suddividere il traffico e a integrare le varianti allocate con la tua applicazione.
Questa guida mostra come definire le varianti, configurare la suddivisione del traffico e integrare le varianti con l'applicazione.
Per semplificare il monitoraggio e l'analisi, devi assegnare ID stringa descrittivi alle varianti (ad es. "sperimentale" e "di base") e utilizzare questi nomi direttamente nel codice e nelle pipeline di analisi.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Hai completato la guida rapida Esegui il deployment dei flag funzionalità o la guida rapida Utilizza i flag funzionalità (autonoma).
- Un ambiente Google Cloud CLI configurato per gestire le risorse App Lifecycle Manager.
Configura l'allocazione di un flag funzionalità
Per configurare un flag funzionalità sperimentale:
Definisci l'attributo randomizzato (ad es.
userID) che verrà utilizzato per il bucketing persistente per garantire un'esperienza coerente per ogni utente.gcloud beta app-lifecycle-manager flags attributes create "user-id-attr" \ --key="userID" \ --attribute-value-type="STRING" \ --location=globalUtilizza una distribuzione per definire la suddivisione (ad esempio 50/50), facendo riferimento agli ID delle varianti descrittive.
# 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"] }'Nel servizio di backend, inizializza l'SDK OpenFeature e inserisci
userIDnel contesto di valutazione. Utilizza il metodoBooleanValueDetails(o equivalente per la tua lingua) per recuperarevariantID(stringa) nella tua applicazione. In questo modo puoi cambiare la logica di backend in base al nome descrittivo anziché solo a un valore booleano.// 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) }Utilizza nomi di varianti descrittivi in modo che la verifica e l'analisi generino automaticamente la documentazione. Per controllare le valutazioni, registra la stringa
details.Variantinsieme alle metriche sul rendimento: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(), )Confrontando le metriche del gruppo "Sperimentale" con quelle del gruppo "Di base", puoi analizzare manualmente se il nuovo algoritmo migliora l'efficienza del backend o la pertinenza della ricerca prima di procedere con un'implementazione completa.
Passaggi successivi
- Scopri di più sulla risoluzione dei problemi.