Mit der Zuweisung von Funktions-Flags in App Lifecycle Manager können Sie Ihre Anwendung testen, indem Sie den Traffic in Prozent aufteilen. So können einige Ihrer Nutzer eine Variante Ihrer Anwendung sehen, während andere Nutzer eine andere Variante sehen. So können Sie ermitteln, welche Varianten oder Funktionen erfolgreicher sind. Dieser Prozess wird oft als A/B-Test bezeichnet. Mit Funktions-Flag-Zuweisungen können Sie festlegen, wie Sie Ihren Traffic aufteilen und zugewiesene Varianten in Ihre Anwendung einbinden.
In diesem Leitfaden erfahren Sie, wie Sie Varianten definieren, die Traffic-Aufteilung konfigurieren und Varianten in Ihre Anwendung einbinden.
Um das Tracking und die Analyse zu vereinfachen, sollten Sie Ihren Varianten beschreibende String-IDs zuweisen (z.B. „experimental“ und „baseline“) und diese Namen direkt in Ihrem Code und Ihren Analyse-Pipelines verwenden.
Vorbereitung
Prüfen Sie zuerst, ob Sie Folgendes haben:
- Sie haben die Kurzanleitung zum Bereitstellen von Feature-Flags oder die Kurzanleitung zur Verwendung von Feature-Flags (Standalone) durchgearbeitet.
- Eine Google Cloud CLI-Umgebung, die für die Verwaltung von App Lifecycle Manager-Ressourcen konfiguriert ist.
Zuweisung für Funktions-Flag konfigurieren
So konfigurieren Sie ein experimentelles Funktions-Flag:
Definieren Sie das randomisierte Attribut (z.B.
userID), das für das Sticky Bucketing verwendet wird, um eine einheitliche Nutzererfahrung zu gewährleisten.gcloud beta app-lifecycle-manager flags attributes create "user-id-attr" \ --key="userID" \ --attribute-value-type="STRING" \ --location=globalVerwenden Sie eine Zuweisung, um die Aufteilung zu definieren (z. B. 50/50). Verweisen Sie dabei auf Ihre beschreibenden Varianten-IDs.
# 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"] }'Initialisieren Sie in Ihrem Backend-Dienst das OpenFeature SDK und fügen Sie die
userIDin den Bewertungskontext ein. Verwenden Sie die MethodeBooleanValueDetails(oder eine entsprechende Methode in Ihrer Sprache), um denvariantID(String) in Ihrer Anwendung abzurufen. So können Sie Ihre Backend-Logik basierend auf dem beschreibenden Namen und nicht nur auf einem booleschen Wert umschalten.// 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) }Verwenden Sie aussagekräftige Variantennamen, damit bei der Prüfung und Analyse automatisch Dokumentation generiert wird. Um Auswertungen zu prüfen, protokollieren Sie den String
details.Variantzusammen mit Ihren Leistungsmesswerten: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(), )Wenn Sie die Messwerte für die Testgruppe mit denen der Baseline-Gruppe vergleichen, können Sie manuell analysieren, ob der neue Algorithmus die Backend-Effizienz oder die Suchrelevanz verbessert, bevor Sie mit der vollständigen Einführung fortfahren.