As alocações flag de recurso do App Lifecycle Manager ajudam a testar o aplicativo dividindo as porcentagens de tráfego. Isso permite que alguns usuários vejam uma variante do aplicativo, enquanto outros veem uma variante diferente, ajudando você a determinar quais variantes ou recursos são mais bem-sucedidos. Esse processo é geralmente chamado de teste A/B. As alocações de flags de recursos ajudam a definir como dividir o tráfego e integrar as variantes alocadas ao aplicativo.
Neste guia, mostramos como definir variantes, configurar a divisão de tráfego e integrar variantes ao aplicativo.
Para simplificar o acompanhamento e a análise, atribua IDs de string descritivos às suas variantes (por exemplo, "experimental" e "baseline") e use esses nomes diretamente no seu código e nos pipelines de análise.
Pré-requisitos
Antes de começar, verifique se você atende a estes requisitos:
- Concluiu o guia de início rápido sobre como implantar flags de recurso ou usar flags de recurso (guia de início rápido independente).
- Um ambiente da Google Cloud CLI configurado para gerenciar recursos do App Lifecycle Manager.
Configurar uma alocação de flag de recurso
Para configurar uma flag de recurso experimental:
Defina o atributo aleatório (por exemplo,
userID) que será usado para o agrupamento fixo, garantindo uma experiência consistente para cada usuário.gcloud beta app-lifecycle-manager flags attributes create "user-id-attr" \ --key="userID" \ --attribute-value-type="STRING" \ --location=globalUse uma alocação para definir a divisão (50/50, por exemplo), referenciando seus IDs de variante descritivos.
# 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"] }'No serviço de back-end, inicialize o SDK do OpenFeature e injete o
userIDno contexto de avaliação. Use o métodoBooleanValueDetails(ou equivalente no seu idioma) para recuperar ovariantID(string) no seu aplicativo. Isso permite alternar a lógica de back-end com base no nome descritivo, em vez de apenas um valor 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) }Use nomes de variantes descritivos para que sua auditoria e análise gerem documentação automaticamente. Para auditar avaliações, registre a string
details.Variantjunto com as métricas de performance: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(), )Ao comparar as métricas do grupo "Experimental" com o grupo "De base", é possível analisar manualmente se o novo algoritmo melhora a eficiência do back-end ou a relevância da pesquisa antes de prosseguir com um lançamento completo.
A seguir
- Saiba mais sobre Solução de problemas.