วันนี้เราจะมาพูดถึงความแตกต่างระหว่าง 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 ครับ