ਮਾਈਕ੍ਰੋਸਰਵਿਸੇਜ ਦਾ ਮੁੱਖ ਲਾਭ ਹਰੇਕ ਸੇਵਾ ਨੂੰ ਸੁਤੰਤਰ ਤੌਰ ਤੇ ਸਕੇਲ ਕਰਨਾ ਹੈ ਤਾਂ ਜੋ ਇਸ ਦੇ ਆਪਣੇ ਲੋਡ ਨਾਲ ਮਿਲ ਸਕੇ, ਸਮੁੱਚੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸਕੇਲ ਕਰਨ ਦੀ ਬਜਾਏ। ਬਾਧਾਵਾਂ ਨੂੰ ਲੱਭਣਾ ਫਿਰ ਪ੍ਰਤੀ-ਸੇਵਾ ਅਤੇ ਪ੍ਰਤੀ-ਹੌਪ ਨੂੰ ਮਾਪਣ ਦਾ ਮਾਮਲਾ ਹੈ।
ਮਾਈਕ੍ਰੋਸਰਵਿਸੇਜ ਦਾ ਮੁੱਖ ਲਾਭ ਹਰੇਕ ਸੇਵਾ ਨੂੰ ਸੁਤੰਤਰ ਤੌਰ ਤੇ ਸਕੇਲ ਕਰਨਾ ਹੈ ਤਾਂ ਜੋ ਇਸ ਦੇ ਆਪਣੇ ਲੋਡ ਨਾਲ ਮਿਲ ਸਕੇ, ਸਮੁੱਚੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸਕੇਲ ਕਰਨ ਦੀ ਬਜਾਏ। ਬਾਧਾਵਾਂ ਨੂੰ ਲੱਭਣਾ ਫਿਰ ਪ੍ਰਤੀ-ਸੇਵਾ ਅਤੇ ਪ੍ਰਤੀ-ਹੌਪ ਨੂੰ ਮਾਪਣ ਦਾ ਮਾਮਲਾ ਹੈ।
# 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 ਨੂੰ ਪੂਰੇ ਤੌਰ ਤੇ ਸਕੇਲ ਕਰਨ ਨਾਲੋਂ ਕਿਤੇ ਸਸਤਾ ਹੈ।
ਪਰ ਅੰਧਾਧੁੰਦ ਸਕੇਲਿੰਗ ਪੈਸੇ ਬਰਬਾਦ ਕਰਦੀ ਹੈ ਅਤੇ ਚੀਜ਼ਾਂ ਨੂੰ ਖਰਾਬ ਕਰ ਸਕਦੀ ਹੈ; per-service metrics ਅਤੇ per-hop traces ਨੂੰ ਮਾਪਣਾ ਹੀ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਅਸਲ ਬਾਧਾ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਦੱਸਦਾ ਹੈ।