Technology

หมัดต่อหมัด 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 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 อย่างมีประสิทธิภาพ | 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

PageSpeed Score 02 - Skooldio Blog |PageSpeed Insights 04 เครื่องมือที่ Developer ควรรู้จัก ถ้าอยาก ‘เร่งสปีด’ เว็บไซต์ | PageSpeed Score Boots Up
Technology

PageSpeed Insights เครื่องมือที่ Developer ควรรู้จัก ถ้าอยาก ‘เร่งสปีด’ เว็บไซต์

ไม่ว่าคุณจะเป็นเจ้าของธุรกิจที่มีเว็บไซต์เป็นส่วนสำคัญในการบริการลูกค้า หรือเป็น Developer ที่กำลังปวดหัวกับปัญหาเว็บไซต์ที่โหลดและทำงานได้ค่อนข้างช้า ซึ่งส่งผลเสียโดยตรงถึง UX (User Experience) ของเว็บไซต์ มีผลวิจัยที่รายงานสถิติออกมาว่าทุกวินาทีที่เพิ่มขึ้นในการโหลดเว็บไซต์จะทำให้มีโอกาสเสียผู้ใช้งานเพิ่มขึ้น 30% โดยเฉพาะสำหรับเว็บไซต์ที่มีกิจกรรมซื้อขายอย่าง E-​commerce ประสบการณ์ที่ช้าและไม่ลื่นไหลในการจับจ่ายบนเว็บไซต์ก็ส่งผลไปถึง conversion ...
Skooldio Blog - Python คืออะไร? | Featured Image
Technology

Python คืออะไร? เป็นภาษาที่ง่ายที่สุดจริงหรือ?

Python คืออะไร? สำหรับคนที่สนใจอัปสกิลการเขียนโปรแกรม หนึ่งในภาษาแรกที่เป็นที่นิยมอย่างมากก็คือ Python เนื่องจากเป็นภาษาการเขียนโปรแกรมที่มีผู้ใช้มากมาย และยังถูกเรียกว่าเป็นหนึ่งในภาษาที่ “ง่าย” ที่สุดอีกด้วย แล้วภาษา Python นี้มันง่ายยังไง? บทความนี้จะพาไปอ่านกัน Python คืออะไร ...

More in:Technology

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

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

Microservices เป็นแนวคิดในการออกแบบ architecture ของระบบงาน ซึ่งผู้พัฒนาสามารถใช้ภาษาไหนมาพัฒนาก็ได้ แต่ก็ต้องมีเงื่อนไขอยู่เช่นกัน บล็อกนี้เราจะมาแนะนำแนวทางการเลือกใช้ภาษาสำหรับพัฒนา Microservices พร้อมตัวอย่างภาษาต่าง ๆ และข้อดี-ข้อเสียที่ให้คุณได้เลือกใช้ได้ทันที !!
Skooldio blog 3 ข้อดี ทำไมคนเป็นหมอ ควรเขียนโค้ดเป็น | Header Technology

3 ข้อดี ทำไมคนเป็นหมอ ควรเขียนโค้ดเป็น?

แพทยศาสตร์ ยังคงเป็นหนึ่งในสายการเรียนยอดฮิตในหมู่นักเรียนสายวิทย์ในปัจจุบัน ถึงแม้ว่าเทคโนโลยี จะมาสร้างความเปลี่ยนแปลงในโลกนี้อย่างมากมาย แต่อาชีพหมอ ก็ยังเป็นอาชีพที่ขาดไม่ได้ และเป็นอาชีพที่หลายๆ คนหมายปอง เมื่อเห็นคำว่า “โปรแกรมเมอร์” หรือการ “เขียนโค้ด” น้องๆ หลายคน คงนึกถึงการเป็นวิศวกร ...
Airtable | Skooldio Blog - เฉลยเคล็บลับ HubSpot เทคนิคประหยัดเวลาทำงาน 30 ชั่วโมง ต่อวีค!! Business

เฉลยเคล็บลับ HubSpot เทคนิคประหยัดเวลาทำงาน 30 ชั่วโมง ต่อวีค!

HubSpot เป็นแพลตฟอร์มระดับโลก ผู้นำด้านซอฟต์แวร์การทำการตลาดแบบ Inbound Marketing และการขายแบบครบวงจร ปัจจุบันมีกลุ่มธุรกิจมากกว่า 48,000 ธุรกิจ จาก 100 ประเทศทั่วโลก ที่ใช้งาน HubSpot Software ...
Skooldio blog | อยากเริ่มเขียนโปรแกรม ภาษาไหนที่เหมาะกับเรา? Technology

อยากเริ่มเขียนโปรแกรม ภาษาไหนที่เหมาะกับเรา?

ในยุคที่ “Digital ไม่ใช่ทางเลือก แต่เป็นทางรอด” สกิลที่ทุกคนหันมาให้ความสนใจกันอย่างล้นหลาม คือสกิลการโค้ด หรือการเขียนโปรแกรมนั่นเอง เริ่มยังไง? เชื่อว่าหลายคนคงจะรู้สึกกังวล หรือกลัวการเขียนโปรแกรม เพราะมันเหมือนเป็นโลกใบใหม่ ที่มีภาษาต่างๆ มากมาย ดูผ่านๆ เหมือนจะคล้ายกัน ...

Comments are closed.