ข้ามไปเนื้อหาหลัก
ประมวลผล· ~16 นาที· อัปเดตล่าสุด

Containers: ECS, EKS, และ Fargate

รันแอปแบบ container และเลือกตัวจัดการที่เหมาะ

กล่องอาหารสำเร็จรูป และพ่อครัวส่วนตัว

Container (เช่น Docker) เหมือนกล่องอาหารสำเร็จรูปที่ห่อวัตถุดิบทุกอย่าง (โค้ด + ไลบรารี) ไว้พร้อม เอาไปเวฟเครื่องไหนรสชาติก็ออกมาเหมือนกัน. ส่วนแพลตฟอร์มบริหาร Fargate คือคุณยื่นกล่องอาหารนี้ให้ภัตตาคารจัดการอุ่นและเสิร์ฟให้ โดยที่คุณไม่ต้องไปกังวลเรื่องการบริหารครัว (ไม่มีเซิร์ฟเวอร์ EC2 ให้ต้องปวดหัวดูแล)

เมื่อโลกพัฒนาเข้าสู่ยุค Microservices การแพ็กแอปพลิเคชันเป็น Container เป็นที่นิยมมาก AWS มีบริการควบคุม (Orchestration) ให้เลือกหลักๆ 2 ตัว และมีตัวเลือกการประมวลผล (Compute Engine) แสนสะดวกอย่าง Fargate

  • ECS (Elastic Container Service) — เครื่องมือจัดการ Container ที่ AWS พัฒนาขึ้นเอง ใช้งานง่ายมากและผูกทำงานกับบริการ AWS อื่นๆ ได้ราบรื่น
  • EKS (Elastic Kubernetes Service) — บริการ Kubernetes แบบ Managed เหมาะสำหรับองค์กรที่ใช้ Kubernetes อยู่แล้ว หรือเน้นความเป็นมาตรฐานสากลที่สามารถย้าย (Portability) ไปค่ายคลาวด์อื่นได้
  • AWS Fargate — เป็นโหมดประมวลผล Serverless สำหรับรัน Container (คุณใช้ Fargate จับคู่ทำงานร่วมกับ ECS หรือ EKS ก็ได้) ข้อดีคือไม่ต้องดูแลและอัปเดต EC2 เบื้องหลังเลย
คำศัพท์เสริม: Stateless vs Stateful (StatefulSet ใน Kubernetes)

1. Stateless (ไร้รัฐ / ไม่จำอดีต): เหมือนพนักงานร้านฟาสต์ฟู้ด สั่งใหม่ทุกครั้งเริ่มรับคำสั่งใหม่ (เซิร์ฟเวอร์แบบนี้ถ้าพังแล้วเปิดใหม่ สามารถสลับทำงานแทนกันได้ทันที เพราะไม่เก็บข้อมูลผู้ใช้ไว้ที่เครื่องตัวเอง มักเป็น Web Server ทั่วไป) 2. Stateful / StatefulSet (จำอดีต / มีตัวตนที่ชัดเจน): เหมือนช่างตัดผมประจำตัวที่จำทรงผมคุณได้ (เซิร์ฟเวอร์แบบนี้จะเก็บข้อมูลไว้ที่เครื่องตัวเอง เช่น Database สลับตัวกันมั่วๆ ไม่ได้) ใน Kubernetes เราจะใช้ StatefulSet จัดการของกลุ่มนี้ เพื่อรับประกันว่าคอนเทนเนอร์แต่ละตัวมีชื่อที่ตายตัว ลำดับชัดเจน และข้อมูลเดิมต้องไม่หายเวลาเปิดใหม่

สรุป Key Takeaways

  • ECS = container orchestration ของ AWS, EKS = managed Kubernetes
  • Fargate = รัน container แบบ serverless ไม่ต้องดูแล EC2
  • อยากเลี่ยงการจัดการเซิร์ฟเวอร์ → Fargate

คำถามที่พบบ่อย

ECS กับ EKS เลือกยังไง

ECS = orchestrator ของ AWS เอง เรียบง่าย ผูกกับบริการ AWS แน่น เหมาะกับทีมที่อยู่ในโลก AWS ล้วน ส่วน EKS = Kubernetes มาตรฐานเปิด เหมาะเมื่อทีมมีทักษะ K8s อยู่แล้วหรือต้องการ portable ข้าม cloud — ข้อสอบชี้คำตอบด้วยคำว่า "Kubernetes" ในโจทย์ตรงๆ

Fargate คืออะไร ต่างจาก EC2 launch type ยังไง

Fargate = รัน container โดยไม่ต้องดูแลเครื่อง host เลย (serverless container) จ่ายตาม vCPU/RAM ที่ task ใช้ ส่วน EC2 launch type = เราจัดการ fleet เครื่องเอง คุมได้มากกว่า/ถูกกว่าเมื่อ utilization สูง — โจทย์ "ไม่อยากบริหาร server" = Fargate

ECR เกี่ยวข้องยังไงกับ ECS/EKS

ECR คือ registry เก็บ container image ของเรา (เหมือน Docker Hub ส่วนตัว) — ECS/EKS ดึง image จาก ECR มารัน ผูกสิทธิ์ผ่าน IAM และสแกนช่องโหว่ใน image ได้ในตัว

ลองทำ Quiz ท้ายบท

คำถามแนวข้อสอบของโมดูลนี้ 5 ข้อ · เฉลยทันที

อ่านจบแล้วอย่าลืมทำเครื่องหมาย