Some Thoughts About Microservice Adoption

English 简体中文 繁体中文 ภาษาไทย Tiếng Việt
Summary

Microservices offer significant benefits for system complexity, including enhanced maintainability, easier deployment, and improved scalability through decoupled functions and flexible tech stack choices. However, this architecture introduces challenges like increased infrastructure maintenance for SREs, potential network latency, and complexities in ensuring data consistency across distributed components. Improper design can also lead to deployment dependencies and a steep learning curve due to diverse tech stacks. Successful adoption requires caution, establishing standard templates for new services, automating infrastructure setup, and considering common tech stacks to streamline management and team mobility.

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

ประโยชน์ของการนำไมโครเซอร์วิสมาใช้เป็นที่ประจักษ์

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

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

ด้านล่างนี้คือปัญหาบางส่วนที่จะเกิดขึ้นหากไมโครเซอร์วิสไม่ได้รับการนำมาใช้ในลักษณะที่เหมาะสม

  • การบำรุงรักษา เมื่อมีการนำไมโครเซอร์วิสใหม่เข้ามา จะมีโครงสร้างพื้นฐานชุดใหม่ (อินสแตนซ์เซิร์ฟเวอร์ การเชื่อมต่อเครือข่าย กลุ่มความปลอดภัย ฯลฯ) ที่ต้องตั้งค่าและบำรุงรักษา การกำหนดค่าเหล่านี้จำเป็นต้องได้รับการบำรุงรักษาอย่างดี โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมคลาวด์ ซึ่งจะเพิ่มความท้าทายให้กับ SREs
  • การปรับขนาด เมื่อมีการอัปเกรดหรือแพตช์ใดๆ ที่ต้องทำ จะมีงานเพิ่มเติมสำหรับ SRE ในการทำงานกับอินสแตนซ์ทั้งหมดของแต่ละบริการ เมื่อมีขนาดใหญ่ขึ้น นี่จะเป็นการทำงานที่มากเกินไป
  • ความพร้อมใช้งาน แต่ละบริการสื่อสารกันผ่าน HTTP หรือ RPC ดังนั้นจึงมีความต้องการสูงในการเชื่อมต่อเครือข่ายและจะทำให้เกิดปัญหาหากการเชื่อมต่อเครือข่ายไม่เสถียรและทำให้ความหน่วงเพิ่มขึ้น
  • การพึ่งพา หากออกแบบไม่ถูกต้อง จะทำให้เกิดปัญหาการพึ่งพาซึ่งบริการหนึ่งต้องปรับใช้หลังจากการปรับใช้บริการอื่น เนื่องจากจะมีสิ่งใหม่ที่เพิ่มเข้ามาและแชร์ระหว่างสองบริการ
  • ความสอดคล้อง ในสภาพแวดล้อมแบบกระจาย แต่ละบริการจะจัดการกับความรับผิดชอบของตนเอง จะต้องมีผู้ประสานงานหากฟังก์ชันบางอย่างจำเป็นต้องเสร็จสมบูรณ์ทั้งหมด ในกรณีเช่นนี้ ความยากลำบากในการรักษาความสอดคล้องของสถานะจะเพิ่มขึ้น และหากบริการใดบริการหนึ่งไม่สามารถตอบสนองคำขอได้ บริการอื่นๆ ทั้งหมดจะต้องได้รับการแจ้งเตือนและย้อนกลับตามลำดับ
  • ความซับซ้อนของเทคโนโลยี ดังที่กล่าวไว้ในส่วนประโยชน์ แต่ละบริการสามารถมีเทคโนโลยีของตนเองได้ ข้อเสียของเรื่องนี้คือไม่ดีสำหรับผู้คนที่จะย้ายไปมาระหว่างบริการ บางคนอาจไม่รู้เกี่ยวกับภาษาที่ใช้โดยบริการอื่น และเมื่อเขาเปลี่ยนไปยังทีมอื่นหรือรับช่วงต่อบริการอื่น จะทำให้เส้นโค้งการเรียนรู้เพิ่มขึ้นและทำให้การเปลี่ยนแปลงช้าลง

ควรระมัดระวังเกี่ยวกับการที่คุณต้องการไมโครเซอร์วิสใหม่ทุกครั้งที่มีการแนะนำฟังก์ชันใหม่ คำแนะนำทั่วไปมีการบันทึกไว้ด้านล่าง

  • พยายามใช้เทมเพลตมาตรฐานเกี่ยวกับการสร้างไมโครเซอร์วิสใหม่ ซึ่งควรระบุว่าทำไมจึงต้องการบริการใหม่ เทคโนโลยีที่ใช้ วิธีที่บริการโต้ตอบกับบริการอื่น และอื่นๆ และจำเป็นต้องได้รับการตรวจสอบโดยกลุ่มบุคคลจากทีมต่างๆ เพื่อพิจารณาว่าควรสร้างบริการใหม่หรือไม่
  • จำเป็นต้องมีเครื่องมือหรือกระบวนการเพื่อให้สามารถตั้งค่าบริการใหม่ได้อย่างง่ายดายโดยไม่ต้องให้ทีมบริการตั้งค่าทุกอย่างด้วยตนเอง (อินสแตนซ์เซิร์ฟเวอร์ ฐานข้อมูล แคช เกตเวย์ api ฯลฯ)
  • เทคโนโลยีทั่วไปที่ใช้ในไมโครเซอร์วิส เพื่อให้สามารถจัดการและเคลื่อนย้ายภายในบริษัทได้ง่าย
ADVANTAGE DISADVANTAGE MICRO SERVICE

  RELATED

  COMMENTS

0

No comment for this article.