Microservices VS Monoliths

วันนี้เราจะมาพูดถึงความแตกต่างระหว่าง Monoliths กับ Microservices กันนะครับ โดยปกติแล้วเวลาเราจะสร้างแอปพลิเคชั่นแต่ละตัวขึ้นมาจะต้องมีการเขียน Code ขึ้นมาก่อนไม่ว่าจะเป็นภาษา PHP, Java, Python หรืออื่นๆอีกมาย ซึ่งถ้าเป็นสมัยก่อนเราจะสร้างแอปพลิเคชั่นทุกๆอย่างบนไฟล์ Code ในไฟล์เดียวหรือเราจะเรียกว่าเป็น Monoliths ก็ได้ครับซึ่งประกอบไปด้วย Database, Client-side user interface , และก็ Server-side ครับ

ทีนี้เรามาดูข้อดีข้อเสียของการสร้างแอปพลิเคชั่นด้วย Monoliths กันครับ

ข้อดี

– ง่ายต่อการทดสอบหรือการแก้ปัญหาต่างๆ

– ง่ายต่อการ Deploy เพราะเรามีแค่ไฟล์เดียว

– ง่ายต่อการพัฒนาแอปพลิเคชั่น

ข้อเสีย

– ความยากลำบากในการเข้าใจ Coding ในกรณีที่มีแอปพลิเคชั่นมากมายในหนึ่งไฟล์ (Tightly Coupled)

– ยากต่อการย้ายไปใช้ Modern application เพราะนักพัฒนาจะต้องเขียนโค้ดใหม่ทั้งหมด

– ยากต่อการ Scale เพราะถ้าอยากจะ Scale ต้อง Scale ทุกๆแอปพลิเคชั่น (Bottlenecks)

ต่อมาเราจะมาพูดถึง Microservices กันนะครับ Microservices คือการแบ่งแยกแอปพลิเคชั่นออกมาเป็นย่อยๆหรือที่เราเรียกว่า Loosely Coupled ซึ่งแต่ละแอพจะมีการเขียน logic ที่แตกต่างกันออกไปครับ

 

หลายท่านอาจจะสงสัยว่าถ้าแยกแอพออกมาแล้วมันจะ Communicate ได้อย่างไร

เราสามารถใช้ API หรือที่เรียกว่า Application Programming Interface ในการคุยหรือสื่อสารกันครับ

ทีนี้เราจะมาดูข้อดีข้อเสียการ Deploy แอพแบบ Microservices กันนะครับ

ข้อดี

–  ง่ายต่อการบริหารจัดการในกรณีที่ Developer มีการอัพเดท Code ก็จะไม่กระทบกับ Application ตัวอื่นครับ

–  ง่ายต่อการเข้าใจเพราะเราสามารถ focus กับ service ที่เราอยากจะพัฒนาได้

–  ง่ายต่อการ Scale ครับเพราะแต่ละ Application มีส่วนประกอบที่แยกกันออกไปโดยจะไม่มีการกระทบซึ่งกันและกัน

 

ข้อเสีย

– การ deploy แบบ Microservices เป็น Distributed system นั่นหมายความว่าแอพทุกแอพจะมีมีการคุยกันโดยเฉพาะ Database เพื่อให้แอพมีการใช้งานที่สมบูรณ์แบบ

– ยากต่อการทดสอบในกรณีที่มีแอปพลิเคชั่นหลายตัว

 

ทั้งหมดทั้งมวลนี้การสร้างหรือ Deploy Applications ก็ขึ้นอยู่กับความต้องการของ User ว่าอยากได้ Microservices หรือ Monoliths ซึ่งทาง PROEN เองเรามี Platform ที่สามารถสร้าง Applications ที่เป็นแบบ Microservice ได้ถ้าหากสนใจสามารถเข้าไปดูรายละเอียดเพิ่มเพิมได้ที่ proen.cloud ครับ