บทช่วยสอนไมโครเซอร์วิส: คืออะไร Archiการสอนและตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🧩 แนวคิดหลัก: ไมโครเซอร์วิสเป็นการแบ่งแอปพลิเคชันออกเป็นโมดูลที่มีฟังก์ชันเดียว สามารถปรับใช้ได้อย่างอิสระ โดยแต่ละโมดูลอยู่ภายใต้การดูแลของทีมพัฒนาขนาดเล็กจำนวน 5-10 คน
  • 📦 ความแตกต่างแบบโมโนลิธิก: แอปพลิเคชันแบบโมโนลิธจะรวมฟีเจอร์ทั้งหมดไว้ในแพ็กเกจเดียวบนเซิร์ฟเวอร์เดียว ดังนั้นการขยายขนาดจึงหมายถึงการเรียกใช้สำเนาเต็มรูปแบบหลายชุด
  • 🏗️ ไมโครเซอร์วิส Archiเทคเจอร์: แต่ละบริการจะจัดการความสามารถทางธุรกิจหนึ่งอย่าง ทำงานบนอินสแตนซ์ของตนเอง และสื่อสารกันผ่านโปรโตคอลที่มีน้ำหนักเบาและไม่มีสถานะ
  • 🗄️ ข้อมูลแบบรวมศูนย์: ไมโครเซอร์วิสแต่ละตัวมีพื้นที่จัดเก็บข้อมูลเป็นของตัวเอง ดังนั้นการเปลี่ยนแปลงโมเดลข้อมูลของเซอร์วิสหนึ่งจะไม่ส่งผลกระทบต่อเซอร์วิสอื่นๆ
  • 🛠️ เครื่องมือและแนวปฏิบัติ: เครื่องมือที่ชอบ WireMockDocker และ Hystrix รองรับการทดสอบ การปรับใช้ และการทนต่อความผิดพลาด โดยแต่ละบริการจะไม่มีสถานะ (stateless) และสร้างบิลด์ของตัวเอง

บทช่วยสอนไมโครเซอร์วิส

ไมโครเซอร์วิส คืออะไร?

Microservices เป็นรูปแบบสถาปัตยกรรมที่เน้นบริการ โดยที่แอปพลิเคชันถูกสร้างขึ้นเป็นชุดของหน่วยบริการอิสระที่เล็กที่สุดต่างๆ วิศวกรรมซอฟต์แวร์ แนวทางที่มุ่งเน้นการแยกแอปพลิเคชันออกเป็นโมดูลฟังก์ชันเดียวที่มีอินเทอร์เฟซที่กำหนดไว้อย่างชัดเจน โมดูลเหล่านี้สามารถนำไปใช้งานและดำเนินการได้อย่างอิสระโดยทีมงานขนาดเล็กที่เป็นเจ้าของวงจรชีวิตทั้งหมดของบริการ

คำว่า “ไมโคร” หมายถึงขนาดของไมโครเซอร์วิส ซึ่งต้องสามารถจัดการได้โดยทีมพัฒนาเพียงทีมเดียว (5 ถึง 10 คน) ในวิธีการนี้ แอปพลิเคชันขนาดใหญ่จะถูกแบ่งออกเป็นหน่วยย่อยที่เล็กที่สุดและทำงานได้อย่างอิสระ

เสาหินคืออะไร Archiเทคเจอร์?

อธิบายง่ายๆ ก็คือ สถาปัตยกรรมแบบโมโนลิธ (Monolithic architecture) เปรียบเสมือนภาชนะขนาดใหญ่ที่รวบรวมส่วนประกอบซอฟต์แวร์ทั้งหมดของแอปพลิเคชันไว้ในแพ็กเกจเดียว ลองมาพิจารณาตัวอย่างของร้านค้าออนไลน์ในบริบทของสถาปัตยกรรมแบบโมโนลิธกัน

เป็นเสาหิน Archiการสอนแอปพลิเคชันอีคอมเมิร์ซ

เป็นเสาหิน Archiการสอนแอปพลิเคชันอีคอมเมิร์ซ

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

ไมโครเซอร์วิสคืออะไร Archiเทคเจอร์?

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

ลองพิจารณาตัวอย่างแอปพลิเคชันอีคอมเมิร์ซที่พัฒนาด้วยสถาปัตยกรรมไมโครเซอร์วิส ในตัวอย่างสถาปัตยกรรมไมโครเซอร์วิสนี้ ไมโครเซอร์วิสแต่ละตัวจะมุ่งเน้นไปที่ความสามารถทางธุรกิจเพียงอย่างเดียว เช่น การค้นหา การให้คะแนน และ... Revview และ payment ต่างก็มีอินสแตนซ์ (เซิร์ฟเวอร์) ของตนเอง และสื่อสารกัน

Microservices Archiเทคเจอร์

Microservices Archiเทคเจอร์

ในเสาหิน Archiในสถาปัตยกรรมแบบเดิม ส่วนประกอบทั้งหมดจะรวมกันเป็นโมดูลเดียว แต่ในสถาปัตยกรรมไมโครเซอร์วิส Archiในโครงสร้างแบบไมโครเซอร์วิส ระบบจะกระจายออกเป็นโมดูลย่อย (ไมโครเซอร์วิส) ซึ่งสื่อสารกัน ดังแสดงในตัวอย่างไมโครเซอร์วิสข้างต้น

การสื่อสารระหว่างไมโครเซอร์วิสเป็นการสื่อสารไร้สัญชาติซึ่งคำขอและการตอบสนองแต่ละคู่มีความเป็นอิสระ ดังนั้นไมโครเซอร์วิสจึงสามารถสื่อสารได้อย่างง่ายดาย ในไมโครเซอร์วิส Archiโครงสร้างข้อมูลเป็นแบบกระจายศูนย์ โดยแต่ละไมโครเซอร์วิสจะมีแหล่งเก็บข้อมูลแยกต่างหาก

ไมโครเซอร์วิสกับเสาหิน Archiเทคเจอร์

Microservicesเป็นเสาหิน Archiเทคเจอร์
ทุกหน่วยของแอปพลิเคชันทั้งหมดควรมีขนาดเล็กที่สุด และควรจะสามารถบรรลุเป้าหมายทางธุรกิจที่เฉพาะเจาะจงได้ใช้โค้ดฐานเดียวสำหรับทุกเป้าหมายทางธุรกิจ
การเริ่มต้นใช้งานบริการค่อนข้างรวดเร็วการเริ่มต้นใช้งานบริการใช้เวลานานขึ้น
การแยกปัญหาทำได้ง่าย แม้ว่าบริการหนึ่งจะหยุดทำงาน บริการอื่นๆ ก็ยังคงทำงานต่อไปได้การแยกสาเหตุของปัญหานั้นทำได้ยาก หากฟังก์ชันใดฟังก์ชันหนึ่งทำงานผิดปกติ ระบบทั้งหมดก็จะล่มไปด้วย เพื่อแก้ไขปัญหานี้ แอปพลิเคชันจะต้องถูกสร้างใหม่ ทดสอบใหม่ และติดตั้งใช้งานใหม่
ไมโครเซอร์วิสทั้งหมดควรมีการเชื่อมโยงแบบหลวมๆ เพื่อให้การเปลี่ยนแปลงที่เกิดขึ้นในไมโครเซอร์วิสหนึ่งไม่ส่งผลกระทบต่อไมโครเซอร์วิสอื่นๆสถาปัตยกรรมแบบโมโนลิธิกนั้นมีการเชื่อมโยงกันอย่างแน่นหนา การเปลี่ยนแปลงในโมดูลหนึ่งของโค้ดจะส่งผลกระทบต่อโมดูลอื่นๆ
ธุรกิจต่างๆ สามารถจัดสรรทรัพยากรเพิ่มเติมให้กับบริการที่สร้างผลตอบแทนจากการลงทุน (ROI) ที่สูงกว่าได้เนื่องจากบริการต่างๆ ไม่ได้แยกออกจากกัน การจัดสรรทรัพยากรเฉพาะรายบุคคลจึงเป็นไปไม่ได้
ควรจัดสรรทรัพยากรฮาร์ดแวร์เพิ่มเติมให้กับบริการที่ใช้งานบ่อย ในตัวอย่างอีคอมเมิร์ซข้างต้น ผู้ใช้ตรวจสอบรายการสินค้าและค้นหามากกว่าการชำระเงิน ดังนั้นจึงควรจัดสรรทรัพยากรเพิ่มเติมให้กับไมโครเซอร์วิสสำหรับการค้นหาและแสดงรายการสินค้าการปรับขนาดแอปพลิเคชันเป็นสิ่งที่ท้าทายและสิ้นเปลืองอีกด้วย
ไมโครเซอร์วิสจะมีความสม่ำเสมอและพร้อมใช้งานอยู่เสมอเครื่องมือพัฒนาซอฟต์แวร์จะทำงานหนักเกินไป เนื่องจากกระบวนการต้องเริ่มต้นใหม่ตั้งแต่ต้น
ข้อมูลถูกรวมศูนย์ ทำให้ไมโครเซอร์วิสแต่ละตัวสามารถเลือกใช้โมเดลข้อมูลที่เหมาะสมที่สุดสำหรับความต้องการของตนได้ข้อมูลถูกรวมศูนย์
ทีมขนาดเล็กที่เน้นเฉพาะเรื่อง การพัฒนาแบบคู่ขนานและรวดเร็วยิ่งขึ้นจำเป็นต้องมีทีมงานขนาดใหญ่และความพยายามในการบริหารจัดการทีมอย่างมาก
การเปลี่ยนแปลงโมเดลข้อมูลของไมโครเซอร์วิสหนึ่งจะไม่ส่งผลกระทบต่อไมโครเซอร์วิสอื่นๆการเปลี่ยนแปลงรูปแบบข้อมูลส่งผลกระทบต่อฐานข้อมูลทั้งหมด
ทำงานร่วมกับไมโครเซอร์วิสอื่นๆ โดยใช้ส่วนต่อประสานที่กำหนดไว้อย่างชัดเจนไม่สามารถใช้ได้.
ไมโครเซอร์วิสทำงานบนหลักการที่เน้นที่ผลิตภัณฑ์ ไม่ใช่โครงการให้ความสำคัญกับโครงการโดยรวม
ไม่มีการพึ่งพาข้ามระหว่างฐานโค้ด คุณสามารถใช้เทคโนโลยีที่แตกต่างกันสำหรับไมโครเซอร์วิสที่แตกต่างกันได้ฟังก์ชันหรือโปรแกรมหนึ่งขึ้นอยู่กับฟังก์ชันหรือโปรแกรมอื่น

ความท้าทายด้านไมโครเซอร์วิส

  • ไมโครเซอร์วิสต้องพึ่งพาซึ่งกันและกัน และจะต้องสื่อสารกัน
  • เมื่อเปรียบเทียบกับระบบเสาหิน มีบริการตรวจสอบที่พัฒนาขึ้นโดยใช้ระบบที่แตกต่างกัน การเขียนโปรแกรมภาษา.
  • เนื่องจากเป็นระบบแบบกระจาย จึงเป็นโมเดลที่มีความซับซ้อนในตัว
  • บริการต่างๆ จะมีกลไกการทำงานแยกกัน ส่งผลให้ต้องใช้หน่วยความจำจำนวนมากสำหรับข้อมูลที่ไม่มีโครงสร้าง
  • การบริหารจัดการที่มีประสิทธิภาพและการทำงานเป็นทีมเป็นสิ่งจำเป็นในการป้องกันปัญหาที่ลุกลามเป็นวงกว้าง
  • การจำลองปัญหาจะเป็นเรื่องยาก เมื่อปัญหานั้นหายไปในเวอร์ชันหนึ่ง แต่กลับมาปรากฏในเวอร์ชันล่าสุด
  • การใช้งานแบบแยกอิสระนั้นซับซ้อนขึ้นเมื่อใช้ไมโครเซอร์วิส
  • สถาปัตยกรรมไมโครเซอร์วิสทำให้มีภาระการดำเนินงานมากมาย
  • การจัดการแอปพลิเคชันจะทำได้ยากขึ้นเมื่อมีการเพิ่มบริการใหม่ ๆ เข้าสู่ระบบ
  • จำเป็นต้องใช้ผู้เชี่ยวชาญที่มีทักษะหลากหลายสาขาเพื่อสนับสนุนไมโครเซอร์วิสที่กระจายตัวอย่างไม่เป็นเนื้อเดียวกัน
  • ไมโครเซอร์วิสมีค่าใช้จ่ายสูง เนื่องจากคุณจำเป็นต้องรักษาพื้นที่เซิร์ฟเวอร์ที่แตกต่างกันสำหรับงานทางธุรกิจที่แตกต่างกัน

SOA กับไมโครเซอร์วิส

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

ในทางกลับกัน ไมโครเซอร์วิสเป็นรูปแบบหนึ่งของสถาปัตยกรรมเชิงบริการ (Service-Oriented Architecture หรือ SOA) โดยที่แอปพลิเคชันถูกสร้างขึ้นเป็นชุดของบริการขนาดเล็กต่างๆ แทนที่จะเป็นซอฟต์แวร์หรือแอปพลิเคชันเดียว ไมโครเซอร์วิสเปรียบเสมือนคณะนักเต้นที่แต่ละคนมีความเป็นอิสระและรู้ว่าตนเองต้องทำอะไร ดังนั้นหากพวกเขาทำผิดพลาดในบางท่า พวกเขาก็รู้วิธีที่จะกลับมาสู่ลำดับที่ถูกต้อง นี่คือการเปรียบเทียบโดยละเอียดระหว่าง SOA และไมโครเซอร์วิส

พารามิเตอร์SOAMicroservices
ประเภทการออกแบบใน SOA ส่วนประกอบซอฟต์แวร์จะถูกเปิดเผยสู่โลกภายนอกเพื่อใช้ในรูปแบบของบริการMicro Service เป็นส่วนหนึ่งของ SOA เป็นการดำเนินการตาม SOA
การอยู่ที่หน่วยธุรกิจขึ้นอยู่กับพวกเขาเป็นอิสระจากกัน
ขนาดของซอฟต์แวร์ขนาดไฟล์ซอฟต์แวร์ใหญ่กว่าซอฟต์แวร์ทั่วไปทุกชนิดขนาดของซอฟต์แวร์ในสถาปัตยกรรมไมโครเซอร์วิสจะมีขนาดเล็กเสมอ
กองเทคโนโลยีสแต็คเทคโนโลยีต่ำกว่าเมื่อเทียบกับ Microserviceสแต็กเทคโนโลยีไมโครเซอร์วิสอาจมีขนาดใหญ่มาก
ลักษณะของแอปพลิเคชันมีลักษณะเป็นเนื้อเดียวกันทั้งก้อนเป็นเทคโนโลยี Full Stack
อิสระและมุ่งเน้นแอปพลิเคชัน SOA ถูกสร้างขึ้นเพื่อทำงานทางธุรกิจหลายอย่างพวกเขาถูกสร้างขึ้นเพื่อดำเนินงานทางธุรกิจเดียว
การใช้งานกระบวนการติดตั้งใช้งานนั้นใช้เวลานานการปรับใช้ทำได้ตรงไปตรงมาและใช้เวลาน้อยลง
ลดค่าใช้จ่ายคุ้มค่ากว่าLess คุ้มค่า
scalabilityLess เมื่อเทียบกับไมโครเซอร์วิสปรับขนาดได้สูง
ตรรกะทางธุรกิจส่วนประกอบตรรกะทางธุรกิจจะถูกจัดเก็บไว้ภายในโดเมนบริการเดียว โดยใช้โปรโตคอลการสื่อสารแบบง่าย (HTTP กับ XML หรือ JSON) และ API ที่ขับเคลื่อนด้วย SDK/ไคลเอ็นต์ตรรกะทางธุรกิจสามารถกระจายอยู่ข้ามโดเมนได้ โดยมีเลเยอร์คล้าย Service Bus ระดับองค์กรคั่นระหว่างบริการต่างๆ (มิดเดิลแวร์)

เครื่องมือไมโครเซอร์วิส

1) Wiremock: การทดสอบไมโครเซอร์วิส

WireMock เป็นไลบรารีที่ยืดหยุ่นสำหรับการสร้าง stub และ mocking เว็บเซอร์วิส สามารถกำหนดค่าการตอบสนองที่ส่งคืนโดย HTTP API เมื่อได้รับคำขอเฉพาะ นอกจากนี้ยังใช้สำหรับการทดสอบ Microservices อีกด้วย

ดาวน์โหลดลิงค์: http://wiremock.org/

2) นักเทียบท่า

Docker เป็นโครงการโอเพนซอร์สที่ช่วยให้เราสร้าง ปรับใช้ และเรียกใช้แอปพลิเคชันโดยใช้คอนเทนเนอร์ โดยการใช้คอนเทนเนอร์ นักพัฒนาสามารถเรียกใช้แอปพลิเคชันได้ในรูปแบบแพ็กเกจเดียว ทำให้คุณสามารถจัดส่งไลบรารีและส่วนประกอบอื่นๆ ที่จำเป็นในแพ็กเกจเดียวได้

ดาวน์โหลดลิงค์: https://www.docker.com/

3) ฮิสตริก

Hystrix เป็นระบบที่ทนต่อความผิดพลาด Java เครื่องมือนี้ออกแบบมาเพื่อแยกจุดเข้าถึงบริการ ระบบ และไลบรารีของบุคคลที่สามจากระยะไกลในสภาพแวดล้อมแบบกระจายศูนย์ เช่น ไมโครเซอร์วิส ช่วยปรับปรุงระบบโดยรวมโดยการแยกบริการที่ล้มเหลวและป้องกันผลกระทบต่อเนื่องจากการล้มเหลว

ดาวน์โหลดลิงค์: https://github.com/Netflix/Hystrix

แนวทางปฏิบัติที่ดีที่สุดของไมโครเซอร์วิส Archiเทคเจอร์

  • แยกจัดเก็บข้อมูลสำหรับแต่ละไมโครเซอร์วิส
  • รักษาระดับความสมบูรณ์ของโค้ดให้ใกล้เคียงกัน
  • แยกการสร้างสำหรับแต่ละไมโครเซอร์วิส
  • ควรปฏิบัติต่อเซิร์ฟเวอร์แต่ละตัวเสมือนว่าไม่มีสถานะ (stateless) เสมอ

คำถามที่พบบ่อย

ความสามารถของ AI มักถูกบรรจุในรูปแบบไมโครเซอร์วิสแต่ละตัว เพื่อให้แอปพลิเคชันสามารถเรียกใช้โมเดลผ่าน API โดยไม่ต้องฝังโมเดลนั้นลงไป นอกจากนี้ AI ยังช่วยขับเคลื่อนการกำหนดเส้นทางอัจฉริยะ การปรับขนาดอัตโนมัติ และการตรวจจับความผิดปกติในบริการต่างๆ มากมาย

ใช่แล้ว เครื่องมือตรวจสอบที่ขับเคลื่อนด้วย AI จะเชื่อมโยงข้อมูลบันทึก ตัวชี้วัด และ... tracใช้การตรวจสอบข้ามบริการเพื่อตรวจจับความล้มเหลว คาดการณ์ปัญหาคอขวด และค้นหาสาเหตุที่แท้จริงได้เร็วกว่าการวิเคราะห์ด้วยตนเองในระบบกระจายขนาดใหญ่

โดยทั่วไปแล้ว ไมโครเซอร์วิสจะถูกแบ่งออกเป็นสองประเภท คือ แบบไร้สถานะและแบบมีสถานะ ไมโครเซอร์วิสแบบไร้สถานะจะไม่เก็บรักษาข้อมูลระหว่างการร้องขอ ในขณะที่ไมโครเซอร์วิสแบบมีสถานะจะเก็บรักษาข้อมูลหรือสถานะเซสชัน ซึ่งมักจะใช้พื้นที่จัดเก็บข้อมูลเฉพาะของตนเองเป็นตัวรองรับ

บริษัทเทคโนโลยีขนาดใหญ่ เช่น Netflix, Amazonอูเบอร์ และ Spotify ใช้ไมโครเซอร์วิสเพื่อปรับขนาดได้อย่างอิสระและปรับใช้ได้บ่อยครั้ง แนวทางนี้เหมาะสำหรับแอปพลิเคชันบนคลาวด์ที่มีปริมาณการใช้งานสูง ซึ่งต้องการการปล่อยเวอร์ชันใหม่ที่รวดเร็วและแยกจากกัน

สรุปโพสต์นี้ด้วย: