มารู้จักกับ Service Mesh กันเถอะ!

หลายคนคงเคยได้ยินคำว่า ‘Service Mesh’ มาบ้างแล้ว แต่ความหมายจริงๆ และประโยชน์ของสิ่งนี้คืออะไรกันแน่ มาหาคำตอบกันในบทความนี้ได้เลยครับ

ในการทำงานของแอปพลิเคชันประเภท Microservices นั้นต้องการ Network Infrastructure ที่ตอบสนองได้อย่างรวดเร็วและน่าเชื่อถือ นอกจากนี้ทีม DevOps เองก็ต้องการความคล่องตัวและไม่อย่างพึ่งพาทีม Network ของดาต้าเซนเตอร์ซึ่งจะขัดแย้งการทำงานของพวกเขา อย่างไรก็ดีคอนเซปต์ Microservices ยังพัวพันกับ Service มากมายแม้จากแอปพลิเคชันตัวเดียวหรือมีการเรียก Service ข้ามจากแอปอื่น ทั้งนี้แอปที่อยู่ใน Container ยังสามารถย้ายข้ามเซิร์ฟเวอร์ไปมาได้ตลอดเวลา ไม่เพียงเท่านั้นการสื่อสารผ่าน API ก็เกิดขึ้นบ่อยและสร้างแบนวิธด์ไม่น้อย ด้วยเหตุนี้เองการสื่อสารของ Microservices จึงควรมี Latency ต่ำ, น่าเชื่อถือ, มั่นคงปลอดภัย และตอบสนองได้รวดเร็วนั่นเอง ด้วยเหตุนี้เองจึงนำไปสู่เรื่องราวของ Service Mesh

Service Mesh คืออะไรกันแน่?

Service Mesh เป็นเลเยอร์หนึ่งที่ช่วยจัดการการสื่อสารระดับเครือข่ายระหว่าง API Service ในแอปพลิเคชัน โดยเลเยอร์ตรงนี้ก็คือซอฟต์แวร์นั่นเอง สำหรับการ Implement เทคโนโลยี Service Mesh จะมีการใช้ Proxy Instance (Sidecar) มาคอยทำหน้าที่ Route หรือเป็น Proxy ให้ Container หรือกล่าวคือการมาคั่นเพื่อจัดการทราฟฟิคที่วิ่งเข้า/ออกจาก Instance หรือ Pod นั้นๆ นอกจากนี้ยังมีการแบ่งระดับเป็นส่วนตัวควบคุม (Controller) มาให้บริการ API, CLI และ GUI ในการบริหารจัดการแอปได้ ส่วน Data Plan จะคอยบริหารจัดการทราฟฟิคระหว่าง Instance ภายในตามรูปประกอบด้านล่าง

credit : nginx

ความสามารถของ Service Mesh และการนำไปใช้จริงในดาต้าเซนเตอร์

Service Mesh มักจะนำเสนอความสามารถหลักๆ ไว้ดังนี้

  • Load Balancing
  • Authentication
  • Authorization
  • Encryption
  • Service Discovery (ทำ DNS Lookup เพื่อดูสถานะของ Service)
  • Observability
  • Traceability

การประยุกต์ใช้งาน Service Mesh นั้นมีความสำคัญกับการทำ Microservices ไม่น้อย แต่ก็ค่อนข้างยุ่งยากเช่นกัน เพราะองค์กรจะต้องผนวกเทคโนโลยีนี้เข้ากับระบบ Automation ที่ช่วยบริหารจัดการ Infrastructure ให้ได้ อีกทั้งจะต้องพิจารณาก่อนว่ามีคลาวด์ใด Open Source ใด หรือสนใจเรื่อง Option อะไรของ Service Mesh อย่างไร เพราะผู้ใช้งานสามารถเลือกเอาแค่ที่สนใจไปใช้ได้

คำว่า Service Mesh เป็นเพียงคำเรียกเทคโนโลยีเท่านั้นแต่ผลิตภัณฑ์ที่เกิดขึ้นจริงในท้องตลาดที่มักได้ยินก็คือ Istio ซึ่งเป็น Open Source จากการสนับสนุนของ Google, IBM และ Lyft (ในมุมกลับคือ Istio รองรับ Container Orchestrator เพียงตัวเดียวก็คือ Kubernetes) แต่อันที่จริงแล้วก็มีโปรเจ็ค Open Source อื่นของ Service Mesh เช่น Linkerd, HAProxy, Envoy,Buoyant, HashiCorp, Solo.io และอีกมากมาย อย่าง Azure Service Fabric ก็มีการนำเสนอฟังก์ชันคล้ายกับ Service Mesh ใน Application Framework ด้วยเช่นกัน

ที่มา : https://www.networkworld.com/article/3584758/what-is-a-service-mesh-what-it-means-to-data-center-networking.html และ https://www.nginx.com/blog/what-is-a-service-mesh/

from:https://www.techtalkthai.com/what-really-is-a-service-mesh/