Arquitetura e escala

Seu sistema não escala? Sinais antes do próximo pico.

Escala não começa quando o sistema cai. Ela deixa sinais na latência, nas filas, no banco, no custo e na rotina do time. O desafio é transformar esses sinais em uma ordem de investigação.

Resumo prático

  • Mais servidor pode esconder uma causa no código, no banco ou no desenho do fluxo.
  • Latência, tráfego, erros e saturação dão uma base objetiva para investigar.
  • Teste de carga precisa representar o comportamento real, não apenas gerar acessos.
  • A prioridade deve considerar impacto no negócio, risco e esforço de correção.

Um sistema raramente passa de saudável a incapaz de crescer de uma hora para outra. Antes da queda, surgem respostas mais lentas em horários específicos, filas que demoram a esvaziar, consultas que concentram consumo e procedimentos manuais para recuperar a operação.

O problema é que cada sintoma costuma ser tratado isoladamente. Aumenta-se uma máquina, reinicia-se um serviço ou cria-se um índice sem registrar o que mudou. A operação volta, mas a empresa continua sem saber qual é o próximo limite.

Analisar escala é construir essa resposta antes que a próxima campanha, cliente grande ou integração importante transforme uma dúvida técnica em um incidente de negócio.

Escala não é sinônimo de servidor maior

Capacidade de infraestrutura faz parte da equação, mas não resolve sozinha uma aplicação que repete trabalho, concentra todas as requisições numa mesma dependência ou usa o banco como ponto de encontro de responsabilidades demais.

Quando a causa está no software, adicionar recurso compra tempo e aumenta a fatura. Quando a causa está no dimensionamento, refatorar o código pode consumir esforço sem alterar o gargalo. Por isso o primeiro passo é relacionar sintomas, componentes e volume antes de escolher a solução.

  • Escala vertical

    Aumentar a capacidade de uma máquina pode ser a resposta correta, desde que o limite e o custo sejam conhecidos.

  • Escala horizontal

    Adicionar instâncias exige que estado, sessões, filas e dados permitam distribuir o trabalho.

  • Eficiência da aplicação

    Consultas, processamento repetido e chamadas externas podem consumir capacidade sem entregar valor adicional.

  • Limites externos

    APIs, provedores, conexões e cotas podem interromper o fluxo mesmo quando a infraestrutura própria está saudável.

Sinais que aparecem antes do próximo pico

O melhor indicador não é necessariamente uma queda completa. Procure mudanças de comportamento que acompanham o aumento de volume ou que obrigam o time a intervir com frequência.

  • A latência piora de forma previsível

    Telas e APIs ficam mais lentas em determinados horários, clientes ou tipos de operação.

  • Filas não voltam ao normal

    O trabalho chega mais rápido do que é processado e o atraso continua mesmo depois do pico.

  • O banco domina os incidentes

    Conexões, bloqueios, leituras ou consultas específicas aparecem repetidamente como limite.

  • O cliente virou monitoramento

    A equipe descobre lentidão e erro por chamados, não por alertas internos.

  • Custo cresce mais rápido que uso

    Cada aumento de demanda exige uma proporção ainda maior de infraestrutura ou serviço pago.

  • Recuperação depende de ritual manual

    Reiniciar, limpar, reprocessar ou chamar uma pessoa específica faz parte da rotina de estabilidade.

O que medir antes de propor uma mudança

O livro de Site Reliability Engineering do Google organiza a leitura de sistemas a partir de quatro sinais: latência, tráfego, erros e saturação. Eles são um ponto de partida útil porque respondem quanto trabalho chega, quanto demora, quanto falha e quão perto cada recurso está do limite.

Essas métricas precisam conversar com o negócio. Uma média de latência pode parecer saudável enquanto um fluxo de pagamento ou um cliente relevante enfrenta o pior comportamento. Segmentar por endpoint, operação, cliente e horário ajuda a evitar que a média esconda o problema.

  • Latência por percentil e fluxo

    Mostra a experiência de quem está na parte lenta da distribuição, não apenas o tempo médio.

  • Taxa e tipo de erro

    Distingue falha da aplicação, limite externo, timeout e rejeição esperada.

  • Saturação de recursos

    Relaciona CPU, memória, conexões, filas e disco ao momento em que o comportamento mudou.

  • Indicador de negócio

    Pedidos concluídos, mensagens processadas ou usuários atendidos traduzem a saúde técnica em capacidade real.

Uma linha de base simples e confiável é mais útil do que um painel cheio de métricas que ninguém consulta durante uma decisão.

Teste de carga não é apenas gerar acessos

A orientação de eficiência de desempenho do AWS Well-Architected Framework recomenda objetivos, cenários, monitoramento e análise dos resultados. Isso impede que o teste termine apenas com uma quantidade de requisições e a frase “aguentou”.

Um cenário representativo respeita a mistura de operações, o tamanho dos dados, o comportamento de cache e as dependências externas. Também define antecipadamente o que significa falhar: latência acima do aceitável, erro, fila acumulada, custo inviável ou degradação de outro fluxo.

Quando produção não pode ser reproduzida com fidelidade, testes controlados podem ser combinados com métricas reais e aumento gradual. O importante é registrar limites e hipóteses, não produzir uma falsa sensação de segurança.

Uma ordem prática para investigar escala

A sequência reduz o risco de otimizar uma parte irrelevante ou criar uma arquitetura maior do que o problema pede.

  • Defina o fluxo crítico

    Escolha a operação cujo limite realmente afeta receita, atendimento ou continuidade.

  • Registre a linha de base

    Meça volume, latência, erros, saturação e custo no comportamento atual.

  • Mapeie a cadeia

    Siga a requisição por aplicação, banco, fila, cache, integração e serviço externo.

  • Teste a hipótese

    Altere uma variável controlada e compare o efeito, em vez de acumular mudanças difíceis de atribuir.

  • Priorize e documente

    Ordene correções por impacto, esforço, risco e dependências e registre o limite observado.

Quando uma revisão externa faz sentido

Uma consultoria é útil quando várias hipóteses disputam prioridade, quando o time está absorvido por incidentes ou quando uma decisão estrutural precisa ser tomada antes de um crescimento planejado.

A entrega esperada não é uma lista genérica de boas práticas. Deve conectar arquitetura, dados, infraestrutura e operação a um plano executável, deixando claro o que mudar, em qual ordem e como verificar o resultado.

Fontes e leituras técnicas

Referências usadas para apoiar os conceitos técnicos deste artigo. Todos os links levam às publicações originais.

Próximo passo

Precisa saber onde seu sistema vai limitar o crescimento?

A consultoria em arquitetura transforma sinais dispersos em riscos priorizados e um plano técnico executável.

Conhecer a consultoria em arquitetura
Guilherme Calesco

Autor

Guilherme Calesco

Engenheiro de software, CTO, fundador e responsável técnico da Calesco Desenvolvimento. Atua com software desde 2008 e lidera a empresa desde 2017.