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

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

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

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

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

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

มาหารือกันถึงตัวอย่างของร้านค้าอีคอมเมิร์ซในบริบทของสถาปัตยกรรมแบบโมโนลิธิก

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

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

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

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

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

Microservices Archiเทคเจอร์
Microservices Archiเทคเจอร์

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

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

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

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

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

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

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

บริการ SOA ได้รับการดูแลในองค์กรโดยสำนักทะเบียนซึ่งทำหน้าที่เป็นรายการไดเร็กทอรี แอปพลิเคชันจำเป็นต้องค้นหาบริการในรีจิสทรีและเรียกใช้บริการ

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

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

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

นี่คือการเปรียบเทียบโดยละเอียดระหว่าง SOA และ Microservices

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

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

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

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

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

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

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

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

3) ฮิสตริก

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

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

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

  • แยกพื้นที่เก็บข้อมูลสำหรับไมโครเซอร์วิสแต่ละรายการ
  • เก็บโค้ดที่มีระดับวุฒิภาวะใกล้เคียงกัน
  • โครงสร้างแยกสำหรับบริการ Micro แต่ละรายการ
  • ปฏิบัติต่อ – รุนแรงเหมือนไร้สัญชาติเสมอ

สรุป

  • ไมโครเซอร์วิสคือรูปแบบสถาปัตยกรรมแบบเน้นบริการโดยที่แอปพลิเคชันจะถูกสร้างขึ้นเป็นชุดของหน่วยบริการอิสระที่เล็กที่สุดต่างๆ
  • ไมโครเซอร์วิส Architecture เป็นรูปแบบการพัฒนาสถาปัตยกรรมที่อนุญาตให้สร้างแอปพลิเคชันเป็นชุดของบริการอัตโนมัติขนาดเล็กที่พัฒนาขึ้นสำหรับโดเมนธุรกิจ
  • สถาปัตยกรรมแบบโมโนลิธิกเปรียบเสมือนคอนเทนเนอร์ขนาดใหญ่ที่รวมส่วนประกอบซอฟต์แวร์ทั้งหมดของแอปพลิเคชันเข้าเป็นแพ็คเกจเดียว
  • ในไมโครเซอร์วิส ทุกหน่วยของแอปพลิเคชันทั้งหมดควรมีขนาดเล็กที่สุด และควรจะสามารถบรรลุเป้าหมายทางธุรกิจที่เฉพาะเจาะจงได้เพียงข้อเดียว
  • ในสถาปัตยกรรมโมโนลิธิก ฐานโค้ดขนาดใหญ่สามารถทำให้กระบวนการพัฒนาทั้งหมดช้าลง การเผยแพร่ใหม่อาจใช้เวลาหลายเดือน การบำรุงรักษาโค้ดเป็นเรื่องยาก
  • ไมโครเซอร์วิสมี 1 ประเภทคือ 2) ไร้สัญชาติ XNUMX) ไร้สถานะ
  • ไมโครเซอร์วิสใน Java พึ่งพาซึ่งกันและกันและพวกเขาจะต้องสื่อสารกัน ช่วยให้คุณเน้นคุณลักษณะเฉพาะและความต้องการทางธุรกิจ
  • สถาปัตยกรรมแบบเน้นบริการซึ่งเรียกสั้นๆ ว่า SOA เป็นวิวัฒนาการของการประมวลผลแบบกระจายที่ใช้รูปแบบการออกแบบคำขอหรือตอบกลับสำหรับแอปพลิเคชันแบบซิงโครนัสและอะซิงโครนัส
  • ใน SOA ส่วนประกอบซอฟต์แวร์จะถูกเปิดเผยสู่โลกภายนอกเพื่อใช้ในรูปแบบของบริการ ในขณะที่ Micro Service เป็นส่วนหนึ่งของ SOA เป็นการดำเนินการตาม SOA
  • Wiremock, Docker และ Hystrix เป็นเครื่องมือไมโครเซอร์วิสยอดนิยม