ผู้ใช้ส่งอินพุตที่ไม่คาดคิดและระบบต้องตรวจสอบที่ขอบเขตความเชื่อถือ จึงถามว่า เว็บแอปพลิเคชันต้องการ Transaction ที่ครอบคลุมหลาย Microservices เช่น ระบบ Order ต้องตัดสต็อกสินค้าและตัดยอดเงินในบัญชีพร้อมกัน หากบริการใดบริการหนึ่งล้มเหลวต้องยกเลิกทั้งหมด ควรใช้ Pattern ใด

ใช้ Two-Phase Commit (2PC) เพราะรองรับ ACID Transaction ข้ามหลาย Service
ใช้ Database Foreign Key Constraint เพื่อบังคับความสอดคล้อง
ใช้ Single Shared Database สำหรับทุก Microservice เพื่อให้ Transaction ทำงานได้
ใช้ Saga Pattern โดยแบ่งเป็น Compensating Transactions สำหรับแต่ละ Step เมื่อเกิดความล้มเหลว

เฉลยอธิบาย

Saga Pattern เป็นแนวทางมาตรฐานสำหรับ Distributed Transaction ใน Microservices โดยแบ่ง Transaction ออกเป็น Series of Local Transactions แต่ละ Step มี Compensating Transaction สำหรับยกเลิกหากเกิดความล้มเหลว ตัวเลือก A Two-Phase Commit มีปัญหา Blocking และ Single Point of Failure ไม่เหมาะกับ Distributed System, ตัวเลือก C Foreign Key ใช้ได้เฉพาะ Database เดียวกัน, ตัวเลือก D Shared Database ขัดหลัก Loose Coupling ของ Microservices

ข้อสอบอื่นในวิชาความรู้เกี่ยวกับการพัฒนาโปรแกรมระบบงานในลักษณะ Web Application

ดูข้อสอบวิชานี้ทั้งหมด →