90% No More Application Code Changes ด้วย Service Mesh Architecture
ภาพจาก https://istio.io/docs/concepts/security/
หลายๆ คนที่หลงเข้ามานี้ คงจะงงๆ ว่า Service Mesh คืออะไร ใช้ทำอะไร, No More Application Code Changes จริง หรอ ? เรามาเข้าใจกันง่ายๆ ตามรูปภาพข้างบน (ในที่นี้เราจะใช้ istio framework)
ในกรณีของ Service Mesh, traffic จะไหลผ่าน Ingress Proxy (Gateway) ส่งต่อไปที่ Service Proxy (Sidecar Service Proxy) และก็ Service Proxy (Sidecar Service Proxy) จวบจน Service Proxy ตัวสุดท้าย และ ก็ส่งต่อไปยัง Egress Proxy และ Internet ผลจากการวาง architecture แบบนี้ก็คือ Sidecar Proxy จะรับหน้าแทน Service ทั้งนั้น ถ้าจะจัดการ Traffic, Logging, Security ก็แก้ใขผ่านส่วนของ Proxy ได้เลย ทำให้ 90% แทบไม่ต้องแก้ application code และ proxy config changes ถ้า config ถูกต้อง Service ข้างหลังแทบไม่ต้อง restart เลย แจ่มไหมล่ะ !! แต่ Proxy ไม่ได้ทำงานโดดๆ น้า
Service Mesh ประกอบด้วย Control Components 3 ส่วนหลักๆ คือ
Pilot: รับผิดชอบในส่วนของ Traffic & Routing Policy ของ Proxy, ถ้าจะกำหนด Service Routing เราสามารถกำหนดที่นี่ได้เลย ว่าถ้าเข้ามา hosts นี่ name นี่ ให้ไปที่ service ไหน
หรือ ที่โหดร้ายกว่านั้นคือ Pilot ยัง support Traffic Shifting & Traffic Mirroring ระบุได้ว่า traffic จาก production ให้มาที่ mirror site ด้วย เพื่อง่ายต่อการทดสอบ
Citadel: รับผิดชอบในส่วนของข้อมูล Certificate Key, และ Authentication Policy ให้กับ Proxy โดยตามภาพ architecture จะเห็นว่า Citadel ส่งข้อมูล Certificate Information ไปให้กับ Proxy เพื่อทำ Mutual TLS Authentication สำหรับ Service to Service Communication Encryption ซึ่งทำให้เราไม่ต้องสนใจ และ ลดเวลาเกี่ยวกับการ config security ใน service layers สำหรับ microservices ที่ implement ด้วยวิธีแตกต่างกัน ซึ่งส่วนใหญ่แล้ว ระบบ enterprise จะเป็นแบบนั้น ให้มา config ด้วย TLS one format ที่เดียวพอ Wow!
Mixer: ตัวนี้รับผิดชอบเกี่ยวกับ Tracing และ Logging โดย Proxy จะส่งข้อมูลผ่านตัวนี้ และ Mixer ก็เอาข้อมูลไป process และส่งต่อไปยัง Tracking และ Logging System ที่อยู่ด้านหลัง โดยยังคง concepts เดิม ไม่ต้องแก้ application codes เยอะ เราแก้ metrics และ metric handlers ที่นี่ได้เลย และ ส่วนของ application codes แค่ include OpenTracing ก็เป็นอันจบแล้ว ไม่ต้องปวดหัวมาก โดยสามารถดูวิธีการ include ได้ตาม Link ด้านล่าง
เป็นไงกันบ้างครับ พอเห็นภาพรวมของ Service Mesh Architecture หรือ ยัง?
ถ้ามีคำถามอะไร หรือ สอบถามเกี่ยวกับการใช้งาน สามารถสอบถามได้เลยนะครับ