ประโยชน์หลักของ microservices คือ ปรับขนาดแต่ละบริการอย่างเป็นอิสระ เพื่อให้สอดคล้องกับภาระงานของตัวเอง แทนที่จะปรับขนาดแอปทั้งหมด การค้นหาคอขวดเป็นเรื่องของการวัดต่อบริการและต่อฮอป
ประโยชน์หลักของ microservices คือ ปรับขนาดแต่ละบริการอย่างเป็นอิสระ เพื่อให้สอดคล้องกับภาระงานของตัวเอง แทนที่จะปรับขนาดแอปทั้งหมด การค้นหาคอขวดเป็นเรื่องของการวัดต่อบริการและต่อฮอป
# Kubernetes HPA: scale orders on CPU
minReplicas: 3
maxReplicas: 20
metric: cpu
targetUtilization: 70 # add pods when avg CPU > 70%
1. Metrics: which service has high latency / saturation? (RED/USE)
2. Traces: which SPAN in the request is slow?
3. Drill in: DB query? lock? N+1 calls? GC pause?
Gateway ──┤ Orders ──┤ Payments ████████████ ← 80% of latency here
Inventory ─┤
⚠️ Chatty synchronous calls (fan-out per request)
⚠️ Shared/overloaded database
⚠️ Missing or cold cache
⚠️ Unbounded retries amplifying load
การปรับขนาดบริการที่มีคอขวดเป็น ฐานข้อมูลที่ใช้ร่วมกัน เพียงแต่ย้ายโหลดไปยัง DB — ปรับขนาดข้อจำกัดจริง ไม่ใช่อาการ
การปรับขนาดอย่างเป็นอิสระช่วยให้คุณใช้ความจุอย่างแม่นยำตรงจุดที่มีภาระงาน ซึ่งราคาถูกกว่าการปรับขนาด monolith แบบขายปลีก
แต่การปรับขนาดแบบตาบอดนั้นเสียเงินและอาจทำให้สิ่งต่างๆ แย่ลง การวัดเมตริกต่อบริการและการติดตามต่อฮอปคือสิ่งที่บอกคุณถึงข้อจำกัดที่แท้จริงที่ต้องแก้ไข