Microservices คืออะไร?
HTML-код
- Опубликовано: 16 окт 2024
- มาทำความรู้จักกับ Architecture ยอดนิยมอย่าง Microservices ซึ่ง แนวโน้มของการพัฒนาซอฟแวร์นั้นจะมีการเพิ่ม requirements และความซับซ้อนมากขึ้นเรื่อยๆในทุกๆปี ดังนั้นเมื่อเวลาผ่านไปความต้องการของ user ก็จะมีมากขึ้นและก็จะยิ่งซับซ้อนมากขึ้นดังนั้นการที่เราพัฒนาระบบขั้นมาเป็นแบบ Monoliths นั้นจะทำให้เกิดข้อจำกัดต่างๆดังนี้
1. ระบบยิ่งมีขนาดใหญ่ ยิ่งมีจำนวน developer มากขึ้น เมื่อคนเยอะขึ้นการสื่อสารก็ทำได้ยากขึ้นตามไปด้วย
2. ปริมาณของ data นั้นจะมีมากขึ้นเรื่อยๆ ยิ่ง data มีปริมาณมาก ความเสี่ยงก็จะมากขึ้นตามไปด้วย(Centralize Database)
3. ยิ่งระบบมีขนาดใหญ่ขึ้นการแก้ไข(maintain)ก็ทำได้ยากขึ้น
4. ยิ่งระบบใหญ่ขึ้นก็ต้องมี module มากขึ้น และเมื่อมี module มากขึ้นการสื่อสารระหว่าง module ก็จะมากขึ้นตามไปด้วย นั่นทำให้ระบบเกิด high coupling(ถอดออกได้ยาก)
5. ยิ่งระบบใหญ่ขึ้น technical debt ก็จะมากขึ้นตามไปด้วย
technical dept คือ การที่เราแก้ปัญหาโดยไม่ได้แก้ที่ต้นเหตุ ดังนั้นปัญหาจริงๆจะยังคงอยู่และเมื่อปัญหาที่เราได้หมกไว้นี้กลับมาเกิดขึ้นใหม่ก็จะทำให้ใช้ต้นทุนทั้งเวลาและจำนวนคนที่เข้ามาแก้ไขปัญกานี้มากขึ้น
ซึ่งนี่ก็เป็นสาเหตุว่าทำไมเราจึงควรเปลี่ยนมาเป็น Microservices Architecture เพื่อที่จะลดปัญหาที่ว่ามาทั้งหมดนี้ เพราะเมื่อ source code มีขนาดเล็กลง ปัญหาก็จะน้อยลงตามไปด้วย
0:10 Monolith คืออะไร
1:00 ปัญหาของ Monolith คืออะไร
3:05 จาก Monolith สู่ Microservices
3:23 ต้องแตก services ขนาดไหนถึงจะพอดี
3:53 สิ่งที่ต้องมีในแต่ละ Service
8:17 หลักการออกแบบ Microservices
ถ้าต้องการแยกกันได้โดยสิ้นเชิง ต้องจัดการเรื่องฐานข้อมูลอย่างไรคะ ถ้ากรณีอีก service นึงล่ม แต่อีก service นึงต้องการข้อมูล ทีอยู่ในอีกตัวนึงกรณีแบบนี้ไม่ใช่ microservice ใช่ไหมคะ ถ้ายังต้องการร้องขอ ข้อมูลข้าม Service อันนี้คือถามแบบไม่มีความรู้เรื่อง microservice เลยหน่ะค่ะ
database จะต้องแยกกันอย่างเด็ดขาด ของใครของมันซึ่งเราสามารถนำข้อมูลที่ต้องใช้กับหลายๆ service ไปเก็บไว้ใน cache ได้ครับ ถ้า service เจ้าของข้อมูล down ไปจะยังมีข้อมูลใน cache ให้ใช้งาน
ขอบคุณมากค่ะ@@codinggun7966 😊
ขอบพระคุณครับจาน
ขอบคุณครับ
แต่ละservice ก็มี frontend ของมันเองใช่ไหมครับ
ไม่จำเป็นครับ ถ้าแยก frontend ด้วยจะกลายเป็น Microfrontend ครับ
แล้วถ้่า deploy ไปที่ผู้ให้บริการเดียวกันเช่น aws จะยังถือเป็น microserviceไหมครับ
ยังเป็น microservices อยู่ครับ ถือว่าคนละเครื่องกัน(container หรือ vm) แต่ที่สำคัญเลยคือ database ต้องแยกกัน
ใครมีคำถามเกี่ยวกับ Microservices สามารถ comment. ไว้ในนี้ได้เลยนะครับ
0:10 Monolith คืออะไร
1:00 ปัญหาของ Monolith คืออะไร
3:05 จาก Monolith สู่ Microservices
3:23 ต้องแตก services ขนาดไหนถึงจะพอดี
3:53 สิ่งที่ต้องมีในแต่ละ Service
8:17 หลักการออกแบบ Microservices
ไม่ทำคลิปแล้วรึคะคิดถึงคนึงหายิ่งนัก
กำลังทำอยู่นะครับ อดใจรออีกไม่นาน