Pular para conteúdo

Técnicas Práticas de Engenharia

Estas técnicas reaparecem em algoritmos, APIs, bancos de dados, programas concorrentes e sistemas distribuídos. Cada uma resolve uma classe de problemas e introduz um contrato explícito.

Como escolher

Necessidade Comece por Pergunta contra uso incorreto
Evitar cálculo puro repetido Memoização A chave inclui toda a entrada?
Reutilizar dados entre requisições Cache Como o valor fica obsoleto?
Amortizar overhead Lotes, buffers e blocos O que limita memória e espera?
Adiar trabalho Processamento tardio Quem possui os recursos durante a avaliação?
Retornar resultados grandes Paginação A ordem é única e estável?
Sobreviver a falha transitória Novas tentativas Outra tentativa é segura e útil?
Tornar repetição segura Idempotência O que identifica a operação lógica?
Proteger capacidade Controles de resiliência Onde a sobrecarga é admitida ou rejeitada?
Agregar sinais frequentes Debouncing e throttling Eventos intermediários podem ser descartados?
Compartilhar recursos escassos Pools e limites O que ocorre na saturação?
Proteger limites de posse Cópia defensiva Todo estado alcançável é imutável?
Separar modelos DTOs e validação Qual limite possui cada regra?
Publicar após commit Outbox transacional Como tratar duplicatas e ordem?
Remover acesso ineficiente Otimização de consultas Que evidência identifica o gargalo?
Entender produção Logs, métricas e traces Os sinais podem ser correlacionados com segurança?
Explicar desempenho e falhas Depuração e profiling Qual medição testa a hipótese?
Testar contratos mais amplos Técnicas de teste Que defeitos este nível detecta?

Ciclo de decisão

  1. Declare o problema observável e o contrato de correção.
  2. Meça o comportamento e estabeleça uma linha de base.
  3. Escolha a menor técnica que trate a causa.
  4. Defina capacidade, timeout, falha, posse e consistência.
  5. Teste comportamento normal, limites, saturação e recuperação.
  6. Observe em produção e remova complexidade acidental.

Uma técnica familiar não é automaticamente correta. Cache pode ocultar consulta lenta, retries amplificar falha e pool transformar sobrecarga em espera ilimitada.