การ deploy แบบ in-place และ blue/green

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

Dunieski Otano

Amazon Web Services Solutions Architect

เหตุขัดข้องตอนตีสอง

2.00

  • deploy แบบ all-at-once เกิดข้อผิดพลาด
  • เซิร์ฟเวอร์ทุกเครื่องรันเวอร์ชันที่พัง
  • ลูกค้าเจอข้อผิดพลาดนานหนึ่งชั่วโมง
  • rollback ต้อง deploy ใหม่ทั้งหมดอีกครั้ง
การทำ Deployment อัตโนมัติบน AWS

ทำไมกลยุทธ์การ deploy จึงสำคัญ

2.1

  • release ที่ไม่ดีอาจทำให้บริการ ล่ม
  • all-at-once = เร็วที่สุด แต่เสี่ยงที่สุด
  • rollout แบบทีละส่วน = ช้ากว่า แต่ปลอดภัยกว่า
  • กลยุทธ์นี้ควบคุม ขอบเขตความเสียหาย เมื่อล้มเหลว
การทำ Deployment อัตโนมัติบน AWS

การ deploy แบบ in-place

in-place

  • deploy บน instance ชุดเดิม ที่ให้บริการอยู่
  • ทำ ทีละกลุ่ม: ครึ่งหนึ่งก่อน แล้วอีกครึ่ง หรือทีละเครื่อง
  • ตรวจ health check ทุกกลุ่ม ก่อนไปกลุ่มต่อไป
  • ต้นทุนต่ำ ไม่ต้องมีโครงสร้างพื้นฐานเพิ่ม
การทำ Deployment อัตโนมัติบน AWS

การ deploy แบบ blue/green

  • Blue = กลุ่มเซิร์ฟเวอร์ production ปัจจุบัน
  • Green = กลุ่มเซิร์ฟเวอร์ใหม่ที่รันเวอร์ชันใหม่
  • load balancer ย้ายทราฟฟิก จาก blue ไป green
  • กลุ่มเดิมยัง พร้อมใช้งาน เพื่อ rollback ได้เร็ว

blue-green

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

Lambda และ ECS เป็น blue/green โดยการออกแบบ

  • Lambda: ย้ายทราฟฟิกผ่าน alias version pointer
  • ECS: ย้ายทราฟฟิกผ่าน replacement task set
  • ไม่ต้องทำสำเนาชุดเซิร์ฟเวอร์แบบ EC2
  • ยังต้อง เลือก deployment configuration

ecs

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

เลือกระหว่าง in-place กับ blue/green

  • งบจำกัด แพตช์เสี่ยงต่ำ → ใช้ in-place
  • ต้องการ ไม่มี downtime หรือ rollback ทันที → ใช้ blue/green
  • มีเซิร์ฟเวอร์เดิมเครื่องเดียว → in-place เป็นตัวเลือกเดียว
  • Lambda หรือ ECS → blue/green มีอยู่ในตัว

decide

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

Rollback ใน CodeDeploy

rollback

  • Rollback = deploy revision ที่สำเร็จล่าสุดกลับมาใหม่
  • เกิดขึ้นอัตโนมัติเมื่อ การ deploy ล้มเหลว
  • เกิดขึ้นอัตโนมัติเมื่อ CloudWatch alarm แจ้งเตือน
  • rollback แบบ blue/green: สลับ load balancer กลับ
การทำ Deployment อัตโนมัติบน AWS

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

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

Preparing Video For Download...