Mengonfigurasi eksperimen dan pengujian A/B menggunakan tombol fitur

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:

  1. Menyelesaikan Panduan memulai deployment flag fitur atau Menggunakan flag fitur (panduan memulai mandiri).
  2. Lingkungan Google Cloud CLI yang dikonfigurasi untuk mengelola resource App Lifecycle Manager.

Mengonfigurasi alokasi tanda fitur

Untuk mengonfigurasi tombol fitur eksperimental:

  1. 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=global
    
  2. Gunakan 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"]
      }'
    
  3. Di layanan backend Anda, lakukan inisialisasi OpenFeature SDK dan masukkan userID ke dalam konteks evaluasi. Gunakan metode BooleanValueDetails (atau yang setara untuk bahasa Anda) untuk mengambil variantID (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)
    }
    
  4. Gunakan nama varian deskriptif agar audit dan analisis Anda membuat dokumentasi secara otomatis. Untuk mengaudit evaluasi, catat string details.Variant bersama 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