รูปแบบการออกแบบไมโครเซอร์วิสที่สำคัญที่สุดเพื่อเตรียมพร้อมสำหรับการสัมภาษณ์

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

รูปแบบการออกแบบไมโครเซอร์วิสทำงานอย่างไร

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

API เกตเวย์:

API Gatewayเป็นบริการที่ทำหน้าที่เป็นส่วนหน้าสำหรับไมโครเซอร์วิส ได้รับคำขอจากลูกค้าและกำหนดเส้นทางไปยังบริการที่เหมาะสม

รูปแบบเกตเวย์ API ทำงานอย่างไร:

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

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

เบรกเกอร์:

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

รูปแบบ Circuit Breaker ทำงานอย่างไร:

รูปแบบ Circuit Breaker ทำงานโดยการตรวจสอบความสมบูรณ์ของส่วนประกอบระบบและดำเนินการเมื่อตรวจพบความล้มเหลว Circuit Breaker มีสามสถานะ: ปิด, เปิด, และเปิดครึ่งหนึ่ง

  1. สถานะปิด: ในสถานะปิด Circuit Breaker ช่วยให้ทราฟฟิกไหลไปยังส่วนประกอบของระบบได้ตามปกติ Circuit Breaker ตรวจสอบเวลาตอบสนองและอัตราข้อผิดพลาดของส่วนประกอบระบบ
  2. สถานะเปิด: หาก Circuit Breaker ตรวจพบว่าส่วนประกอบของระบบล้มเหลว มันจะตัดการทำงานและเข้าสู่สถานะเปิด ในสถานะเปิด Circuit Breaker จะหยุดทราฟฟิกทั้งหมดไปยังคอมโพเนนต์ระบบ และเปลี่ยนเส้นทางทราฟฟิกไปยังคอมโพเนนต์สำรอง หรือส่งคืนข้อความแสดงข้อผิดพลาดไปยังไคลเอนต์
  3. สถานะครึ่งเปิด: หลังจากผ่านไประยะหนึ่ง 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

บทช่วยสอนการบันทึก Spring Boot

การกำหนดค่าจากส่วนกลางใน Spring Boot