22 มิ.ย. 2022 เวลา 12:03 • วิทยาศาสตร์ & เทคโนโลยี
🚀 หมัดต่อหมัด Microservices vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า?
Microservices คืออะไร? ว่าง่าย ๆ คือการแบ่งระบบออกเป็นส่วนย่อย ๆ แทนที่จะรวมเป็นระบบเดียวอย่าง Monolithic การวางระบบแบบ Microservices
แปลว่า แต่ละ Service จะสามารถ Deploy และ Scale ได้เองอย่างไม่จำเป็นต้องเชื่อมโยงกันทั้งหมด ถึงขนาดที่ว่า Microservices แต่ละตัว สามารถเขียนโดยคนละภาษาได้ และสามารถให้ทีมที่ต่างกันดูแลแต่ละส่วนแบบแยกกันได้
ในโลกที่เทคโนโลยีเข้ามามีบทบาทสำคัญในธุรกิจ การพัฒนาซอฟต์แวร์ย่อมเป็นสิ่งที่สำคัญมากสำหรับองค์กรต่าง ๆ วันนี้ทาง Skooldio จึงได้นำ 2 วิธียอดฮิตในการพัฒนาซอฟต์แวร์ ซึ่งก็คือ Monolithic และ Microservices มาเทียบกันหมัดต่อหมัดว่าข้อดีข้อเสียของทั้ง 2 ระบบนั้นเป็นอย่างไร แล้วองค์กรของคุณเหมาะกับการพัฒนาแบบไหนกัน
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 แต่ละตัว สามารถเขียนโดยคนละภาษาได้ และสามารถให้ทีมที่ต่างกันดูแลแต่ละส่วนแบบแยกกันได้
ข้อดีของการวางระบบแบบ Microservices
  • แต่ละ Service แยกออกจากกัน ทำให้แต่ละทีมสามารถโฟกัสกับ Service ที่รับผิดชอบได้โดยตรง
  • สามารถปรับเปลี่ยน และใช้เทคโนโลยีใหม่ ๆ ได้ง่ายขึ้น Developer สามารถเลือกภาษา หรือ Framework ต่าง ๆ ที่เหมาะสมกับ Service ส่วนนั้นได้ โดยไม่ต้องยึดติดกับภาษาที่เลือกมาแต่แรก
  • สามารถ Deploy อย่างต่อเนื่องได้ เพราะแต่ละ Service สามารถ Deploy เองได้ ไม่ต้องทำไปพร้อม ๆ กันทั้งหมด
  • แต่ละ Service สามารถ Scale เองได้
แต่ในความปรับเปลี่ยนง่าย และอิสระในการพัฒนาแต่ละ Service นั้น การใช้ Microservices ก็มีข้อเสียอยู่บ้าง
ข้อเสียของการวางระบบแบบ Microservices
  • การที่ Service แต่ละอันอยู่แยกกัน การส่งต่อข้อมูลระหว่างกัน อาจทำได้ช้ากว่าแบบ Monlithic
  • อาจต้องใช้ Infrastructure Automation เพราะการทำ Microservices แปลว่าเราต้องจัดการกับ Infrastructure ไว้อย่างดี เพราะการ Deploy Service จำนวนมากนั้น จะทำแบบ Manual ยากมาก จึงอาจต้องทำ Automation เกือบทั้งหมด
🚀 เทียบกันให้เห็นจะ ๆ ระหว่าง Monolithic และ Microservices
Architecture แบบไหนที่เหมาะสมกับธุรกิจของเรา มาดูกัน
🚀 แล้วแบบไหนถึงจะเหมาะกับบริษัทของเรา?
อย่างที่ทุกคนได้เห็นไป ทั้งสองวิธีก็มีทั้งข้อดี และข้อเสีย ที่ต่างกัน แต่หากให้จิ้มแล้วว่าแบบไหนถึงจะเหมาะกับเรา ก็ขอยกตัวอย่างให้เห็นกันง่ายขึ้น Monolithic Architecture ส่วนใหญ่แล้วจะใช้กับธุรกิจที่เป็น eCommerce แบบง่าย ๆ หรือ Blog ที่ไม่ต้องทำการเปลี่ยนแปลงโครงสร้างหลักบ่อย
ในขณะที่ Microservices จะใช้สำหรับธุรกิจที่มีความซับซ้อนกว่า และเหมาะสมกว่ากับบริษัทที่ต้องมีการ ปรับปรุง เปลี่ยนแปลง อยู่บ่อย ๆ อย่างต่อเนื่อง หรือแม้แต่องค์กรที่กำลังจะขยับขยายระบบของตนก็ตาม
ในการเปลี่ยนระบบจาก Monolithic ไป Microservices นั้น จะต้องคำนึงถึงสิ่งต่าง ๆ มากมาย เช่น การเตรียม Environment, ขั้นตอนการ Deploy ฯลฯ (อ่านเพิ่มเติม: สิ่งที่ควรทำก่อนจะเริ่ม Microservices) ซึ่งการที่จะเปลี่ยนเป็น Microservices นั้นไม่ใช่เรื่องง่ายเลย ทีมที่จะเปลี่ยนจะต้องมีความรู้ความเข้าใจ Microservices เป็นอย่างดี
ซึ่งวิธีที่จะเริ่มเปลี่ยนระบบนั้นก็มีมากมาย ไม่ว่าจะเป็นการว่าจ้างผู้ที่มีความรู้อยู่แล้ว การปรึกษาผู้ที่ทำ Microservices มาก่อน หรือศึกษาจากประสบการณ์ของผู้ที่ทำ Microservices มาอย่างเชี่ยวชาญก็ตาม
โฆษณา