Menu Close

Monolithic กับ Microservices Architecture ต่างกันอย่างไร ?

วันนี้มีความต้องการความรู้ topic ใหม่ในเรื่องของความแตกต่าง ระหว่าง Monolithic และ Microservices ว่าแตกต่างกันอย่างไร จึงได้เผยแพร่บทความนี้ให้ผู้ที่กำลังศึกษาได้ทำความรู้จักกับความแตกต่างของเฟรมเวิร์กของสองชนิดนี้ โดยการเริ่มต้นถาม ChatGPT เพื่อหาคำตอบในการสืบค้นข้อมูลเชิงลึก

ลองถาม ChatGPT ดูว่า

 

“If you a senior software engineer can you explain to me how difference between micro service and monolit”

ก็ได้คำตอบมาประมาณว่า

ChatGPT ได้แยกประเด็นการเปรียบเทียบมา 6 หัวข้อ เช่น Codebase, Coupled, การดีพลอย, การสเกล, การพัฒนาและการทำการทดสอบ และ เทคโนโลยี Stack
เดี๋ยวเรามาดูกันว่า ChatGPT ได้ให้ข้อมูลมาอย่างไรบ้าง

สำหรับ Monolithic Architecture

monolithic framework

การใช้ Monolithic Architecture เป็นรูปแบบการพัฒนาซอฟแวร์แบบ traditional ซึ่งเหมาะแก่การสร้างแอพพลิเคชั่นขนาดเล็ก

 

การเปรียบเทียบ จาก Monolithic มีอะไรบ้าง ?

Single Codebase:

ในการใช้สถาปัตยกรรมแบบ Monolithic Architecture หรือในวงการนิยมเรียกสั้นๆว่า “Flutter” , โดยทั้งแอพพลิเคชั่นของเรานั้นจะใช้ จะถูกสร้างแบบ Single หรือ แบบยึดเหนียวแน่น (cohesive unit)  โดยที่การใช้งานต่างๆ นั้นประสานกัน และมีอยู่ใน single codebase

Tightly Coupled:

ส่วนต่างๆของระบบได้ถูกเชื่อมโยงกันแบบแน่นๆ (tightly coupled), หมายความว่า เปลี่ยนอะไรบางอย่างในระบบก็สามารถกระทบในส่วนอื่นๆของแอพพลิเคชั่นของเราได้

Deployment:

คือการที่แอพพลิเคชั่นทั้งหมดของเราถูกดีพลอยในรูปแบบยูนิตเดี่ยว ในทุกๆการเปลี่ยนแปลงแม้แต่การเปลี่ยนแปลงเล็กๆ จำเป็นต้องถูกดีพลอยใหม่ทั้งระบบ

Scaling:

Scaling หรือการขยายโครงสร้างพื้นฐาน ในที่นี้หมายถึง Network ให้ใหญ่ขึ้น มันสามรถทำให้ได้โดยการ คัดลอกของข้อมูล (replicating) ทั้งหมดในแอพพลิเคชั่น ข้ามไปในเซิร์ฟเวอร์ต่างๆ สิ่งนี้อาจทำให้เกิดความไม่มีประสิทธิภาพหากมีส่วนใดส่วนหนึ่งเฉพาะที่มีประสบการณ์โหลดในระดับสูง

Development and Testing:

เมื่อทั้งหมดของระบบอยู่ในที่เดียวกัน การพัฒนาและการทำการทดสอบจะมีความเรียบง่ายในช่วงต้น แต่อย่างไรก็ตาม เมื่อระบบได้โตขึ้นการจัดการ codebase และการทำความเข้าใจการพึ่งพากันของระบบนั้นจะประสบกับความท้าทายเป็นอย่างสูง

Technology Stack:

โดยส่วนใหญ่จะใช้รูปแบบ single technology stack ในระบบ ซึ่งจะทำให้ยากขึ้นเมื่อมีการเริ่มใช้เทคโนโลยีใหม่ๆสำหรับส่วนที่เฉพาะเจาะจงในระบบ

 

การเปรียบเทียบ จาก Microservices มีอะไรบ้าง ?

Multiple Codebases:

ในรูปแบบสถาปัตยกรรม microservices นั้น แอพพลิเคชั่นได้ถูกย่อยขนาดให้เล็กลง มีการแบ่ง service เป้นอิสระต่อกันโดยแต่ละ service จะมี codebase เป็นของตนเอง

Loosely Coupled:

Services จะถูกเชื่อมโยงกันแบบหลวมๆ และมีการติดต่อสื่อสารกันผ่าน API ที่ถูกระบุอย่างชัดเจน การเปลี่ยนแปลงใน service ใดๆอันหนึ่งจะไม่ค่อยส่งผลกระทบต่ออันอื่น

Deployment:

ในแต่ละ microservice สามารถ deployed ได้อย่างอิสระ นั่นหมายความว่า เราสามารถทำการอัปเดท ดีพลอย และ สเกล ในแต่ละส่วนของแอปพลิเคชั่นโดยไม่ส่งผลกระทบต่อระบบทั้งหมด

Scaling:

ในแต่ละ services สามารถทำการสเกลได้อย่างอิสระไม่ขึ้นต่อกัน บนพื้นฐานของความต้องการต่างๆ ซึ่งมันทำให้เกิดประสิทธิภาพในการใช้ทรัพยากรณ์ based on demand. This allows more efficient use of resources.

Development and Testing:

การพัฒนาสามารถทำได้อย่างซับซ้อนตั้งแต่แรกเริ่ม จากที่มีการคาบเกี่ยวของการจัดการหลายๆ service พร้อมกันและในแต่ละการปฏิสัมพันธ์ อย่างไรก็ตาม ในแต่ละ Service นั้นสามารถพัฒนา ทดสอบ และ ดีพลอยได้อย่างอิสระ นั่นเป็นการเพิ่มความรวดเร็วสำหรับการพัฒนาในระยะยาว

Technology Stack:

ในแต่ละ microservice สามารถใช้เทคโนโลยีที่แตกต่างกันได้ โดยใช้สแตกที่ดีที่สุดสำคัญความต้องการเหล่านั้นอย่างเฉพาะเจาะจง ในความยืดหยุ่นนี้สามารถทำให้ใช้งานเครื่องมือที่เหมาะสม หรือภาษาที่แตกต่างกันในแต่ละ service.

 

NEXT READ : เมื่อไหร่ ที่เราควรให้ Monolithic Architecture ?

 

 

ซึ่งงานพัฒนาแพลตฟอร์มของ  daywork logo Daywork ระบบจัดหางานออนไลน์ ที่มีประสิทธิภาพสูงของไทย ก็ได้ใช้เทคนิคแบบ Monolithic Architecture ซึ่งทำให้ Scale งานได้ไว แต่ข้อเสียคือหากระบบล่มมันจะทำให้ล่มทั้งระบบ ทางบริษัทจึงได้ให้ความสำคัญกับ Server ที่เสถียรมีประสิทธิภาพสูง และ รองรับการใช้งานหนักๆได้

Leave a Reply

Your email address will not be published. Required fields are marked *