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

อ่าน วิธีเลือกภาษาพัฒนา 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

Kotlin จะมาแทนที่ Java หรือไม่ ทำไม Google เลือก Kotlin เป็นภาษาหลักในการพัฒนา Android - Skooldio Blog | รูปหน้าปก
Technology

ทำไมภาษา Kotlin ถึงเป็นภาษาหลักในการพัฒนา Android? และ Kotlin จะมาแทนที่ Java หรือไม่?

ทำไมภาษา Kotlin ถึงเป็นภาษาแห่งอนาคตของนักพัฒนา Android อะไรคือเหตุผลที่ Google ประกาศรับรองให้ Kotlin เป็นภาษาหลักในการพัฒนา Android และ Kotlin จะมาแทนที่ Java หรือไม่.. ...
Business

อยากเป็นสาย Data เก่ง ๆ ต้องฝึก! 6 ทักษะช่วย Data Scientist ทำงานปัง

บทความจาก Harvard Business Review ชวนเราขบคิดถึงปัญหาของ Data Scientist ในองค์กรใหญ่ เมื่อถึงเวลาที่ต้องนำเสนอข้อมูล บ่อยครั้งที่ Data Scientist ต้องกุมขมับ เพราะไม่รู้จะพูดอย่างไรให้ผู้บริหารเข้าใจ บางครั้งเห็นข้อมูลสำคัญมากอยู่ตรงหน้า ...

More in:Technology

Technology

Kotlin ภาษาแห่งอนาคตของนักพัฒนา Android

Kotlin เป็นหนึ่งในภาษา Programming ที่กำลังได้รับความนิยมอย่างมากในวงการ ซึ่งผลสำรวจจาก JetBrains ในเดือนธันวาคม ปี 2019 พบว่ามีนักพัฒนาจำนวน 4 ล้านคนกำลังใช้ Kotlin จากผลสำรวจของ 2020 ...
จาก React Developer สู่การทำ Flutter Developer | Skooldio Blog Technology

จาก React Developer สู่การทำ Flutter Developer

ในช่วง 2 – 3 ปีมานี้นักพัฒนาหรือผู้ที่มีความสนใจในเทคโนโลยีหลายๆ คนคงจะเคยได้ยินหรือได้รู้จักสิ่งที่เรียกว่า Flutter มาบ้างแล้ว ผมเองก็เป็นหนึ่งในนั้นที่ได้รู้จักกับ Flutter มาซักพักแล้วแต่ไม่ได้มีโอกาสศึกษาและทำความเข้าใจมันสักที จนเมื่อไม่นานมานี้ ได้มีโอกาสได้ศึกษาเจ้า Flutter และนำมาใช้ในการพัฒนาแอปพลิเคชันๆ ...
6 Apps using Flutter Technology

6 บริษัทยักษ์ใหญ่ที่เลือกใช้ Flutter พัฒนาแอปฯ

เทคโนโลยีทีก้าวหน้าไปอย่างรวดเร็ว การพัฒนาแอปพลิเคชั่นที่เริ่มจากแบบ native คือพัฒนาไปทีละแพลตฟอร์ม หรือต้องมีหลายทีมในการพัฒนาแอปพลิเคชันเพียงตัวเดียว ก็ถูกพัฒนามาอย่างต่อเนื่อง โดยเฉพาะ framework สำหรับพัฒนาแอปฯ ที่เริ่มก้าวกระโดดมากขึ้น ด้วยการมีสิ่งที่เรียนกว่า Cross-Platform Application Framework มานั่นเอง ...
4 ข้อดีของการพัฒนาแอปพลิเคชันด้วย Flutter | Skooldio Blog Technology

4 ข้อดีของการพัฒนาแอปพลิเคชันด้วย Flutter

ปัจจุบันนี้ Application เป็นส่วนหนึ่งที่มีผลต่อการทำธุรกิจ เนื่องจากการที่เรามี Application นั้นจะช่วยเพิ่มความสะดวกสบายให้กับลูกค้าในการใช้บริการต่างๆ และยังเพิ่มช่องทางในการติดต่อลูกค้าสำหรับแบรนด์ของเราอีกด้วย ซึ่งส่งผลให้ลูกค้านั้นสามารถจดจำเราได้มกายิ่งขึ้น แต่ว่าธุรกิจในยุคนี้จำเป็นที่จะต้องแข่งกับความเร็ว เนื่องจาก Requirement (ความต้องการ) ของ User เปลี่ยนไปในทุกๆวัน  ...

Comments are closed.