ECS Rolling Updates

ต่อไปเราจะพูดถึงวิธีการอัปเดต ECS Service โดยใช้ Rolling Updates เมื่อคุณอัปเดต ECS Service จาก เวอร์ชัน 1 → เวอร์ชัน 2 คุณสามารถควบคุมได้ว่า จะเริ่มต้น (start) หรือ หยุด (stop) task กี่ตัวในแต่ละครั้ง และจัดการลำดับการอัปเดตอย่างไร
เมื่อคุณเลือก task definition ใหม่ และต้องการอัปเดต ECS Service จะมี 2 การตั้งค่า ที่สำคัญ:
- Minimum healthy percent (ค่าเริ่มต้น 100)
- Maximum percent (ค่าเริ่มต้น 200)
มาดูกันว่ามันหมายถึงอะไร
การทำงานของ Minimum Healthy Percent และ Maximum Percent
สมมติว่า ECS Service ของคุณมี 9 tasks ทำงานอยู่ ซึ่งคิดเป็น 100% ของความสามารถที่รันจริง
- หากตั้ง minimum healthy percent < 100 หมายความว่าคุณสามารถยุติ (terminate) task บางส่วนได้ ตราบใดที่ task ที่เหลือยังทำงานอยู่เหนือเปอร์เซ็นต์ที่กำหนด
- ส่วน maximum percent จะบอกว่า คุณสามารถสร้าง task เวอร์ชันใหม่ได้มากที่สุดกี่เปอร์เซ็นต์ของความสามารถระหว่างทำ rolling update
กระบวนการอัปเดต: ECS จะสร้าง task ใหม่ → ยุติ task เก่า → ทำซ้ำ จนกว่า task ทั้งหมดจะอัปเดตไปยังเวอร์ชันใหม่
ตัวอย่างการทำงาน
กรณีที่ 1: Minimum Healthy Percent = 50 และ Maximum Percent = 100
- เริ่มต้นมี 4 tasks
- สามารถยุติ 2 tasks ได้ (เหลือ 50% ความสามารถ)
- จากนั้นสร้าง task ใหม่ 2 ตัว → กลับมา 100% ความสามารถ
- ต่อไปยุติ task เก่าอีก 2 ตัว → เหลือ 50%
- แล้วสร้าง task ใหม่อีก 2 ตัว → กลับมา 100%
- อัปเดตเสร็จสิ้น

➡️ ในกรณีนี้ จะมี task ถูกหยุดชั่วคราวระหว่างการอัปเดต
กรณีที่ 2: Minimum Healthy Percent = 100 และ Maximum Percent = 150
- เริ่มต้นมี 4 tasks
- ไม่สามารถหยุด task ได้ทันที เพราะ minimum healthy percent = 100
- ดังนั้นต้อง สร้าง task ใหม่ 2 ตัวก่อน → รวมเป็น 150% ความสามารถ
- จากนั้นยุติ task เก่า 2 ตัว → กลับมา 100%
- ต่อไปสร้าง task ใหม่อีก 2 ตัว → ขึ้นไป 150%
- และสุดท้ายยุติ task เก่าอีก 2 ตัว → กลับมา 100%
- อัปเดตเสร็จสิ้น

➡️ วิธีนี้ช่วยให้เกิด zero downtime (ไม่มี downtime) แต่จะใช้ทรัพยากรมากขึ้นในช่วงสั้น ๆ
สรุป
- การเข้าใจ minimum healthy percent และ maximum percent เป็นสิ่งสำคัญในการจัดการ rolling updates ใน ECS
- ค่านี้เป็นตัวกำหนดว่า จะหยุดหรือเริ่ม task ได้กี่ตัวในระหว่างอัปเดต ซึ่งส่งผลต่อ ความพร้อมใช้งาน (availability) และ การใช้ทรัพยากร (resource usage)
Key Takeaways
- Rolling updates ใน ECS ช่วยให้อัปเดต service จากเวอร์ชันหนึ่งไปอีกเวอร์ชันได้อย่างควบคุมได้
- Minimum healthy percent = ความสามารถขั้นต่ำที่ต้องรักษาไว้ระหว่างอัปเดต
- Maximum percent = ความสามารถสูงสุดที่อนุญาตให้เพิ่มขึ้นระหว่างอัปเดต
- การตั้งค่าที่ต่างกันจะส่งผลให้มีการ หยุด/สร้าง task แตกต่างกัน และส่งผลต่อ downtime และ resource usage