Forced Values, Saved Groups, and Prerequisites
Forced Values, Saved Groups, and Prerequisites
หัวข้อที่มีชื่อว่า “Forced Values, Saved Groups, and Prerequisites”บางครั้งคุณจำเป็นต้องบังคับค่าเฉพาะให้ผู้ใช้หรือกลุ่มผู้ใช้ โดยข้าม percentage rollout ไปทั้งหมด GrowthBook มีเครื่องมือสามอย่างสำหรับเรื่องนี้: forced-value rule, Saved Group และ prerequisite feature
Forced-value rules
หัวข้อที่มีชื่อว่า “Forced-value rules”rule แบบ Forced Value จะคืนค่าตายตัวให้ผู้ใช้ทุกคนที่ match targeting condition ของ rule นั้น มีประโยชน์สำหรับ: ผู้ทดสอบ QA ภายในที่ต้องได้ true เสมอ, ผู้ใช้ VIP ที่ต้องได้ค่า string แบบ premium เสมอ, หรือผู้ใช้ที่ถูกแบนซึ่งต้องได้ false เสมอ
การสร้าง forced-value rule:
- ในหน้ารายละเอียดของ Feature คลิก Add Rule
- เลือก Force Value เป็นประเภทของ rule
- ตั้งค่า Value ที่จะคืน (เช่น
true) - เพิ่ม Targeting Condition เพื่อระบุ audience (เช่น
emailอยู่ใน list[[email protected], [email protected]]) - คลิก Save Rule
- ลาก rule นี้ไว้เหนือ rollout rule ใด ๆ เพื่อให้ถูกประเมินก่อน
Saved Groups
หัวข้อที่มีชื่อว่า “Saved Groups”Saved Group คือนิยาม audience ที่นำกลับมาใช้ซ้ำได้ ซึ่งคุณสร้างครั้งเดียวแล้วอ้างอิงในหลาย rule แทนที่จะต้องทำ email list หรือ condition เดิมซ้ำในสิบ feature ที่ต่างกัน ให้นิยามครั้งเดียวเป็น Saved Group แล้วใช้ได้ทุกที่
การสร้างและใช้ Saved Group:
- ไปที่ Settings → Saved Groups
- คลิก Create Saved Group
- ตั้งชื่อ (เช่น
beta-testers) - เพิ่มสมาชิก (ตามค่า attribute) หรือนิยาม condition
- คลิก Save
- เมื่อสร้าง 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 Groupconst 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 features
หัวข้อที่มีชื่อว่า “Prerequisite features”prerequisite (หรือที่เรียกว่า feature dependency) ให้คุณกั้น flag หนึ่งโดยขึ้นกับอีก flag หนึ่ง ตัวอย่างเช่น คุณอาจกำหนดให้ platform-v2 ต้องเปิดอยู่ก่อน จึงจะอนุญาตให้ new-checkout ทำงานได้ วิธีนี้ป้องกันไม่ให้ rollout ที่ทำเพียงบางส่วนสร้างสถานะ UI ที่ไม่สอดคล้องกัน
การเพิ่ม prerequisite:
- ในหน้ารายละเอียดของ Feature คลิก Add Prerequisite
- เลือก parent feature (เช่น
platform-v2) - ตั้งค่าที่ต้องการ (เช่น
true) - คลิก Save ตอนนี้
new-checkoutจะถูกประเมินก็ต่อเมื่อplatform-v2เปิดอยู่สำหรับผู้ใช้คนปัจจุบันเท่านั้น
ข้อแลกเปลี่ยน
หัวข้อที่มีชื่อว่า “ข้อแลกเปลี่ยน”| ตัวเลือก | Benefit | Cost |
|---|---|---|
| Saved Group | reuse ได้หลาย 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 ของผู้ใช้จริง