Canary Deployment: ปล่อยของใหม่ให้คนกลุ่มเล็กก่อน ลดความเสี่ยงทั้งระบบ

26 มิถุนายน 2569อ่าน 6 นาที
Canary Deployment: ปล่อยของใหม่ให้คนกลุ่มเล็กก่อน ลดความเสี่ยงทั้งระบบ

ปล่อยเวอร์ชันใหม่ให้ผู้ใช้ทุกคนพร้อมกัน คือเดิมพันก้อนใหญ่ Canary Deployment ปล่อยให้คนกลุ่มเล็กก่อน เฝ้าดูสัญญาณ แล้วค่อยขยาย ถ้ามีปัญหาจะกระทบแค่กลุ่มเล็กและถอยกลับได้เร็ว

ชื่อ Canary มาจากนกขมิ้นที่คนงานเหมืองนำลงไปด้วย เพราะนกจะแสดงอาการก่อนคนเมื่อมีแก๊สพิษ เป็นสัญญาณเตือนล่วงหน้า Canary Deployment ใช้หลักเดียวกัน คือปล่อยเวอร์ชันใหม่ให้ผู้ใช้กลุ่มเล็กก่อน ถ้ามีปัญหาจะเห็นจากกลุ่มเล็กนั้น ก่อนที่จะกระทบทุกคน

ต่างจากการปล่อยพร้อมกันทั้งหมดอย่างไร

การปล่อยพร้อมกันทั้งหมด ถ้าพลาดคือพลาดกับทุกคนพร้อมกัน และต้องรีบถอยทั้งระบบ ส่วน Canary จำกัดความเสียหายไว้ที่กลุ่มเล็ก เช่น ผู้ใช้ 5 เปอร์เซ็นต์ แล้วเฝ้าดูตัวชี้วัด เช่น อัตราความผิดพลาดและเวลาตอบสนอง ถ้าทุกอย่างปกติจึงค่อยขยายเป็น 25 แล้ว 50 จนครบ ถ้าผิดปกติก็ถอยกลับโดยกระทบแค่กลุ่มเล็ก

  • เลือกตัวชี้วัดที่จะเฝ้าดูล่วงหน้า และเกณฑ์ที่จะถอยกลับ
  • ทำให้การถอยกลับเป็นเรื่องง่ายและเร็ว ไม่ใช่กระบวนการฉุกเฉิน
  • ใช้คู่กับ Feature Flag เพื่อควบคุมว่าใครเห็นของใหม่ได้ละเอียดขึ้น

Canary Deployment เป็นพี่น้องกับ Blue-Green Deployment ทั้งคู่มีเป้าหมายเดียวกันคือปล่อยของใหม่โดยไม่ทำผู้ใช้สะดุดและถอยกลับได้เร็ว สำหรับธุรกิจ มันคือการเปลี่ยนการปล่อยของจากเหตุการณ์ที่ต้องลุ้น ให้เป็นกระบวนการที่ควบคุมได้และทำซ้ำได้อย่างมั่นใจ

Canary DeploymentReleaseReliabilityDevOps

บริการที่เกี่ยวข้อง

รับพัฒนาเว็บแอปพลิเคชัน

สร้างเว็บแอปที่รองรับการเติบโตและเชื่อมกับระบบอื่นได้

WhaleScope

ดูโครงสร้างตลาดของทุกหมวดธุรกิจไทย บน WhaleScope

รายชื่อบริษัท ผู้เล่นรายใหญ่ และอัตราคงอยู่ของแต่ละหมวด — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล

อ่านต่อ

Blue-Green Deployment: เตรียมสนามใหม่ให้พร้อม แล้วสลับทั้งระบบในวินาทีเดียว

การอัปเดตระบบทับของเดิมตรง ๆ คือช่วงเวลาอันตรายที่ถอยกลับยาก Blue-Green รันระบบสองชุดคู่กัน ปล่อยเวอร์ชันใหม่ลงชุดที่ว่าง ทดสอบจนมั่นใจ แล้วค่อยสลับผู้ใช้ไปทั้งหมด ถ้ามีปัญหาก็สลับกลับได้ทันที

Containerization: แพ็กแอปให้รันเหมือนกันทุกที่

ปัญหาคลาสสิกคือ บนเครื่องผมมันรันได้ แต่ขึ้นเซิร์ฟเวอร์กลับพัง Containerization แก้ด้วยการแพ็กแอปพร้อมทุกอย่างที่ต้องใช้ ให้รันเหมือนกันทุกที่ ลดปัญหาความต่างของสภาพแวดล้อม

Infrastructure as Code: จัดการโครงสร้างพื้นฐานด้วยโค้ด ไม่ใช่กดมือทีละครั้ง

การตั้งค่าเซิร์ฟเวอร์ด้วยมือทีละครั้ง ทำให้ทำซ้ำยาก ผิดพลาดง่าย และไม่มีใครรู้ว่าใครเปลี่ยนอะไร Infrastructure as Code เปลี่ยนการตั้งค่าให้เป็นโค้ดที่ตรวจสอบ ทำซ้ำ และย้อนกลับได้

Feature Flags: ปล่อยฟีเจอร์ทีละนิด และปิดได้ทันทีเมื่อพัง

การปล่อยฟีเจอร์ใหม่ให้ทุกคนพร้อมกัน คือการเดิมพันก้อนใหญ่ Feature Flags ช่วยให้เปิดฟีเจอร์ทีละกลุ่ม วัดผล และปิดได้ทันทีถ้ามีปัญหา โดยไม่ต้องรีบแก้โค้ดกลางดึก