Alokasi tanda fitur Pengelola Siklus Proses Aplikasi membantu Anda menguji aplikasi dengan membagi persentase traffic. Dengan begitu, beberapa pengguna Anda dapat melihat satu varian aplikasi, sementara pengguna lain melihat varian yang berbeda, sehingga membantu Anda menentukan varian atau fitur mana yang lebih berhasil (proses ini sering disebut sebagai pengujian A/B). Alokasi tanda fitur membantu Anda menentukan cara memisahkan traffic, dan mengintegrasikan varian yang dialokasikan dengan aplikasi Anda.
Panduan ini menunjukkan cara menentukan varian, mengonfigurasi pemisahan traffic, dan mengintegrasikan varian dengan aplikasi Anda.
Untuk menyederhanakan pelacakan dan analisis, Anda harus menetapkan ID string deskriptif ke varian (misalnya, "eksperimental" dan "dasar") dan menggunakan nama ini secara langsung dalam kode dan pipeline analisis Anda.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Menyelesaikan Panduan memulai deployment flag fitur atau Menggunakan flag fitur (panduan memulai mandiri).
- Lingkungan Google Cloud CLI yang dikonfigurasi untuk mengelola resource App Lifecycle Manager.
Mengonfigurasi alokasi tanda fitur
Untuk mengonfigurasi tombol fitur eksperimental:
Tentukan atribut acak (misalnya,
userID) yang akan digunakan untuk pengelompokan tetap guna memastikan pengalaman yang konsisten bagi setiap pengguna.gcloud beta app-lifecycle-manager flags attributes create "user-id-attr" \ --key="userID" \ --attribute-value-type="STRING" \ --location=globalGunakan alokasi untuk menentukan pembagian (misalnya, 50/50), dengan merujuk ID varian deskriptif Anda.
# 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"] }'Di layanan backend Anda, lakukan inisialisasi OpenFeature SDK dan masukkan
userIDke dalam konteks evaluasi. Gunakan metodeBooleanValueDetails(atau yang setara untuk bahasa Anda) untuk mengambilvariantID(string) di aplikasi Anda. Hal ini memungkinkan Anda mengalihkan logika backend berdasarkan nama deskriptif, bukan hanya nilai boolean.// 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) }Gunakan nama varian deskriptif agar audit dan analisis Anda membuat dokumentasi secara otomatis. Untuk mengaudit evaluasi, catat string
details.Variantbersama metrik performa Anda: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(), )Dengan membandingkan metrik untuk grup "Eksperimental" dengan grup "Dasar", Anda dapat menganalisis secara manual apakah algoritma baru meningkatkan efisiensi backend atau relevansi penelusuran sebelum melanjutkan dengan peluncuran penuh.
Langkah berikutnya
- Pelajari Pemecahan masalah.