Canary deployment และ Linear deployment

การทำ Deployment อัตโนมัติบน AWS

Dunieski Otano

Amazon Web Services Solutions Architect

รีลีสเดียวที่ผิดพลาด กระทบผู้ใช้ทุกคน

แบ่ง

  • การเปลี่ยนแปลงตรรกะการชำระเงินถูกดีพลอยไปยัง 100% ของทราฟฟิกทันที
  • บั๊กปรากฏขึ้นภายใต้โหลดจริง ทำให้การชำระเงินล้มเหลวทั้งหมด
  • หากใช้ canary 10% จะตรวจพบปัญหาได้ภายใน 5 นาที
  • ต้นทุนของการข้าม canary: สูญเสียเงินจริง
การทำ Deployment อัตโนมัติบน AWS

Canary deployment คืออะไร

canary

  • ส่งทราฟฟิกส่วนเล็กไปยังเวอร์ชันใหม่ก่อน
  • เฝ้าดูเมตริกในช่วงเวลารอที่กำหนดไว้
  • หากปกติดี ให้ย้ายส่วนที่เหลือทั้งหมดในครั้งเดียว
  • รูปแบบทั่วไป: 10% เป็นเวลา 5 นาที จากนั้น 100%
การทำ Deployment อัตโนมัติบน AWS

Linear deployment คืออะไร

เชิงเส้น

  • ย้ายทราฟฟิกทีละส่วนเท่าๆ กัน
  • รอระหว่างแต่ละขั้นตอน
  • ตัวอย่าง: 10% ทุก 1 นาที เป็นเวลา 10 นาที
  • ราบรื่นกว่า canary แต่ใช้เวลารวมนานกว่า
การทำ Deployment อัตโนมัติบน AWS

เปรียบเทียบ Canary กับ Linear

  • Canary: ส่งส่วนเดียวก่อน แล้วส่งทั้งหมด
  • Linear: หลายขั้นตอนย่อย
  • Canary ตรวจพบปัญหาได้เร็ว ส่วน linear ค่อยๆ เพิ่มทราฟฟิกทีละน้อย
  • ทั้งสองจะหยุดชั่วคราวหากเกิดการ rollback

ทราฟฟิก

การทำ Deployment อัตโนมัติบน AWS

การกำหนดค่า CodeDeploy สำหรับ Lambda

  • CodeDeployDefault.LambdaCanary10Percent5Minutes: 10% เป็นเวลา 5 นาที จากนั้น 100%
  • CodeDeployDefault.LambdaLinear10PercentEvery1Minute: +10% ต่อนาที
  • CodeDeployDefault.LambdaAllAtOnce: ส่งทราฟฟิกทั้งหมดทันที
  • ECS มีการกำหนดค่าที่ขึ้นต้นด้วย ECS ในลักษณะเดียวกัน

ป้ายกำกับ

การทำ Deployment อัตโนมัติบน AWS

การ rollback อัตโนมัติด้วย CloudWatch alarms

  • แนบCloudWatch alarmsเข้ากับ deployment group
  • alarm ที่พบบ่อย: errors, duration, 5xx
  • หาก alarm เข้าสู่สถานะ ALARM การดีพลอยจะหยุดทันที
  • CodeDeploy จะย้อนกลับไปยังเวอร์ชันก่อนหน้า

ป้ายกำกับ

การทำ Deployment อัตโนมัติบน AWS

เลือกการกำหนดค่าที่เหมาะสม

เลือก

  • แพตช์ความเสี่ยงต่ำตามปกติ → AllAtOnce
  • การเปลี่ยนแปลงที่มีความเสี่ยงสูงในโปรดักชัน → Canary
  • ต้องการเพิ่มทราฟฟิกอย่างราบรื่นและสม่ำเสมอ → Linear
  • ควรใช้คู่กับalarmsเพื่อ rollback อัตโนมัติเสมอ
การทำ Deployment อัตโนมัติบน AWS

มาฝึกกันเถอะ!

การทำ Deployment อัตโนมัติบน AWS

Preparing Video For Download...