การ deploy แบบ in-place และ blue/green
การทำ Deployment อัตโนมัติบน AWS
Dunieski Otano
Amazon Web Services Solutions Architect
เหตุขัดข้องตอนตีสอง
deploy แบบ all-at-once เกิดข้อผิดพลาด
เซิร์ฟเวอร์ทุกเครื่องรันเวอร์ชันที่พัง
ลูกค้าเจอข้อผิดพลาดนานหนึ่งชั่วโมง
rollback ต้อง deploy ใหม่ทั้งหมดอีกครั้ง
ทำไมกลยุทธ์การ deploy จึงสำคัญ
release ที่ไม่ดีอาจทำให้บริการ
ล่ม
all-at-once =
เร็วที่สุด แต่เสี่ยงที่สุด
rollout แบบทีละส่วน =
ช้ากว่า แต่ปลอดภัยกว่า
กลยุทธ์นี้ควบคุม
ขอบเขตความเสียหาย
เมื่อล้มเหลว
การ deploy แบบ in-place
deploy บน
instance ชุดเดิม
ที่ให้บริการอยู่
ทำ
ทีละกลุ่ม
: ครึ่งหนึ่งก่อน แล้วอีกครึ่ง หรือทีละเครื่อง
ตรวจ health check ทุกกลุ่ม
ก่อนไปกลุ่มต่อไป
ต้นทุนต่ำ ไม่ต้องมีโครงสร้างพื้นฐานเพิ่ม
การ deploy แบบ blue/green
Blue
= กลุ่มเซิร์ฟเวอร์ production ปัจจุบัน
Green
= กลุ่มเซิร์ฟเวอร์ใหม่ที่รันเวอร์ชันใหม่
load balancer
ย้ายทราฟฟิก
จาก blue ไป green
กลุ่มเดิมยัง
พร้อมใช้งาน
เพื่อ rollback ได้เร็ว
Lambda และ ECS เป็น blue/green โดยการออกแบบ
Lambda: ย้ายทราฟฟิกผ่าน
alias version pointer
ECS: ย้ายทราฟฟิกผ่าน
replacement task set
ไม่ต้องทำสำเนาชุดเซิร์ฟเวอร์แบบ EC2
ยังต้อง
เลือก deployment configuration
เลือกระหว่าง in-place กับ blue/green
งบจำกัด
แพตช์เสี่ยงต่ำ
→ ใช้ in-place
ต้องการ
ไม่มี downtime
หรือ rollback ทันที → ใช้ blue/green
มีเซิร์ฟเวอร์เดิมเครื่องเดียว →
in-place
เป็นตัวเลือกเดียว
Lambda หรือ ECS →
blue/green มีอยู่ในตัว
Rollback ใน CodeDeploy
Rollback =
deploy revision ที่สำเร็จล่าสุดกลับมาใหม่
เกิดขึ้นอัตโนมัติเมื่อ
การ deploy ล้มเหลว
เกิดขึ้นอัตโนมัติเมื่อ
CloudWatch alarm
แจ้งเตือน
rollback แบบ blue/green:
สลับ load balancer กลับ
มาฝึกกันเถอะ!
การทำ Deployment อัตโนมัติบน AWS
Preparing Video For Download...