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

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

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

หมัดต่อหมัด Microservices vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า? - Skooldio Blog | ระบบ 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 แต่ละตัว สามารถเขียนโดยคนละภาษาได้ และสามารถให้ทีมที่ต่างกันดูแลแต่ละส่วนแบบแยกกันได้

 

หมัดต่อหมัด 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 เกือบทั้งหมด

 

อ่าน 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 vs. Monolithic บริษัทเราเหมาะกับอะไรมากกว่า? - Skooldio Blog |Skooldio Online Course: Microservices Essentials

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

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

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

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

You may also like

Progressive Web App คืออะไร
Technology

Progressive Web Apps คืออะไร?

แค่เขียน Apps อย่างเดียวคงไม่พอ! เมื่อ Users เลือกดาวน์โหลด Apps เท่าที่จำเป็นเพื่อประหยัดพื้นที่ใช้งาน จากสถิติการใช้งานของ Users ที่ “ไม่ตัดสินใจติดตั้ง Apps” เพราะขั้นตอนที่ยุ่งยากและเลือกติดตั้งเฉพาะ Apps ...
Data

Apache Airflow คืออะไร แล้วทำไมองค์กรชั้นนำส่วนใหญ่ถึงเลือกใช้

Apache Airflow คือ 1 ใน Workflow Management ที่ได้รับความนิยม และองค์กรชั้นนำระดับโลกหลายๆ องค์กรเลือกใช้ โดยเฉพาะอย่างยิ่งในการสร้าง Data Pipelines เพื่อจัดการกับข้อมูลจำนวนมหาศาล ส่วนหนึ่งเพราะองค์กรต่าง ...

More in:Technology

8 เหตุผลทำไมควรเขียน Scala Technology

8 เหตุผลที่ Dev ควรลองเขียนภาษา Scala ตั้งแต่ตอนนี้

เราเคยเกริ่นถึงภาษา Scala ไปบ้างแล้วจากบทความ ภาษา Scala มีจุดเด่นอะไร? ทำไมกำลังมาแรงในสาย Developer และ Data Engineer แต่ในกลุ่มนักพัฒนาหลายคนยังสงสัยว่าภาษา Scala มีความเหมาะไปใช้ในงานแบบไหน? ทำไมถึงต้องหันมาศึกษา ...
ภาษา Scala คืออะไร Technology

ภาษา Scala มีจุดเด่นอะไร? ทำไมกำลังมาแรงในสาย Developer และ Data Engineer

Scala คือ ภาษา Programming ที่กำลังมาแรงและเริ่มมีความนิยมใช้กันขึ้นเรื่อย ๆ จุดเริ่มต้นภาษา Scala เรียกได้ว่าเป็นลูกอีกคนหนึ่งของภาษา Java เช่นเดียวกับภาษา Kotlin ที่พัฒนาต่อยอดมาเพื่อแก้ไขข้อบกพร่องบางอย่างของภาษา Java ในจุดประสงค์ที่แตกต่างกัน ...
Software Architecture Technology

3 Software Architecture Design ที่นิยมใช้พัฒนาระบบซอฟต์แวร์ขนาดใหญ่

ในการออกแบบซอฟต์แวร์ขนาดใหญ่ในองค์กร มักจะมีการทำงานร่วมกันโดยคนจำนวนมาก หากเราต่างคนต่างเขียนซอฟต์แวร์ไปในทางที่ตัวเองเห็นว่าดี ซอฟต์แวร์ที่แต่ละคนทำก็อาจจะทำงานร่วมกันไม่ได้หรือมีปัญหาตอนที่ Integrate เป็น Solution ใหญ่ ดังนั้น การทำซอฟต์แวร์ในระดับนั้นจึงจำเป็นต้องมีการแบ่งสันปันส่วน และมีการออกแบบ Software Architecture เพื่อให้ทำงานร่วมกันได้ดีและมองเห็นภาพรวมไปในทางเดียวกัน ทั้งระหว่างนักพัฒนาในทีมพัฒนากันเอง ...

Comments are closed.