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

Percentage Rollouts

rule แบบ percentage rollout ให้คุณปล่อย flag ให้ผู้ใช้เพียงบางส่วน แทนที่จะเปิด flag ให้ทุกคนพร้อมกัน คุณสามารถเริ่มที่ 10% ตรวจสอบว่าระบบยังทำงานปกติดี แล้วค่อยขยับเป็น 50% และสุดท้าย 100%

  1. ในหน้ารายละเอียดของ Feature คลิก Add Rule
  2. เลือก Rollout (percentage) เป็นประเภทของ rule
  3. ตั้งค่าเปอร์เซ็นต์ Coverage (เช่น 10)
  4. ตั้งค่า Hash Attribute — นี่คือ attribute ของผู้ใช้ที่จะนำค่าไป hash เพื่อตัดสินการกำหนด bucket (โดยปกติคือ id)
  5. เพิ่ม Targeting Conditions เพื่อจำกัด rollout ให้กับผู้ใช้บางกลุ่มได้ตามต้องการ
  6. คลิก Save Rule

การแบ่ง bucket ทำให้ผู้ใช้ได้ผลลัพธ์ที่สม่ำเสมออย่างไร

หัวข้อที่มีชื่อว่า “การแบ่ง bucket ทำให้ผู้ใช้ได้ผลลัพธ์ที่สม่ำเสมออย่างไร”

GrowthBook จะ hash ค่าของ hash attribute ของผู้ใช้ (เช่น id ของพวกเขา) รวมกับ feature key เพื่อสร้างตัวเลขระหว่าง 0 ถึง 1 หากตัวเลขนั้นต่ำกว่าเปอร์เซ็นต์ coverage rule จะ match เนื่องจาก hash เป็นแบบ deterministic ผู้ใช้คนเดิมจะตกลงใน bucket เดิมเสมอ การเพิ่ม coverage จาก 10% เป็น 50% จะเพิ่มเฉพาะผู้ใช้ใหม่เท่านั้น ไม่เคยพลิกสถานะของผู้ใช้เดิม

ตารางการ ramp ทั่วไป: เริ่มที่ 10% เป็นเวลา 24 ชั่วโมง คอยดู error rate และ metric หากปกติดี ขยับเป็น 50% อีก 24 ชั่วโมง จากนั้น rollout ไปที่ 100% และลบ flag ออก

gb.setAttributes({ id: 'user-123' });
if (gb.isOn('new-dashboard')) {
// user-123 is consistently in the 10% bucket
}
gb.setAttributes({ id: 'user-123' });
if (gb.isOn('new-dashboard')) {
  // user is deterministically in or out based on id hash
}
StrategyRiskSpeed
Big Bang Releaseสูงเร็ว
Canary Releaseกลางกลาง
Progressive Rolloutต่ำช้า
Feature Flagต่ำมากปรับได้ตามต้องการ
ตัวเลือกBenefitCost
Rollout แบบช้า (ทยอย %)ปลอดภัยกว่า ตรวจจับปัญหาได้ก่อนกระทบคนมากใช้เวลานานกว่าจะถึง 100%
Rollout เร็วเห็นผลลัพธ์ในมือเร็วกว่าเสี่ยง blast radius ใหญ่ถ้าพัง
  • rollout ไป 100% ทันทีโดยไม่ผ่านขั้น percentage เล็กๆก่อน
  • ไม่ monitor metric ระหว่าง rollout แต่ละขั้น
  • เพิ่ม percentage เร็วเกินไปโดยไม่รอดูผลขั้นก่อนหน้าให้นานพอ

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

Netflix และ Facebook ใช้ progressive rollout (1% → 5% → 25% → 100%) เป็นมาตรฐานสำหรับทุก feature ใหญ่ เพื่อจำกัดความเสียหายถ้าเกิดบัค

hash attribute ถูกใช้เพื่ออะไรใน percentage rollout?
จะเกิดอะไรขึ้นกับผู้ใช้เดิมที่อยู่ใน rollout อยู่แล้วเมื่อคุณเพิ่ม coverage จาก 10% เป็น 50%?
เปอร์เซ็นต์ coverage แรกที่นิยมใช้สำหรับ rollout แบบระมัดระวังคือเท่าไหร่?