0Pricing
Cloud & IT Cert Prep · บทเรียน

ประเภทการเปิดใช้งาน EC2 เทียบกับ Fargate

เปรียบเทียบการจัดการอินสแตนซ์คอนเทนเนอร์ EC2 ด้วยตนเองกับการใช้ Fargate เพื่อเรียกใช้คอนเทนเนอร์แบบไร้เซิร์ฟเวอร์ พร้อมทำความเข้าใจความแตกต่างด้านต้นทุน

ประเภทการเปิดใช้งาน EC2 เทียบกับ Fargate เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

สองวิธีในการเรียกใช้งาน ECS

ECS มีประเภทการเปิดใช้งานสองแบบที่กำหนดว่าคอนเทนเนอร์จะทำงานที่ใด: ประเภทการเปิดใช้งาน EC2จะเรียกใช้คอนเทนเนอร์บนอินสแตนซ์ EC2 ที่คุณจัดเตรียมและจัดการภายในคลัสเตอร์ ส่วนประเภทการเปิดใช้งาน Fargateคือกลไกคอมพิวท์แบบไร้เซิร์ฟเวอร์ที่ AWS จัดการเซิร์ฟเวอร์พื้นฐานทั้งหมดให้ ความแตกต่างหลักระหว่างสองแบบอยู่ที่ความรับผิดชอบในการจัดการโครงสร้างพื้นฐานและรูปแบบต้นทุน ขณะที่นิยามงานและการกำหนดค่าบริการเกือบเหมือนกัน

ประเภทการเปิดใช้งาน EC2: ควบคุมได้เต็มที่

ด้วยประเภทการเปิดใช้งาน EC2 คุณจะลงทะเบียนอินสแตนซ์ EC2 เป็นอินสแตนซ์คอนเทนเนอร์ในคลัสเตอร์โดยใช้เอเจนต์คอนเทนเนอร์ ECS (ติดตั้งไว้ล่วงหน้าใน AMI ที่ปรับให้เหมาะกับ ECS) คุณเลือกประเภทอินสแตนซ์ ควบคุมการตั้งค่าระดับระบบปฏิบัติการ ใช้พื้นฐานความปลอดภัยแบบกำหนดเอง และใช้อินสแตนซ์ Spot เพื่อลดต้นทุน ECS จะวางงานในอินสแตนซ์ที่ลงทะเบียนไว้ตามกลยุทธ์การจัดวางแบบบรรจุให้เต็มหรือแบบกระจาย คุณมีหน้าที่แพตช์ ปรับขนาด และดูแลกลุ่มอินสแตนซ์ EC2 พื้นฐาน

# Launch an ECS-optimised EC2 instance that joins the cluster
# User data for ECS container agent
#!/bin/bash
echo ECS_CLUSTER=MyAppCluster >> /etc/ecs/ecs.config
echo ECS_ENABLE_CONTAINER_METADATA=true >> /etc/ecs/ecs.config

Fargate: คอนเทนเนอร์แบบไร้เซิร์ฟเวอร์

ด้วย Fargate คุณระบุ CPU และหน่วยความจำต่อทาสก์ แล้ว AWS จะจัดเตรียมทรัพยากรประมวลผลเบื้องหลังให้โดยอัตโนมัติโดยที่คุณไม่ต้องจัดการเอง คุณไม่ต้องลงทะเบียน แพตช์ หรือปรับขนาดอินสแตนซ์ EC2 เพราะ AWS จัดการทั้งหมดให้ ทาสก์แต่ละรายการจะมีเคอร์เนลที่แยกเป็นของตัวเอง (ผ่าน microVMs ของ Firecracker) จึงแยกการทำงานได้ปลอดภัยกว่าคอนเทนเนอร์บนอินสแตนซ์ EC2 ซึ่งมีหลายทาสก์ใช้โฮสต์เดียวกันร่วมกัน Fargate ต้องใช้โหมดเครือข่าย awsvpc ซึ่งหมายความว่าทาสก์แต่ละรายการจะมี ENI และที่อยู่ IP ของ VPC เป็นของตัวเอง

aws ecs run-task \
  --cluster 'MyAppCluster' \
  --task-definition 'myapp-task:5' \
  --launch-type FARGATE \
  --network-configuration '{
    "awsvpcConfiguration": {
      "subnets": ["subnet-aaa111"],
      "securityGroups": ["sg-xyz"],
      "assignPublicIp": "ENABLED"
    }
  }'

การเปรียบเทียบรูปแบบค่าใช้จ่าย

รูปแบบค่าใช้จ่ายทั้งสองแตกต่างกันโดยพื้นฐาน ประเภทการเปิดใช้งาน EC2: คุณจ่ายค่าอินสแตนซ์ EC2 เบื้องหลังไม่ว่าขณะนั้นจะมีทาสก์ทำงานอยู่หรือไม่ แต่สามารถใช้ Reserved Instances หรือ Savings Plans เพื่อรับส่วนลด และใช้ Spot Instances เพื่อประหยัดค่าใช้จ่ายได้สูงสุด 90% สำหรับงานที่ยอมให้ถูกขัดจังหวะได้ Fargate: คุณจ่าย เฉพาะค่า vCPU และหน่วยความจำที่แต่ละทาสก์ใช้จริงต่อวินาทีเท่านั้น จึงไม่มีค่าใช้จ่ายช่วงที่ไม่มีทาสก์ทำงาน สำหรับงานที่มีการใช้งานพุ่งขึ้นลงหรือเป็นงานแบบแบตช์ Fargate มักมีราคาถูกกว่า แต่สำหรับงานที่ใช้ทรัพยากรสูงอย่างสม่ำเสมอ EC2 ที่ใช้ Reserved Instances อาจถูกกว่า

Fargate Spot เพื่อประหยัดค่าใช้จ่าย

Fargate Spot ให้บริการทรัพยากรประมวลผลของ Fargate ในราคาที่ลดลงอย่างมาก (สูงสุด 70%) โดยแลกกับความเป็นไปได้ที่ทาสก์จะถูกขัดจังหวะเมื่อ AWS ต้องนำทรัพยากรกลับไปใช้งาน Fargate Spot เหมาะอย่างยิ่งสำหรับการประมวลผลแบบแบตช์, pipeline ของ CI/CD และสภาพแวดล้อมสำหรับการพัฒนาและการจัดเตรียมระบบ คุณสามารถกำหนด กลยุทธ์ผู้ให้บริการความจุ เพื่อผสม Fargate (แบบตามความต้องการ) กับ Fargate Spot ได้ โดยใช้ base=1 กับ Fargate เพื่อรับประกันว่ามีทาสก์อย่างน้อยหนึ่งรายการ และใช้ค่า weight เพื่อแบ่งความจุที่เหลือระหว่างทั้งสองแบบ

aws ecs create-service \
  --cluster 'MyAppCluster' \
  --service-name 'BatchService' \
  --task-definition 'batch-task:1' \
  --desired-count 10 \
  --capacity-provider-strategy \
    'capacityProvider=FARGATE,weight=1,base=1' \
    'capacityProvider=FARGATE_SPOT,weight=4'

เมื่อใดควรเลือกประเภทการเปิดใช้งาน EC2

เลือก ประเภทการเปิดใช้งาน EC2 เมื่อคุณต้องการ: อินสแตนซ์ GPU (Fargate รองรับ GPU อย่างจำกัด), ประเภทอินสแตนซ์เฉพาะที่ Fargate ไม่มีให้บริการ, การกำหนดค่า OS แบบกำหนดเอง (การปรับแต่งเคอร์เนลและไดรเวอร์แบบกำหนดเอง), ประสิทธิภาพเครือข่ายที่ต้องใช้กลุ่มการจัดวางหรือต้องใช้เครือข่ายที่มีประสิทธิภาพสูงขึ้น, คอนเทนเนอร์ Windows (EC2 รองรับคอนเทนเนอร์ Windows Server ส่วน Fargate ก็รองรับ Windows แต่มีข้อจำกัด) หรือเมื่อมีการใช้งานสูงอย่างสม่ำเสมอ ซึ่ง Reserved Instances ของ EC2 ให้ข้อได้เปรียบด้านค่าใช้จ่ายอย่างมากเมื่อเทียบกับการคิดค่าบริการ Fargate เป็นรายวินาที

เมื่อใดควรเลือก Fargate

เลือก Fargate เมื่อคุณต้องการ: ขจัดภาระในการจัดการ EC2 (ไม่ต้องแพตช์ OS และไม่ต้องปรับขนาดคลัสเตอร์), จ่ายเฉพาะสิ่งที่ใช้แบบรายวินาที, เรียกใช้งาน งานที่มีการใช้งานพุ่งขึ้นลงหรืองานแบบแบตช์ซึ่งไม่คุ้มค่าที่จะสำรองความจุ EC2 ไว้โดยไม่ได้ใช้งาน, ได้รับ การแยกทาสก์ที่ปลอดภัยยิ่งขึ้นผ่าน microVMs ของ Firecracker หรือเร่งการพัฒนาโดยมุ่งเน้นเฉพาะโค้ดแอปพลิเคชัน Fargate เป็นคำแนะนำเริ่มต้นสำหรับงาน ECS ใหม่ในการสอบ SAA-C03 เว้นแต่จะระบุข้อกำหนดเฉพาะสำหรับ EC2

ผู้ให้บริการความจุของ ECS

ผู้ให้บริการความจุช่วยแยกชั้นทรัพยากรประมวลผลออกจากบริการ ECS สำหรับ EC2 ผู้ให้บริการความจุจะเชื่อมโยงกับกลุ่ม Auto Scaling โดย ECS จะปรับขนาด ASG ให้โดยอัตโนมัติเมื่อไม่สามารถจัดวางทาสก์ได้เนื่องจากความจุไม่เพียงพอ สำหรับ Fargate นั้น FARGATE และ FARGATE_SPOT เป็นผู้ให้บริการความจุในตัว การกำหนด กลยุทธ์ผู้ให้บริการความจุให้กับบริการช่วยให้ผสมการประมวลผลแบบตามความต้องการกับ Spot/Fargate Spot ได้ ทำให้ควบคุมสมดุลระหว่างค่าใช้จ่ายและความพร้อมใช้งานของแต่ละงานได้อย่างละเอียด

การเปรียบเทียบภาระในการดำเนินงาน

ภาระในการดำเนินงานแตกต่างกันอย่างมากระหว่างประเภทการเปิดใช้งาน ประเภทการเปิดใช้งาน EC2 ต้องดำเนินการดังนี้: เลือกและอัปเดต AMI, กำหนดค่า EC2 Auto Scaling, แพตช์ OS ผ่าน SSM หรือสคริปต์แบบกำหนดเอง, จัดการความจุของอินสแตนซ์คอนเทนเนอร์ และเสริมความปลอดภัยในระดับอินสแตนซ์ Fargateขจัดสิ่งที่กล่าวมาทั้งหมด โดย AWS จัดการการแพตช์แพลตฟอร์ม Fargate ให้ ไม่ต้องจัดการอินสแตนซ์ และไม่ต้องวางแผนความจุของคลัสเตอร์ อย่างไรก็ตาม Fargate มีความยืดหยุ่นน้อยกว่าในการปรับแต่ง OS และการปรับจูนประสิทธิภาพเครือข่าย

การกำหนดขนาด CPU และหน่วยความจำของทาสก์สำหรับ Fargate

คำจำกัดความทาสก์ของ Fargate ต้องระบุ CPU และหน่วยความจำจาก ชุดค่าผสมที่กำหนดไว้ตายตัว ค่า CPU ได้แก่ 256, 512, 1024, 2048, 4096, 8192, 16384 (เป็นหน่วย vCPU โดย 1024 = 1 vCPU) หน่วยความจำต้องอยู่ในช่วงที่อนุญาตสำหรับค่า CPU แต่ละค่า ตัวอย่างเช่น CPU 256 อนุญาตให้ใช้หน่วยความจำ 512-2048 MB คอนเทนเนอร์ภายในทาสก์เดียวกันจะแบ่งใช้ขีดจำกัด CPU และหน่วยความจำของทาสก์ร่วมกัน การกำหนดขนาดให้เหมาะสมเป็นสิ่งสำคัญ เพราะ Fargate คิดค่าบริการตรงตามที่คุณระบุ ดังนั้นการจัดสรรทรัพยากรมากเกินไปจึงทำให้เสียเงินโดยไม่ได้เพิ่มประสิทธิภาพจริง หากงานมีข้อจำกัดด้าน CPU

# Valid Fargate combinations
# 256 CPU (.25 vCPU): 512, 1024, or 2048 MB
# 512 CPU (.5 vCPU): 1024 to 4096 MB
# 1024 CPU (1 vCPU): 2048 to 8192 MB
# 2048 CPU (2 vCPU): 4096 to 16384 MB
# 4096 CPU (4 vCPU): 8192 to 30720 MB

ECS Exec สำหรับการแก้ไขข้อบกพร่อง

ECS Exec ช่วยให้คุณเปิดเซสชันเชลล์แบบโต้ตอบโดยตรงในคอนเทนเนอร์ที่กำลังทำงานอยู่ (ทั้ง EC2 และ Fargate) โดยไม่ต้องใช้ SSH หรือโฮสต์ Bastion เบื้องหลัง ฟีเจอร์นี้ใช้ Session Manager ของ AWS Systems Manager เปิดใช้งานบนบริการ แล้วใช้ CLI execute-command เพื่อเริ่มเซสชัน bash ฟีเจอร์นี้มีประโยชน์อย่างมากสำหรับการแก้ไขปัญหาที่เกิดขึ้นในคอนเทนเนอร์บนระบบจริง บทบาทของทาสก์ต้องมีสิทธิ์ SSM ได้แก่ ssmmessages:CreateControlChannel และสิทธิ์ที่เกี่ยวข้อง

aws ecs execute-command \
  --cluster 'MyAppCluster' \
  --task 'abc123def456' \
  --container 'myapp' \
  --interactive \
  --command '/bin/bash'

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า: ประเภทการเปิดใช้งาน EC2 ให้การควบคุมประเภทอินสแตนซ์และการกำหนดค่า OS ได้อย่างเต็มที่ แลกกับการต้องจัดการกลุ่มทรัพยากรเบื้องหลังเอง จึงเหมาะสำหรับ GPU ฮาร์ดแวร์เฉพาะทาง หรืองานที่มีการใช้งานสูงอย่างสม่ำเสมอ, Fargateขจัดการจัดการโครงสร้างพื้นฐานด้วยการคิดค่าบริการทาสก์เป็นรายวินาทีและการแยกการทำงานที่ปลอดภัยด้วย Firecracker จึงเหมาะสำหรับงานเว็บ/API ส่วนใหญ่และงานแบบแบตช์ และ Fargate Spotช่วยลดค่าใช้จ่ายได้สูงสุด 70% สำหรับงานที่ยอมให้ถูกขัดจังหวะได้ บทถัดไป เราจะเรียนรู้เกี่ยวกับ Amazon ECR สำหรับจัดเก็บและดึงอิมเมจคอนเทนเนอร์

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

บทเรียน “ประเภทการเปิดใช้งาน EC2 เทียบกับ Fargate” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ประเภทการเปิดใช้งาน EC2 เทียบกับ Fargate” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ประเภทการเปิดใช้งาน EC2 เทียบกับ Fargate”

เปรียบเทียบการจัดการอินสแตนซ์คอนเทนเนอร์ EC2 ด้วยตนเองกับการใช้ Fargate เพื่อเรียกใช้คอนเทนเนอร์แบบไร้เซิร์ฟเวอร์ พร้อมทำความเข้าใจความแตกต่างด้านต้นทุน คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cloud & IT Cert Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ประเภทการเปิดใช้งาน EC2 เทียบกับ Fargate” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม

ได้ บทเรียน Cloud & IT Cert Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คลัสเตอร์ ECS คำจำกัดความงาน และบริการ
  2. ประเภทการเปิดใช้งาน EC2 เทียบกับ Fargate
  3. ECR: การจัดเก็บและดึงอิมเมจคอนเทนเนอร์
  4. การปรับขนาดอัตโนมัติและการทำโหลดบาลานซ์บริการ ECS
← กลับไปที่ Cloud & IT Cert Prep