หมัดต่อหมัด Microservices vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า?

ในโลกที่เทคโนโลยีเข้ามามีบทบาทสำคัญในธุรกิจ การพัฒนาซอฟต์แวร์ย่อมเป็นสิ่งที่สำคัญมากสำหรับองค์กรต่าง ๆ วันนี้ทาง Skooldio จึงได้นำ 2 วิธียอดฮิตในการพัฒนาซอฟต์แวร์ ซึ่งก็คือ Monolithic และ Microservices มาเทียบกันหมัดต่อหมัดว่าข้อดีข้อเสียของทั้ง 2 ระบบนั้นเป็นอย่างไร แล้วองค์กรของคุณเหมาะกับการพัฒนาแบบไหนกัน

Skooldio Blog - หมัดต่อหมัด Microservices vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า? | ระบบ structure ของ Monolithic vs. Microservices
Structure ของระบบ Monolithic และ Microservices (เครดิตรูปภาพจาก divante)

Monolithic คืออะไร?

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

ข้อดีของการวางระบบแบบ Monolithic

  • ง่ายต่อการพัฒนา
  • ง่ายต่อการใช้ทดสอบ
  • ง่ายต่อการ Deploy
  • Scale ในแนวกว้างได้ง่าย เพราะสามารถทำซ้ำ ๆ ได้ผ่าน Load Balancer

แต่ในความง่ายของการวางระบบแบบ Monolithic นี่แหละ ที่เป็นข้อเสียของมันเองด้วยเช่นกัน

ข้อเสียของการวางระบบแบบ Monolithic

  • ไม่สามารถวางระบบที่มีความซับซ้อนมาขึ้นได้
  • Application จะใหญ่มาก ๆ และไม่สามารถปรับเปลี่ยนอะไรได้อย่างรวดเร็ว
  • เมื่อ Application ใหญ่มา จะทำให้เวลาในการโหลดนานขึ้น
  • จะ Update แต่ละครั้ง ต้อง Deploy Application ทั้งหมดใหม่ ทำให้ยากต่อการ Deploy ใหม่อยู่เรื่อย ๆ
  • หากเกิด Bug ขึ้นมา อาจทำให้ระบบเสียทั้งหมดได้ 
  • ยากต่อการปรับเปลี่ยนมาใช้เทคโนโลยีใหม่ ๆ เพราะการเปลี่ยน Framework หรือใช้ภาษาใหม่เลย จะต้องรื้อใหม่ทั้งหมด จึงจะทำให้เสียเวลา และเสียเงินเป็นจำนวนมาก

เมื่อการใช้งานเปลี่ยนไป การเปลี่ยนอะไรเล็ก ๆ น้อย ๆ หรือการ Scale Up ระบบกลับต้องสร้าง และ Deploy ระบบทั้งหมดใหม่ Developer จำนวนมาก จึงสนใจหันมาวางระบบแบบ Microservices มากขึ้น 

Microservices คืออะไร?

ว่าง่าย ๆ คือการแบ่งระบบออกเป็นส่วนย่อย ๆ แทนที่จะรวมเป็นระบบเดียวอย่าง Monolithic 

การวางระบบแบบ Microservices แปลว่า แต่ละ Service จะสามารถ Deploy และ Scale ได้เองอย่างไม่จำเป็นต้องเชื่อมโยงกันทั้งหมด ถึงขนาดที่ว่า Microservices แต่ละตัว สามารถเขียนโดยคนละภาษาได้ และสามารถให้ทีมที่ต่างกันดูแลแต่ละส่วนแบบแยกกันได้

Skooldio Blog - หมัดต่อหมัด Microservices vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า? | การ Scale ในแบบ Monolithic และ Microservices
การ Scale แบบ Monolithic เทียบกับการ scale แบบ Microservices (เครดิตรูปจาก microservices.com)

ข้อดีของการวางระบบแบบ Microservices

  • แต่ละ Service แยกออกจากกัน ทำให้แต่ละทีมสามารถโฟกัสกับ Service ที่รับผิดชอบได้โดยตรง
  • สามารถปรับเปลี่ยน และใช้เทคโนโลยีใหม่ ๆ ได้ง่ายขึ้น Developer สามารถเลือกภาษา หรือ Framework ต่าง ๆ ที่เหมาะสมกับ Service ส่วนนั้นได้ โดยไม่ต้องยึดติดกับภาษาที่เลือกมาแต่แรก
  • สามารถ Deploy อย่างต่อเนื่องได้ เพราะแต่ละ Service สามารถ Deploy เองได้ ไม่ต้องทำไปพร้อม ๆ กันทั้งหมด
  • แต่ละ Service สามารถ Scale เองได้

แต่ในความปรับเปลี่ยนง่าย และอิสระในการพัฒนาแต่ละ Service นั้น การใช้ Microservices ก็มีข้อเสียอยู่บ้าง

ข้อเสียของการวางระบบแบบ Microservices

  • การที่ Service แต่ละอันอยู่แยกกัน การส่งต่อข้อมูลระหว่างกัน อาจทำได้ช้ากว่าแบบ Monlithic
  • อาจต้องใช้ Infrastructure Automation เพราะการทำ Microservices แปลว่าเราต้องจัดการกับ Infrastructure ไว้อย่างดี เพราะการ Deploy Service จำนวนมากนั้น จะทำแบบ Manual ยากมาก จึงอาจต้องทำ Automation เกือบทั้งหมด

อ่าน 5 สัญญาณที่บอกว่าคุณควรเรียน Microservices


เทียบกันให้เห็นจะ ๆ ระหว่าง Monolithic และ Microservices

Architecture แบบไหนที่เหมาะสมกับธุรกิจของเรา มาดูกัน

หัวข้อMonolithic ArchitectureMicroservices Architecture
Deploymentสามารถ Deploy ครั้งเดียวได้อย่างงายดาย แต่หากมีอะไรผิดพลาด จะล่มทั้ง Projectแต่ละ Microservices ต้อง Deploy เองต่างหาก ซึ่งจะค่อนข้างซับซ้อน และใช้เวลานาน แต่หากมีปัญหาเกิดขึ้น จะพังแค่ Service เดียว ทำให้แก้ไขได้ไวขึ้น
Maintenanceในการที่จะดูแลระบบแบบ Monolithic ต้องใช้ทีม IT ที่เชี่ยวชาญด้านแพลตฟอร์มต่าง ๆ เช่น Pascal, .NET, Java, หรือ DB2 หากจะเปลี่ยนอะไรซักอย่าง จะทำได้ยาก แต่ในขณะเดียวกัน หากต้องการทำการทดสอบสิ่งต่าง ๆ จะสามารถทำได้ง่าย และรวดเร็วทีเดียวการดูแลระบบ Microservices จะใช้เวลาน้อยกว่า หากต้องการทดสอบ Service เป็นส่วน ๆ สามารถทำได้รวดเร็วกว่า ในระยะยาว จะประหยัดเวลานักพัฒนาไปได้มากเลยทีเดียว
Reliabilityหากมีปัญหาเกิดขึ้นใน ระบบแบบ Monolithic โครงการส้รางหมดอาจพังได้ จึงอาจจะไม่น่าไว้ใจในการทำ Application ใหญ่ ๆหากมีปัญหาเกิดขึ้นใน Service หนึ่ง Service อื่น ๆ จะไม่เกิดปัญหาไปด้วย การที่โครงสร้างสามารถเอื้อต่อความผิดพลาดได้มากกว่า ทำให้นักพัฒนาสามารถเปลี่ยน หรือลองใช้เทคโนโลยีใหม่ ๆ ได้ โดยมั่นใจได้ว่าการเปลี่ยนแปลงของ Service หนึ่ง จะไม่สร้างผลกระทบต่อ Service ที่เหลือ
Scalabilityยากต่อการ Scale กว่า เพราะขนาดของ Application จะใหญ่กว่ามากง่ายต่อการ Scale เพราะจะสามารถเลือก Scale ในส่วนที่จำเป็นได้
Developmentการพัฒนาในระบบ Monolithic จะใช้เวลานานกว่า เพราะทุกทีมจะต้องทำไปพร้อมๆกัน และต้องใช้ Code ตัวเดียวกันการพัฒนาระบบแบบ Microservices ใช้เวลาน้อยกว่ามาก เพราะแต่ละทีมสามารถทำได้เองต่างหาก
Releaseทุกอย่างต้องพร้อม ก่อนที่จะปล่อยออกสู่ผู้ใช้ได้ หากมีใครคนใดคนหนึ่งช้า จะดีเลย์การปล่อยของออกเป็นอย่างมากสามารถปล่อย Features ใหม่ ๆได้อย่างรวดเร็ว
CostMonolith Architecture นั้นมักจะถูกกว่า และใช้เวลาน้อยกว่าในการพัฒนาระบบ แต่ในมุมของการทำธุรกิจนั้น การวางโครงสร้างแบบ Monolithic ต้องใช้การลงทุนก้อนใหญ่ก้อนเดียว ซึ่งอาจมีความเสี่ยงมากกว่าMicroservices Architecture ปกติแล้วจะแพงกว่า และใช้เวลานานกว่าในการพัฒนาขึ้นมา แต่หากคำนวนถึงภาพรวมในระยะยาว ระบบโครงสร้างนี้จะประหยัด Man-day ของ Developer ไปได้มากเลยทีเดียว

แล้วแบบไหนถึงจะเหมาะกับบริษัทของเรา?

อย่างที่ทุกคนได้เห็นไป ทั้งสองวิธีก็มีทั้งข้อดี และข้อเสีย ที่ต่างกัน 

แต่หากให้จิ้มแล้วว่าแบบไหนถึงจะเหมาะกับเรา ก็ขอยกตัวอย่างให้เห็นกันง่ายขึ้น Monolithic Architecture ส่วนใหญ่แล้วจะใช้กับธุรกิจที่เป็น eCommerce แบบง่าย ๆ หรือ Blog ที่ไม่ต้องทำการเปลี่ยนแปลงโครงสร้างหลักบ่อย ในขณะที่ Microservices จะใช้สำหรับธุรกิจที่มีความซับซ้อนกว่า และเหมาะสมกว่ากับบริษัทที่ต้องมีการ ปรับปรุง เปลี่ยนแปลง อยู่บ่อย ๆ อย่างต่อเนื่อง (เช่น ) หรือแม้แต่องค์กรที่กำลังจะขยับขยายระบบของตนก็ตาม

ในการเปลี่ยนระบบจาก Monolithic ไป Microservices นั้น จะต้องคำนึงถึงสิ่งต่าง ๆ มากมาย เช่น การเตรียม Environment, ขั้นตอนการ Deploy ฯลฯ (อ่านเพิ่มเติม: สิ่งที่ควรทำก่อนจะเริ่ม Microservices) ซึ่งการที่จะเปลี่ยนเป็น Microservices นั้นไม่ใช่เรื่องง่ายเลย ทีมที่จะเปลี่ยนจะต้องมีความรู้ความเข้าใจ Microservices เป็นอย่างดี ซึ่งวิธีที่จะเริ่มเปลี่ยนระบบนั้นก็มีมากมาย ไม่ว่าจะเป็นการว่าจ้างผู้ที่มีความรู้อยู่แล้ว การปรึกษาผู้ที่ทำ Microservices มาก่อน หรือศึกษาจากประสบการณ์ของผู้ที่ทำ Microservices มาอย่างเชี่ยวชาญก็ตาม

Skooldio Blog - หมัดต่อหมัด Microservices vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า? | เรียน Microservices เวิร์คชอป

MICROSERVICES เวิร์คชอปที่จะให้คุณเข้าใจอย่างถ่องแท้ว่า Microservices คืออะไร? จะเหมาะกับองค์กรของเราไหม? เอามาปรับใช้แล้วจะเวิร์กจริงหรือเปล่า? ส่วนไหนของ Microservices ที่เหมาะกับเรา หรือไม่เหมาะกับเราบ้าง? รวมถึงได้ลงมือทำจริงตั้งแต่ขั้นของ Design Development ไปจนถึง Deployment พร้อมทั้งได้รับคำปรึกษาอย่างใกล้ชิดจากกูรูตัวจริงด้าน Microservices คุณปุ๋ย – สมเกียรติ ปุ๋ยสูงเนิน (Technical Coach & Software Craftsman ที่สยามชำนาญกิจ, เจ้าของบล็อก somkiat.cc)

สามารถติดตามรายละเอียดเพิ่มเติมได้ที่นี่

แพ็คสุดคุ้ม เวิร์กชอป MICROSERVICES (4 วัน) ประกอบด้วย  

References 

https://articles.microservices.com/monolithic-vs-microservices-architecture-5c4848858f59

https://martinfowler.com/articles/microservices.html