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

Microservices คืออะไร?

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

หมัดต่อหมัด Microservices vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า? - Skooldio Blog | การ 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 เกือบทั้งหมด

Monolithic คืออะไร?

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

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

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

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

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

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

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

อ่าน 5 สัญญาณที่บอกว่าคุณควรเรียน Microservices อ่าน วิธีเลือกภาษาพัฒนา Microservices พร้อมตัวอย่างภาษาสุดฮิต ที่ใช้ได้ทันที


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

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

หัวข้อ Monolithic Architecture Microservices 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 ใหม่ ๆได้อย่างรวดเร็ว
Cost Monolith Architecture นั้นมักจะถูกกว่า และใช้เวลาน้อยกว่าในการพัฒนาระบบ แต่ในมุมของการทำธุรกิจนั้น การวางโครงสร้างแบบ Monolithic ต้องใช้การลงทุนก้อนใหญ่ก้อนเดียว ซึ่งอาจมีความเสี่ยงมากกว่า Microservices Architecture ปกติแล้วจะแพงกว่า และใช้เวลานานกว่าในการพัฒนาขึ้นมา แต่หากคำนวนถึงภาพรวมในระยะยาว ระบบโครงสร้างนี้จะประหยัด Man-day ของ Developer ไปได้มากเลยทีเดียว

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

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

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

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

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

รับคำปรึกษาอย่างใกล้ชิดจากกูรูตัวจริงด้าน Microservices คุณปุ๋ย – สมเกียรติ ปุ๋ยสูงเนิน (Technical Coach & Software Craftsman ที่สยามชำนาญกิจ, เจ้าของบล็อก somkiat.cc)

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

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

หรือ เรียนรูปแบบคอร์สออนไลน์ กับคอร์ส Microservices Essentials คอร์สนี้จะมีเทคนิคและวิธีการเริ่มต้นทำ Microservices ที่หลากหลาย ที่จะทำให้คุณเริ่มต้นระบบงานตามแนวคิด Microservices ได้อย่างมีประสิทธิภาพ เตรียมพร้อมสู่การออกแบบ พัฒนา และติดตั้งระบบงาน Microservices ต่อไป หมัดต่อหมัด Microservices vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า? - Skooldio Blog |Skooldio Online Course: Microservices Essentials

More in:Technology

Comments are closed.