Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สิ่งที่ควรทำก่อนจะเริ่ม Microservices

$
0
0

ในเรื่องของ Microservices นั้นเรามักจะพูดกันถึง จะออกแบบ และ แยก service ออกมาเป็น Microservices กันอย่างไร ? จะต้องพัฒนาอย่างไร ? จะต้องทดสอบอย่างไร ? จะต้องดูแลอย่างไร ? แต่ก่อนที่จะไปกันไกล ให้กลับมาดูตัวเราเองก่อนว่า มีสิ่งที่ Microservices ต้องการหรือยัง ? ซึ่งเป็นความรู้และสิ่งจำเป็นพื้นฐานอย่างมาก ในมุมมองของนักพัฒนานั้น การทำอะไรที่มันเล็ก ๆ แยกส่วนการทำงานออกจากกันอย่างชัดเจน เป็นสิ่งที่ชอบมาก ๆ ( แต่หาไม่ค่อยเจอ ) ดังนั้นจึงชอบแนวคิดของ Modular และ Microservices อย่างมาก แต่เมื่อมองในมุมของ operation พบว่ามันน่าสะพรึงกลัวอย่างมาก เป็นเรื่องที่เครียดมาก ๆ เพียงระบบเดียวยังดูแลยากลำบาก เพียงระบบเดียวยังติดตั้งยาก เพียงระบบเดียวยัง ... ยากลำบาก ดังนั้นก่อนจะเริ่ม Microservices มาเตรียมสิ่งเหล่านี้ให้พร้อมก่อนดีกว่าไหม ?

1. เตรียม environment ได้เร็วไหม ?

ตัวอย่างเช่นการเตรียมหรือ provisioning server ขึ้นมา ไม่ว่าจะเป็นเครื่องจริง ๆ หรือบน Cloud นั้น ใช้เวลานานเท่าไร ? มีขั้นตอนการทำงานที่เยอะหรือไม่ ? เช่น ใช้เวลาเป็นชั่วโมง เป็นวันกว่าจะได้ ? ต้องผ่านการ approve หลายฝ่าย กว่าจะได้ ? ถ้ายังเป็นแบบนี้ แสดงว่ายังไม่พร้อมนะ ดังนั้นควรต้องเตรียมการเตรียม environment ให้รวดเร็ว มีคุณภาพ การทำงานควรเป็นแบบอัตโนมัติ ซึ่งอาจจะดูไม่สำคัญสำหรับระบบงานที่ไม่เยอะ แต่เมื่อเข้าสู่โลก Microservices แล้วเป็นสิ่งที่ขาดไม่ได้เลย

2. ขั้นตอนการ deploy ระบบงานเร็วไหม ?

ยกตัวอย่างเช่น เมื่อมีการเปลี่ยนแปลง source code และ configuration ต่าง ๆ แล้ว ขั้นตอนการ build -> test -> package -> deploy นั้นมีความเร็วเท่าไร ? รวมไปถึงการ deploy ใน environment ต่าง ๆ เช่น QA/Test, UAT, Staging และ Production ใช้เวลาเป็นชั่วโมง เป็นวันหรือไม่ ? ยังทำแบบ manual หรือไม่ ? ถ้ายังเป็นเช่นนี้ ก็ให้ปรับปรุงและเปลี่ยนแปลงก่อนเลย ด้วยการกำหนดหรือสร้าง Deployment pipeline ขึ้นมา ทำงานแบบอัตโนมัติให้ได้มากที่สุด แต่สุดท้ายจำเป็นต้องเป็นแบบอัตโนมัติ

3. ระบบ Monitoring

ส่วนใหญ่เรามักมีระบบ Monitoring ทั้ง infrastructure และ application บน production server เท่านั้น แต่กลับไม่มีใน environment อื่น ๆ ทำให้เจอปัญหาได้ช้ามาก และแก้ไขก็ช้าเช่นกัน บ่อยครั้งต้องเสียค่าใช้จ่ายในการแก้ไขสูงมาก ดังนั้นสิ่งที่ควรต้องมีระบบ Monitoring ใน environment ต่าง ๆ ด้วย อาจจะจะไม่ครบหรือเต็มเหมือนกับ production แต่ขอให้มีแบบขั้นพื้นฐานทาง technical issue เป็นต้นก่อน เพื่อช่วยให้เห็นปัญหาได้รวดเร็วขึ้น

โดยทั้ง 3 สิ่งนี่แหละ คือ สิ่งที่จำเป็นมาก ๆ ต่อ Microservices

นั่นหมายความว่า ทั้งทีม Development และ Operation ต้องทำงานร่วมกัน เพื่อให้เกิดสิ่งต่าง ๆ เหล่านี้ขึ้นมา มันคือ DevOps culture ชัด ๆ ขอให้สนุกกับการ coding ครับ Reference Websites https://martinfowler.com/bliki/MicroservicePrerequisites.html https://martinfowler.com/articles/break-monolith-into-microservices.html

Viewing all articles
Browse latest Browse all 1997

Trending Articles