,

Rollback e fail-closed: como uma automação deve falhar

Falhas são inevitáveis; o desenho seguro decide antes quando parar, como informar, como retomar e quais efeitos podem ser compensados.

Equipe acompanha a reversão controlada de uma alteração operacional.
Nesta história

Toda automação falha: rede cai, token expira, dado contradiz regra, destino responde tarde. A pergunta de arquitetura não é se haverá falha, mas qual estado será preservado e o que a pessoa entenderá. Fail-closed significa negar ou interromper quando os requisitos de segurança não podem ser confirmados.

Rollback, porém, não é sempre “desfazer”. Enviar mensagem pode ser irreversível; movimentar carga pode exigir uma operação compensatória. O plano deve classificar efeitos e definir recuperação antes de habilitar a ferramenta.

Em uma frase

Uma automação confiável falha de modo explícito, limita novos efeitos e oferece recuperação compatível com a realidade do processo.

O pior estado: ninguém sabe se aconteceu

Após um timeout, o sistema de origem pode ter concluído a ação. Tentar novamente sem idempotência duplica; desistir sem consultar deixa o operador no escuro. Uma mensagem “ocorreu um erro” transfere a investigação para quem menos possui acesso.

Outro antipadrão é o fallback permissivo: se a autorização não responde, executar “para não parar a operação”. Isso converte indisponibilidade de controle em autorização. Fail-closed protege consequência, mas precisa de contingência manual para não transformar segurança em abandono.

Resiliência exige limite para repetição

A AWS Well-Architected recomenda retries limitados, com backoff exponencial e jitter, e alerta que repetir todos os erros pode sobrecarregar dependências. Antes de repetir, a operação precisa ser idempotente e o cenário deve ser testado.

O livro de SRE do Google separa sintomas de causas e recomenda alertas simples, ligados a problemas reais do usuário. Para automação, “ERP respondeu 500” é causa; “ordens não estão sendo confirmadas” é o sintoma operacional que precisa de ação.

Exemplo composto: liberação durante indisponibilidade

Um agente fictício recebe pedido para liberar veículo. O serviço de permissão está indisponível. Em vez de assumir acesso, recusa a execução, preserva o pedido por prazo curto e orienta a contingência autorizada. Quando o serviço volta, não executa silenciosamente uma solicitação expirada.

Se o ERP aceita a liberação mas a confirmação se perde, a chave idempotente permite reconciliar sem duplicar. A evidência distingue estado desconhecido de falha confirmada. É um cenário de projeto, não um relato de cliente.

Desenhe recuperação por tipo de efeito

Consultas podem ser repetidas com limite. Criações precisam de idempotência. Atualizações podem usar versão ou pré-condição. Ações reversíveis recebem comando de desfazer. Ações irreversíveis exigem confirmação anterior e uma compensação explícita. Processos físicos precisam reconciliar estado digital e realidade no local.

Defina circuit breaker para evitar insistir em serviço degradado, fila com validade, dead letter para investigação e runbook para quem atende. Mensagens devem dizer o que foi recebido, o que não foi confirmado e qual próximo passo é seguro.

Exercícios antes da produção

  1. Desligue permissão, integração e provedor separadamente e observe o comportamento.
  2. Simule resposta tardia, duplicada, fora de ordem e parcialmente concluída.
  3. Confirme que decisões pendentes expiram e não executam após mudança de contexto.
  4. Pratique contingência e reconciliação com a equipe que estará no turno.
  5. Registre tempos de detecção, contenção, recuperação e comunicação.

Como a Uiless ajuda

A Uiless aplica permissões e readiness antes de chamar ferramentas, usa idempotência e circuit breaker nas integrações e preserva estados de execução. Se um controle essencial não responde, a ação não recebe autorização implícita.

A pessoa vê uma resposta operacional, não um stack trace. O painel oferece diagnóstico e evidência para reconciliar; a empresa mantém seus caminhos de contingência. Assim, falhar com segurança não significa esconder o problema nem abandonar o usuário.

Complete o desenho com integrações resilientes e mensagens de erro úteis.

Próximo passo

Leve uma rotina real para a Uiless

Veja como transformar voz, texto ou WhatsApp em uma execução governada nos sistemas que sua empresa já usa.