ระบบการทดสอบแบบ Canary และ A/B Rollout
กระบวนการ rollout จะช่วยกระจายการรับส่งข้อมูลของโมเดลเชิงตรรกะไปยังผู้ให้บริการสองรายตามค่าน้ำหนักที่กำหนด ตัวอย่างเช่น ส่ง 90% ของคำร้องขอ coding-default ไปยังผู้ให้บริการรายปัจจุบันของคุณ และส่งอีก 10% ไปยังผู้ให้บริการรายใหม่ จากนั้นจึงค่อย ๆ ปรับอัตราส่วนเป็น 50/50 หรือ 100% เมื่อคุณมีความมั่นใจในความเสถียรยิ่งขึ้น การกระจายข้อมูลนี้จะทำงานเป็นรายคำร้องขอ โดยเป็นการสุ่มตามสัดส่วนค่าน้ำหนัก ทำให้คุณสามารถทำ A/B testing หรือทยอยเปลี่ยนผ่านไปยังผู้ให้บริการรายใหม่ได้อย่างปลอดภัย
ผู้ที่มีสิทธิ์ในการดำเนินการนี้
Org admin (สิทธิ์เฉพาะในองค์กรของตนเอง) และ Platform admin โดยดำเนินการผ่านหน้าจอ Projects → Rollouts
แนวทางการทำงาน
gateway จะจัดการส่งต่อข้อมูลของโมเดลเชิงตรรกะไปยังผู้ให้บริการทั้งสองรายโดยอ้างอิงตามค่าน้ำหนักที่กำหนด ซึ่งคำร้องขอที่ส่งเข้ามาแต่ละรายการจะถูกส่งไปยังผู้ให้บริการ A หรือ B ตามสัดส่วนน้ำหนักอย่างเป็นอิสระต่อกัน โดยระบบจะไม่มีการผูกติดตัวผู้ใช้งาน ทำให้ผู้ใช้งานรายเดียวกันอาจเรียกไปเจอผู้ให้บริการคนละรายในการร้องขอสองครั้งติดกัน ซึ่งมีความเหมาะสมสำหรับการทำ A/B testing อย่างเที่ยงตรง และการยกเลิกกระบวนการ rollout จะเป็นการเปลี่ยนกลับไปส่งข้อมูลให้ผู้ให้บริการรายเดี่ยวในทันที
วิธีการกำหนดค่า Rollout
- เปิดหน้า Projects → Rollouts และเลือกรายการ logical model ซึ่งเป็นโมเดลที่กำหนดค่าไว้เรียบร้อยแล้วในหน้าการจัดเส้นทาง
- กำหนดค่า Target A และ Target B โดยแต่ละส่วนประกอบด้วย provider ที่ลงทะเบียนไว้, upstream model ของผู้ให้บริการรายนั้น และ ค่าน้ำหนัก (weight) ซึ่งค่าน้ำหนักของทั้งสองเป้าหมายรวมกันจะต้องเท่ากับ 100
- คลิก Save rollout ซึ่งระบบจะเริ่มกระจายคำร้องขอจริงภายในเวลาประมาณ 1 วินาที
- ปรับเพิ่มอัตราสัดส่วน (ramp) ได้โดยแก้ไขค่าน้ำหนัก เช่น
90/10 → 50/50ไปจนถึงส่งไปยังรายใหม่ทั้งหมด เมื่อตัดสินใจเลือกผู้ให้บริการที่เหมาะสมได้แล้ว และการคลิก Remove canary จะเป็นการเปลี่ยนรูปแบบโมเดลให้ทำงานตามข้อมูลการจัดเส้นทางปกติในหน้า Routing
ข้อแนะนำเพิ่มเติม
- ทั้งสองเป้าหมายจะต้องเป็นผู้ให้บริการที่คุณได้ลงทะเบียนไว้เรียบร้อยแล้วสำหรับโปรเจกต์นี้ ดูรายละเอียดเพิ่มเติมได้ที่ ผู้ให้บริการ (Providers)
- สามารถนำความสามารถนี้ไปใช้สำหรับการทดลองใช้บริการของผู้ให้บริการรายใหม่ เช่น เปรียบเทียบโมเดลแบบ self-hosted กับแบบ cloud API หรือเปรียบเทียบความแตกต่างระหว่างโมเดล 2 เวอร์ชันภายใต้ชื่อเชิงตรรกะเดียวกันที่แอปพลิเคชันของคุณเรียกใช้งานอยู่ โดยไม่จำเป็นต้องแก้ไขโค้ดที่ฝั่งไคลเอนต์เลย
- สำหรับการทยอยทดสอบแบบแยกเป็นรายผู้ใช้งาน (per-user) เพื่อให้ผู้ใช้แต่ละคนใช้งานโมเดลเวอร์ชันใหม่ได้อย่างต่อเนื่องสม่ำเสมอ โปรดติดต่อผู้พัฒนาเพื่อเปิดใช้ความสามารถนี้ ซึ่งการสลับแบบ sticky ดังกล่าวจะเป็นตัวเลือกปรับแต่งที่แยกส่วนต่างหาก
ขั้นตอนต่อไป
- การจัดเส้นทาง (Routing) — รายชื่อโมเดลเชิงตรรกะและผู้ให้บริการที่จะนำมาแบ่งแยกสัดส่วนการทดสอบ
- ผู้ให้บริการ (Providers) — ลงทะเบียนผู้ให้บริการที่จะนำมาใช้งานเป็นเป้าหมายสำหรับการทำ rollout