ใน Microservices Architecture เมื่อ Service A เรียกใช้ Service B แล้ว Service B ตอบสนองช้าหรือล้มเหลว จนทำให้ Service A ค้างและส่งผลกระทบลุกลามไปยัง Service อื่นๆ ในระบบต่อเนื่องกัน ปรากฏการณ์นี้เรียกว่าอะไร และวิธีป้องกันที่เหมาะสมที่สุดคือข้อใด
กCascading Failure คือความล้มเหลวที่แพร่กระจายเป็นลูกโซ่ระหว่าง Service วิธีป้องกันที่ดีที่สุดคือใช้รูปแบบ Circuit Breaker เพื่อตัดการเชื่อมต่อชั่วคราวเมื่อ Service ปลายทางล้มเหลว
ขDeadlock Failure คือความล้มเหลวที่เกิดจาก Service หลายตัวรอกันเองเป็นวงจร วิธีป้องกันที่ดีที่สุดคือใช้ Load Balancer กระจายภาระงานไปยัง Server หลายเครื่อง
คRace Condition Failure คือความล้มเหลวที่เกิดจาก Service หลายตัวเข้าถึงข้อมูลพร้อมกัน วิธีป้องกันที่ดีที่สุดคือใช้ Message Queue รับส่งข้อมูลระหว่าง Service แบบ Asynchronous
งBottleneck Failure คือความล้มเหลวที่เกิดจาก Service ตัวใดตัวหนึ่งรับภาระงานมากเกินไป วิธีป้องกันที่ดีที่สุดคือขยาย Resource ของ Server ด้วยการทำ Vertical Scaling
เฉลยอธิบาย
Cascading Failure คือความล้มเหลวที่แพร่กระจายเป็นลูกโซ่ใน Microservices เมื่อ Service หนึ่งล้มเหลวและทำให้ Service อื่นที่พึ่งพากันล้มเหลวตามกัน วิธีป้องกันที่มีประสิทธิภาพสูงสุดคือ Circuit Breaker Pattern ซึ่งทำหน้าที่ตรวจสอบสถานะ Service ปลายทาง และเปิดวงจร (Open State) เพื่อหยุดการเรียกชั่วคราวเมื่อพบความผิดปกติ ป้องกันไม่ให้ความล้มเหลวลุกลามไปยัง Service อื่น