Microservices คือ สถาปัตยกรรมซอฟต์แวร์แบบหนึ่งที่ถูกออกแบบโดยการ นำ service ต่างๆ แยกออกมาเป็น service ของตัวเองเพื่อให้ service นั้นทำงานอย่างใดอย่างหนึ่งไปเลย และยังเป็นอิสระ สามารถมีฐานข้อมูลเป็นของตัวเอง ถ้าต้องการข้อมูลจาก service อื่น ก็สามารถเรียกใช้ผ่าน API ได้
มันคงจะดีเลยหละ การที่ทีมหลายๆทีม สามารถทำงานได้โดยไม่ต้องรอกัน
จากคำกล่าวข้างต้น ก็เริ่มสงสัยแล้วสิ ว่ามันเป็นยังไง เรามาดูรูปต่อไปกันดีกว่า
โดย James Lewis และ Martin Fowler
ให้คำจำกัดความของ Microservices ว่า
- เป็นรูปแบบการพัฒนา Application โดยการแบ่ง service ออกเป็นชิ้นเล็กๆ
- service สามารถทำงานจนจบกระบวนการได้ด้วยตนเอง
- แต่ละ service ไม่จำเป็นที่จะต้องเขียนด้วยภาษาโปรแกรมแบบเดียวกัน
- สามารถแยกใช้วิธีการเก็บข้อมูลที่แตกต่างกันได้
สมมุติว่า เราพัฒนาระบบ E-Wallet ก็จะสามารถ แยก ฟังชั่น ต่างๆ ออกเป็นระบบเล็กๆ ดังนี้
– Registration (ระบบลงทะเบียน)
– Authentication (ระบบล็อคอิน)
– Top-up (ระบบเติมเงิน)
– Transfer (ระบบโอนเงิน)
– Payment (ระบบชำระเงิน)
จะเห็นได้ว่า เราทำการแยกการพัฒนาระบบ
เป็นแต่ละ Service ออกจากกันอย่างชัดเจน ทำให้เมื่อบางระบบพัง ก็จะกระทบระบบอื่นน้อยลงเช่นกัน
ข้อดี
Scalable : สามารถขยายขนาดเพื่อรองรับผู้ใช้งานได้ง่าย เช่น เลือกขยาย Service ที่ถูกใช้งานเยอะๆ
Reliability : บาง Service พัง ก็ไม่กระทบกับระบบโดยรวม เพราะแยกการทำงานจากกันชัดเจน
Design autonomy : แต่ละ Service สามารถเลือกใช้ เทคโนโลยี ที่แตกต่างกัน ตามความเหมาะสม
Modifiability : ปรับเปลี่ยนได้ไว เนื่องจากแยก Service อย่างชัดเจน ไม่จำเป็นต้อง Deploy ทั้งระบบ
ข้อด้อย
Complexity : ออกแบบฯ Architecture ให้ดี ยาก
Security : แยกหลาย Service ทำให้ จัดการ Security ยากขึ้น
Data : กรณีแยก การเก็บข้อมูลจากกัน จะยากต่อการจัดการ Data consistency
Infrastructure automation : ต้องมีการจัดการ Infrastructure ที่ดีมากเพราะการ deploy เซอร์วิซจำนวนมากนั้นจะทำ Manual ยากมากส่วนใหญ่ต้องใช้การทำ Automation
Cr. medium(Piyawut Thongsang), medium(Sakul Montha), Siam Chamnankit Family, techtalkthai, thaiprogramer