Um benefício chave dos microsserviços é escalar cada serviço independentemente para corresponder a sua própria carga, em vez de escalar toda a aplicação. Encontrar gargalos é então uma questão de medir por serviço e por salto.
Um benefício chave dos microsserviços é escalar cada serviço independentemente para corresponder a sua própria carga, em vez de escalar toda a aplicação. Encontrar gargalos é então uma questão de medir por serviço e por salto.
# 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
Escalar um serviço cujo gargalo é um banco de dados compartilhado apenas move mais carga para o BD — escale a restrição real, não o sintoma.
A escalabilidade independente permite que você gaste capacidade precisamente onde a carga está, o que é muito mais barato do que escalar um monólito em massa.
Mas escalar às cegas desperdiça dinheiro e pode piorar as coisas; medir métricas por serviço e rastrear por salto é o que lhe diz qual é a restrição real a corrigir.