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¶
- Declare o problema observável e o contrato de correção.
- Meça o comportamento e estabeleça uma linha de base.
- Escolha a menor técnica que trate a causa.
- Defina capacidade, timeout, falha, posse e consistência.
- Teste comportamento normal, limites, saturação e recuperação.
- 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.