ข้ามไปเนื้อหาหลัก
จัดการ & มอนิเตอร์· ~16 นาที· อัปเดตล่าสุด

High Availability และ Fault Tolerance

ออกแบบให้ระบบไม่ล่มแม้บางส่วนพัง

เปรียบเทียบ: HA vs Fault Tolerance

High Availability (HA) เหมือนมีบันไดหนีไฟสำรองเมื่อลิฟต์เสีย (ยังเดินต่อได้ แต่อาจต้องเดินลงบันไดช้าลงนิดนึง) · Fault Tolerance เหมือนเครื่องบินที่มีหลายเครื่องยนต์ ถ้าเครื่องดับไปตัวหนึ่งก็ยังบินต่อได้เนียนๆ ผู้โดยสารไม่รู้ตัวเลย

พื้นฐานที่ควรรู้: กฎเหล็กของระบบคลาวด์คือ "จงออกแบบโดยคิดเสมอว่าทุกอย่างพังได้ (Design for Failure)" เราต้องเตรียมความพร้อมเพื่อไม่ให้ระบบล่มเมื่อเซิร์ฟเวอร์หรือแม้แต่ศูนย์ข้อมูลของ AWS ดับไป

  • High Availability (HA - ความพร้อมใช้งานสูง) — ออกแบบให้ช่วงเวลาที่ระบบใช้งานไม่ได้ (Downtime) น้อยที่สุด เช่น กระจายเครื่องข้ามหลาย Availability Zones (AZ), ใช้ Auto Scaling ชดเชยเครื่องที่พัง, ใช้ RDS Multi-AZ
  • Fault Tolerance (ความทนทานต่อความล้มเหลว) — ระบบสามารถทนทานต่ออุปกรณ์พังได้ โดยที่ผู้ใช้งานแทบไม่ได้รับผลกระทบเลย (มักต้องเช่าทรัพยากรเผื่อความจุไว้)
  • หลักสำคัญที่สุด: หลีกเลี่ยง Single Point of Failure (จุดล้มเหลวจุดเดียว) — ต้องมีอุปกรณ์/ทรัพยากรสำรองอย่างน้อย 2 ชิ้น ในแต่ละชั้น (Tier) และกระจายอยู่ข้าม AZ เสมอ
AutoScalingGroup:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    MinSize: '2'
    MaxSize: '4'
    VPCZoneIdentifier:
      - subnet-11111111 # AZ-a
      - subnet-22222222 # AZ-b
    LaunchConfigurationName: !Ref MyLaunchConfig
💻 Hands-on: ตัวอย่างการตั้งค่า Auto Scaling Group ให้กระจายไป 2 AZ (YAML)

สรุป Key Takeaways

  • HA = downtime น้อย (multi-AZ, ASG, Multi-AZ DB)
  • Fault Tolerance = ทนล้มเหลวโดยไม่กระทบผู้ใช้
  • เลี่ยง single point of failure: อย่างน้อย 2 ของทุกอย่าง ข้าม AZ

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

High Availability กับ Fault Tolerance ต่างกันยังไง

HA = ล่มได้แต่ฟื้นเร็ว/สะดุดน้อย (Multi-AZ failover มี downtime สั้นๆ) ส่วน FT = พังแล้วผู้ใช้ "ไม่รู้สึกเลย" (ระบบสำรองรับต่อทันที เช่น active-active) — FT แพงกว่ามาก ข้อสอบวัดว่าโจทย์ต้องการระดับไหนจริงๆ อย่าเลือก FT ถ้าโจทย์แค่ขอ HA

ออกแบบให้ stateless ช่วยเรื่อง HA ยังไง

เครื่องไหนตายก็แทนได้ทันทีเพราะไม่มีข้อมูลติดเครื่อง — ย้าย session ไป ElastiCache/DynamoDB, ไฟล์ไป S3/EFS แล้ว ASG replace เครื่องได้อิสระ — โจทย์ "ผู้ใช้หลุด session เมื่อเครื่องถูกแทนที่" = ย้าย session ออกจากเครื่อง ไม่ใช่เปิด sticky session (ซึ่งเป็นตัวเลือกหลอก)

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

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

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