← Production Support L3: investigar e recuperar
10 / 12 · 50 MIN

Recuperação sob carga e após releases

Controla retries, capacidade e rollout antes de declarar a recuperação funcional.

Retries multiplicam trabalho

Um retry consome capacidade quando o serviço já pode estar degradado. Num exemplo com três camadas e três tentativas totais por chamada em cada camada, incluindo a inicial, uma operação pode gerar até 27 chamadas à dependência mais profunda. O limite é um cenário de falha persistente, não uma previsão para todos os pedidos. Define onde a repetição deve ocorrer, quais erros são recuperáveis e um orçamento total de tempo e tentativas. Backoff espaça chamadas; jitter dispersa clientes que, de outro modo, acordariam juntos. Regista a configuração efetiva da biblioteca, não apenas a intenção do runbook.

Timeout e resultado desconhecido

Um timeout pode ocorrer depois de o servidor ter aceite uma operação e antes de a resposta chegar. Para uma ordem fictícia, consulta o estado por identidade estável e aplica o contrato de idempotência. Repetir a mesma intenção com uma chave nova pode criar um segundo efeito. Reutilizar a chave com dados diferentes também pode violar o contrato. Confirma âmbito, prazo de retenção da chave e comportamento perante pedidos tardios. Não prometas exactly once apenas porque existe um campo de identificação. A recuperação deve distinguir resultado confirmado, rejeição confirmada e estado ainda por reconciliar.

Capacidade útil e dependências

Aumentar workers só ajuda se a dependência conseguir executar mais trabalho útil. Num incidente fictício, os consumidores sobem de 20 para 60, mas os commits por minuto caem e a espera JDBC aumenta. A alteração é evidência contra a hipótese de falta de consumidores, embora ainda seja necessário investigar a causa da espera. Interrompe a expansão segundo o plano e envolve o owner da dependência. Considera limitar admissão ou concorrência com impacto conhecido, protegendo trabalho crítico e mantendo backlog visível. Compara conclusões válidas por minuto, não apenas o número de processos ativos.

Estado de rollout não é rollback

Num Deployment Kubernetes, Available=True pode coexistir com Progressing=False e ProgressDeadlineExceeded. A primeira condição indica disponibilidade mínima segundo a estratégia; a segunda informa que o rollout não progrediu no prazo. O controlador não executa automaticamente rollback por essa condição. Um orchestrator superior pode fazê-lo se estiver configurado, o que exige evidência própria. Confirma cluster, namespace, revisão e eventos antes de preparar uma ação. Num exercício, quotas impedem novos Pods enquanto a versão anterior continua a servir. Corrigir a capacidade ou reverter são decisões diferentes; nenhuma se demonstra apenas pelo aviso.

Comparar canary e versão de referência

Um agregado pode esconder uma versão com falhas quando recebe uma pequena parte do tráfego. Define métricas, populações comparáveis e critérios antes de promover um canary. Num exemplo fictício, compara erros por operação, latência e validação funcional para a versão nova e a referência no mesmo intervalo. Verifica também se a amostra incluiu o fluxo crítico de fundos; poucos pedidos de health check não representam esse fluxo. Se o gate falhar, interrompe promoção e executa o plano autorizado, avaliando compatibilidade de dados e configuração. Um deploy tecnicamente concluído não substitui a aceitação do serviço.

Fechar com reconciliação e passagem para RUN

Aceitação operacional combina serviço, dados e capacidade de suporte. Num exercício de recuperação, a aplicação volta a responder, mas o ficheiro de valorização tem diferenças ainda sem explicação. Mantém a reconciliação aberta, identifica o universo esperado e regista exceções aprovadas. Entrega ao turno seguinte a revisão ativa, alterações temporárias, pedidos de repetição pendentes e critérios de fecho. O responsável de negócio deve conhecer o efeito no cutoff, sem receber uma garantia baseada apenas em métricas técnicas. Marca recuperação, reconciliação e prevenção como estados distintos para que o RUN saiba exatamente o que falta.

NA PRÁTICA

Num cenário fictício, a versão canary tem 12% de falhas e a anterior 0,2%. A média global continua baixa porque só 5% do tráfego usa a versão nova. Analisa as duas populações antes de promover.

Armadilhas comuns

Retry como operação gratuita; timeout como prova de não execução; Available como rollout completo; dashboard global como aceitação funcional.

Tópicos relacionados: Validar transferências e reconciliação · Medir impacto e confirmar recuperação · Transformar o incidente em melhoria verificável

Leva esta ideia contigo

Recupera capacidade e resultados, preservando identidade das operações e critérios de aceitação.

Criar conta

Referência: Timeouts, retries, backoff and jitter · DR Production Support L3 2026.4; Linux, JDK 25 HotSpot, OpenSSL 3.5 and Kubernetes examples require installed-version checks