ข้ามไปยังเนื้อหา

Forced Values, Saved Groups, and Prerequisites

บางครั้งคุณจำเป็นต้องบังคับค่าเฉพาะให้ผู้ใช้หรือกลุ่มผู้ใช้ โดยข้าม percentage rollout ไปทั้งหมด GrowthBook มีเครื่องมือสามอย่างสำหรับเรื่องนี้: forced-value rule, Saved Group และ prerequisite feature

rule แบบ Forced Value จะคืนค่าตายตัวให้ผู้ใช้ทุกคนที่ match targeting condition ของ rule นั้น มีประโยชน์สำหรับ: ผู้ทดสอบ QA ภายในที่ต้องได้ true เสมอ, ผู้ใช้ VIP ที่ต้องได้ค่า string แบบ premium เสมอ, หรือผู้ใช้ที่ถูกแบนซึ่งต้องได้ false เสมอ

การสร้าง forced-value rule:

  1. ในหน้ารายละเอียดของ Feature คลิก Add Rule
  2. เลือก Force Value เป็นประเภทของ rule
  3. ตั้งค่า Value ที่จะคืน (เช่น true)
  4. เพิ่ม Targeting Condition เพื่อระบุ audience (เช่น email อยู่ใน list [[email protected], [email protected]])
  5. คลิก Save Rule
  6. ลาก rule นี้ไว้เหนือ rollout rule ใด ๆ เพื่อให้ถูกประเมินก่อน

Saved Group คือนิยาม audience ที่นำกลับมาใช้ซ้ำได้ ซึ่งคุณสร้างครั้งเดียวแล้วอ้างอิงในหลาย rule แทนที่จะต้องทำ email list หรือ condition เดิมซ้ำในสิบ feature ที่ต่างกัน ให้นิยามครั้งเดียวเป็น Saved Group แล้วใช้ได้ทุกที่

การสร้างและใช้ Saved Group:

  1. ไปที่ Settings → Saved Groups
  2. คลิก Create Saved Group
  3. ตั้งชื่อ (เช่น beta-testers)
  4. เพิ่มสมาชิก (ตามค่า attribute) หรือนิยาม condition
  5. คลิก Save
  6. เมื่อสร้าง rule บน Feature ใด ๆ ให้เลือก “In Saved Group” เป็น operator แล้วเลือก beta-testers

ฝั่ง SDK สิ่งที่คุณต้องทำคือส่ง attribute ที่ถูกต้องเท่านั้น — logic ของ Saved Group ทำงานฝั่ง server ใน GrowthBook:

gb.setAttributes({
id: 'user-456',
});
// GrowthBook evaluates whether this user is in the beta-testers Saved Group
const showBeta = gb.isOn('new-checkout');
gb.setAttributes({
  id: 'user-456',
  email: '[email protected]',
});
// GrowthBook evaluates whether this user is in the beta-testers Saved Group
const showBeta = gb.isOn('new-checkout');

prerequisite (หรือที่เรียกว่า feature dependency) ให้คุณกั้น flag หนึ่งโดยขึ้นกับอีก flag หนึ่ง ตัวอย่างเช่น คุณอาจกำหนดให้ platform-v2 ต้องเปิดอยู่ก่อน จึงจะอนุญาตให้ new-checkout ทำงานได้ วิธีนี้ป้องกันไม่ให้ rollout ที่ทำเพียงบางส่วนสร้างสถานะ UI ที่ไม่สอดคล้องกัน

การเพิ่ม prerequisite:

  1. ในหน้ารายละเอียดของ Feature คลิก Add Prerequisite
  2. เลือก parent feature (เช่น platform-v2)
  3. ตั้งค่าที่ต้องการ (เช่น true)
  4. คลิก Save ตอนนี้ new-checkout จะถูกประเมินก็ต่อเมื่อ platform-v2 เปิดอยู่สำหรับผู้ใช้คนปัจจุบันเท่านั้น
ตัวเลือกBenefitCost
Saved Groupreuse ได้หลาย feature/experimentต้อง maintain group ให้ update ตรงกับ business logic จริง
Forced assignment เฉพาะจุดเร็วกว่าสำหรับ QA/debug ชั่วคราวไม่ reuse ได้ ต้องไม่ลืมลบออก
  • ใช้ forced assignment ทิ้งไว้ใน production นานเกินจำเป็น (ควรใช้ QA/debug ชั่วคราวเท่านั้น)
  • สร้าง saved group ซ้ำหลายอันสำหรับ segment เดียวกัน
  • ลืม remove ตัวเองจาก forced group หลัง QA เสร็จทำให้เห็นข้อมูลเพี้ยน

💡 ตัวอย่างจากของจริง

ทีม QA ที่ Spotify ใช้ forced assignment เพื่อ preview feature ใหม่ก่อนเปิดจริง โดยไม่กระทบ traffic assignment ของผู้ใช้จริง

rule แบบ forced-value ทำอะไร?
Saved Group ถูกจัดการที่ไหนใน GrowthBook?
prerequisite feature ทำอะไร?