ทีม AzureCAT จาก Microsoft ได้ออกมาเปิดเผยถึง 9 Design Pattern สำหรับการออกแบบระบบที่ใช้สถาปัตยกรรม Microservices บน Azure Architecture Center เพื่อตอบรับต่อความต้องการในรูปแบบที่แตกต่างกันไป ดังต่อไปนี้

- Ambassador ใช้สำหรับ Offload วิธีการเชื่อมต่อไปยังผู้ใช้งาน เช่น การ Monitor, การเขียน Log, การทำ Routing และการทำ Security เช่น TLS ออกไป
- Anti-corruption layer พัฒนา Layer ขึ้นมาคั่นระหว่างระบบปัจจุบันกับ Application เดิม เพื่อให้การออกแบบ Application ใหม่ๆ นั้นไม่มีข้อจำกัดที่ขึ้นกับระบบเก่าอีกต่อไป
- Backends for Frontends พัฒนา Backend แยกสำหรับ Frontend แต่ละรูปแบบ เช่น Desktop และ Mobile ทำให้ไม่เกิด Conflict ในการจัดการ Client ในรูปแบบที่ต่างกัน
- Bulkhead แยกทรัพยากรสำคัญ เช่น CPU, Memory และ Connection Pool สำหรับให้แต่ละ Workload หรือ Service ใช้แบบแยกจากกันเด็ดขาด
- Gateway Aggregation รวม Request ที่จะเรียกต่อไปยัง Microservices จำนวนมากภายใน Request เดียว ลดปริมาณ Traffic ที่จะเกิดขึ้นระหว่างผู้เรียกใช้งานและผู้ให้บริการ
- Gateway Offloading ให้ Microservices หลายๆ ระบบแบ่งปันงานบางอย่างให้ทำร่วมกันที่เดียวแทน เช่น การให้การจัดการ SSL เป็นหน้าที่ของ API Gateway เป็นต้น
- Gateway Routing มีระบบ Endpoint กลางสำหรับเชื่อมต่อไปยัง Microservices หลายๆ บริการ ทำให้ผู้เรียกใช้งานไม่ต้องเชื่อมต่อแยกไปยังแต่ละ Endpoint ของแต่ละ Microservices เอง
- Sidecar สร้างระบบ Helper สำหรับแต่ละ Application แยกออกมาเป็นอีก Container หรืออีก Process เพื่อทำ Isolation และ Encapsulation
- Strangler ทำให้สามารถทะยอย Migrate ระบบด้วยการเปลี่ยนฟังก์ชันทีละส่วน ด้วยการทดแทนบริการเดิมๆ ด้วยบริการใหม่ๆ ได้
การจำแนกประเภทของการออกแบบ Microservices ออกมาให้แยกย่อยขึ้นได้นี้ จะช่วยให้การพัฒนา Application สามารถเลือกใช้แนวทางที่เหมาะสมกับบริการในรูปแบบต่างๆ และทำให้การพัฒนา Application ในส่วนต่างๆ ไม่ขึ้นต่อกันและกันได้มากขึ้น
ที่มา: https://azure.microsoft.com/en-us/blog/design-patterns-for-microservices/
TechTalkThai ศูนย์รวมข่าว Enterprise IT ออนไลน์แห่งแรกในประเทศไทย






