รูปแบบการออกแบบไมโครเซอร์วิสที่สำคัญที่สุดเพื่อเตรียมพร้อมสำหรับการสัมภาษณ์
รูปแบบการออกแบบไมโครเซอร์วิสทำงานอย่างไร
รูปแบบการออกแบบไมโครเซอร์วิสได้รับความนิยมมากขึ้น เนื่องจากความสามารถในการปรับปรุงความคล่องตัวของซอฟต์แวร์ ความสามารถในการปรับขนาด ความยืดหยุ่น และการบำรุงรักษา รูปแบบการออกแบบ ไมโครเซอร์วิสคือชุดของหลักการและแนวทางปฏิบัติที่ดีที่สุดที่ใช้ในการพัฒนาและบำรุงรักษาระบบซอฟต์แวร์ที่ประกอบด้วยบริการขนาดเล็กที่ปรับใช้ได้อย่างอิสระ ในบทความนี้ เราจะหารือเกี่ยวกับรูปแบบการออกแบบไมโครเซอร์วิสที่สำคัญที่สามารถใช้เพื่อสร้างไมโครเซอร์วิสที่แข็งแกร่งและมีประสิทธิภาพ สถาปัตยกรรม

API เกตเวย์:
API Gatewayเป็นบริการที่ทำหน้าที่เป็นส่วนหน้าสำหรับไมโครเซอร์วิส ได้รับคำขอจากลูกค้าและกำหนดเส้นทางไปยังบริการที่เหมาะสม
รูปแบบเกตเวย์ API ทำงานอย่างไร:
รูปแบบเกตเวย์ API ทำงานโดยการสกัดกั้นคำขอจากลูกค้าและกำหนดเส้นทางไปยังบริการที่เหมาะสม เมื่อไคลเอนต์ส่งคำขอไปยังระบบ คำขอจะถูกส่งไปยัง API Gateway ก่อน API Gateway จะตรวจสอบว่าคำขอนั้นได้รับอนุญาตหรือไม่ หากเป็นเช่นนั้น ก็จะกำหนดเส้นทางคำขอไปยังบริการที่เหมาะสม
API Gateway ยังสามารถทำหน้าที่อื่นๆ เช่น การจำกัดอัตรา การแคช และการพิสูจน์ตัวตน ตัวอย่างเช่น สามารถจำกัดจำนวนคำขอที่ลูกค้าสามารถส่งไปยังบริการในช่วงเวลาที่กำหนด นอกจากนี้ยังสามารถแคชการตอบสนองจากบริการต่างๆ เพื่อลดภาระของบริการพื้นฐาน
เบรกเกอร์:

รูป แบบ Circuit Breakerใช้เพื่อตรวจจับความล้มเหลวและป้องกันความล้มเหลวแบบเรียงซ้อนในระบบแบบกระจาย ทำงานเหมือนเบรกเกอร์วงจรไฟฟ้า ซึ่งจะตัดและตัดวงจรเมื่อมีไฟเกิน เพื่อป้องกันความเสียหายต่ออุปกรณ์ไฟฟ้า ในทำนองเดียวกัน รูปแบบ Circuit Breaker สามารถตัดและหยุดการไหลของการจราจรไปยังระบบที่ล้มเหลว
รูปแบบ Circuit Breaker ทำงานอย่างไร:
รูปแบบ Circuit Breaker ทำงานโดยการตรวจสอบความสมบูรณ์ของส่วนประกอบระบบและดำเนินการเมื่อตรวจพบความล้มเหลว Circuit Breaker มีสามสถานะ: ปิด, เปิด, และเปิดครึ่งหนึ่ง
- สถานะปิด: ในสถานะปิด Circuit Breaker ช่วยให้ทราฟฟิกไหลไปยังส่วนประกอบของระบบได้ตามปกติ Circuit Breaker ตรวจสอบเวลาตอบสนองและอัตราข้อผิดพลาดของส่วนประกอบระบบ
- สถานะเปิด: หาก Circuit Breaker ตรวจพบว่าส่วนประกอบของระบบล้มเหลว มันจะตัดการทำงานและเข้าสู่สถานะเปิด ในสถานะเปิด Circuit Breaker จะหยุดทราฟฟิกทั้งหมดไปยังคอมโพเนนต์ระบบ และเปลี่ยนเส้นทางทราฟฟิกไปยังคอมโพเนนต์สำรอง หรือส่งคืนข้อความแสดงข้อผิดพลาดไปยังไคลเอนต์
- สถานะครึ่งเปิด: หลังจากผ่านไประยะหนึ่ง Circuit Breaker จะเข้าสู่สถานะครึ่งเปิด ในสถานะเปิดครึ่งหนึ่ง Circuit Breaker อนุญาตให้มีการรับส่งข้อมูลจำนวนจำกัดไปยังส่วนประกอบของระบบ หากส่วนประกอบของระบบตอบสนองต่อการรับส่งข้อมูลได้สำเร็จ Circuit Breaker จะกลับสู่สถานะปิด หากส่วนประกอบของระบบตอบสนองไม่สำเร็จ Circuit Breaker จะกลับสู่สถานะเปิด

ในระบบดั้งเดิม มีโมเดลเดียวที่จัดการทั้งการอ่านและเขียน โมเดลนี้มีหน้าที่ในการรักษาสถานะของระบบ ประมวลผลคำสั่ง และส่งคืนข้อมูลไปยังไคลเอ็นต์ อย่างไรก็ตาม เมื่อระบบมีความซับซ้อนและขนาดเพิ่มขึ้น การปรับขยายและบำรุงรักษาจึงทำได้ยาก
เพื่อแก้ปัญหาข้างต้น รูปแบบ CQRS จะแยกการดำเนินการอ่านและเขียนออกเป็น 2 โมเดลที่แตกต่างกัน ได้แก่ โมเดลคำสั่งและโมเดล Query โมเดลคำสั่งมีหน้าที่จัดการการดำเนินการเขียนและอัพเดตสถานะของระบบ โมเดล Query มีหน้าที่จัดการการดำเนินการอ่านและส่งคืนข้อมูลไปยังไคลเอนต์
รูปแบบ CQRS ทำงานอย่างไร:
เมื่อไคลเอ็นต์ส่งคำสั่งไปยังระบบ คำสั่งนั้นจะถูกจัดการโดยโมเดลคำสั่ง โมเดลคำสั่งประมวลผลคำสั่งและอัพเดตสถานะของระบบ หากคำสั่งสำเร็จ จะส่งคืนข้อความแสดงความสำเร็จไปยังไคลเอ็นต์
เมื่อไคลเอนต์ส่งแบบสอบถามไปยังระบบ จะถูกจัดการโดยแบบจำลองแบบสอบถาม โมเดล Query จะดึงข้อมูลจากระบบและส่งกลับไปยังไคลเอ็นต์ แบบจำลอง Query สามารถปรับให้เหมาะสมสำหรับการดำเนินการอ่าน ซึ่งสามารถปรับปรุงประสิทธิภาพของระบบได้
การจัดหากิจกรรม
การจัดหาเหตุการณ์เป็นรูปแบบที่ใช้ในการออกแบบซอฟต์แวร์ที่เกี่ยวข้องกับการสร้างแบบจำลองสถานะของแอปพลิเคชันเป็นลำดับของเหตุการณ์ แทนที่จะจัดเก็บสถานะปัจจุบันของแอปพลิเคชัน ระบบจะจัดเก็บลำดับเหตุการณ์
การจัดหากิจกรรมทำงานอย่างไร:
รูปแบบการจัดหาเหตุการณ์ทำงานโดยการจัดเก็บลำดับเหตุการณ์ที่อธิบายการเปลี่ยนแปลงสถานะของแอปพลิเคชัน แต่ละเหตุการณ์จะถูกจัดเก็บเป็นบันทึกแยกต่างหากในที่เก็บเหตุการณ์ ซึ่งเป็นฐานข้อมูลที่ปรับให้เหมาะสมสำหรับการจัดเก็บเหตุการณ์จำนวนมาก
เมื่อผู้ใช้โต้ตอบกับระบบ ระบบจะสร้างเหตุการณ์ที่อธิบายการกระทำของผู้ใช้ ตัวอย่างเช่น หากผู้ใช้ทำการสั่งซื้อ ระบบจะสร้างเหตุการณ์ที่อธิบายรายละเอียดการสั่งซื้อ เหตุการณ์จะถูกจัดเก็บไว้ในที่เก็บเหตุการณ์ และระบบจะอัปเดตสถานะของแอปพลิเคชันตามเหตุการณ์
เมื่อจำเป็นต้องสอบถามสถานะของแอปพลิเคชัน ระบบจะอ่านเหตุการณ์ทั้งหมดในที่เก็บเหตุการณ์และนำไปใช้ตามลำดับเพื่อสร้างสถานะปัจจุบันของแอปพลิเคชันใหม่ กระบวนการนี้เรียกว่าการเล่นซ้ำเหตุการณ์
รูปแบบซากะ

รูปแบบการออกแบบ Saga เป็นเทคนิคที่ใช้ในระบบแบบกระจายเพื่อรักษาความสม่ำเสมอในธุรกรรมหลายรายการที่เกี่ยวข้องกับบริการต่างๆ ใช้ในการจัดการธุรกรรมแบบกระจายในหลายบริการในลักษณะที่รับประกันความสอดคล้องของข้อมูล
ในระบบแบบกระจาย เป็นเรื่องปกติที่ธุรกรรมเดียวจะเกี่ยวข้องกับหลายบริการ ตัวอย่างเช่น ในระบบอีคอมเมิร์ซ คำสั่งซื้อเดียวอาจต้องมีการอัปเดตบริการสินค้าคงคลัง บริการชำระเงิน และบริการจัดส่ง หากบริการเหล่านี้ล้มเหลว อาจนำไปสู่ความไม่สอดคล้องกันในข้อมูล รูปแบบ Saga ช่วยให้มั่นใจได้ว่าการทำธุรกรรมเสร็จสมบูรณ์หรือย้อนกลับหากมีข้อผิดพลาดเกิดขึ้น
รูปแบบ Saga ทำงานโดยแบ่งธุรกรรมเดียวออกเป็นธุรกรรมย่อยๆ หลายรายการ หรือที่เรียกว่า "ธุรกรรมชดเชย" ธุรกรรมการชดเชยเหล่านี้ดำเนินการตามลำดับเฉพาะและได้รับการออกแบบเพื่อยกเลิกผลกระทบของธุรกรรมก่อนหน้าหากมีข้อผิดพลาดเกิดขึ้น ลำดับของการทำธุรกรรมชดเชยเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าระบบยังคงสอดคล้องกัน
บทสรุป
แม้ว่ารูปแบบการออกแบบไมโครเซอร์วิสจะมีประโยชน์มากมาย แต่ก็ทำให้เกิดความซับซ้อนใหม่ๆ เช่น การจัดการบริการ การสื่อสารระหว่างบริการกับบริการ และการจัดการระบบแบบกระจาย ดังนั้น สิ่งสำคัญคือต้องพิจารณาอย่างรอบคอบถึงรูปแบบการออกแบบที่เหมาะสมสำหรับแอปพลิเคชันที่กำหนด โดยคำนึงถึงข้อกำหนดทางธุรกิจ ข้อจำกัดทางเทคนิค และความเชี่ยวชาญของทีมพัฒนา
โดยรวมแล้วด้วยรูปแบบการออกแบบไมโครเซอร์วิส องค์กรต่างๆ สามารถสร้างระบบซอฟต์แวร์ที่มีความยืดหยุ่น ปรับขยายได้ และยืดหยุ่นได้มากขึ้น
อ้างอิงลิงค์สำหรับ Spring Boot Concepts:
การเข้าถึงตามบทบาทของ Spring Security ด้วย Spring Boot
Spring Security การรับรองความถูกต้องและการอนุญาตด้วย JWT
บทช่วยสอน Spring AOP