Skip to main content

ECS Rolling Updates

An image

ต่อไปเราจะพูดถึงวิธีการอัปเดต 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%
  • อัปเดตเสร็จสิ้น

An image

➡️ ในกรณีนี้ จะมี 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%
  • อัปเดตเสร็จสิ้น

An image

➡️ วิธีนี้ช่วยให้เกิด 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