Voltar para o Blog
Vibe Coding26 / 40
  1. 01O que é vibe coding (e o que não é)
  2. 02De escrever código a dirigir a intenção
  3. 03O ciclo: contexto → plano → geração → revisão
  4. 04O arsenal: visão geral do nosso stack de IA
  5. 05Quando não usar vibe coding
  6. 06Da ideia ao protótipo em horas
  7. 07Claude para brainstorm de produto e PRD
  8. 08Claude Artifacts para mockups instantâneos
  9. 09Lovable: do prompt ao app funcional
  10. 10Google AI Studio: prototipando com Gemini
  11. 11Lovable × Claude × Google Studio: quando usar cada um
  12. 12Claude Code: o par de programação que conhece o monorepo
  13. 13Anatomia de um bom prompt de engenharia
  14. 14Plan mode: planejar antes de gerar
  15. 15Skills e slash commands (/investigate, /review, /ship)
  16. 16Refactors e migrations em massa
  17. 17Debugging com IA: do stack trace à causa raiz
  18. 18Supabase: a espinha dorsal de dados
  19. 19Modelagem com Drizzle ORM
  20. 20RLS na prática: a regra que não tem exceção
  21. 21Migrations SQL à mão e o drift DB↔Drizzle
  22. 22Auth com Google OAuth no Supabase
  23. 23Realtime, Storage e o resto do Supabase
  24. 24Trigger.dev: o piloto automático
  25. 25Seu primeiro job agendado
  26. 26Workflows com retry e observabilidade
  27. 27IA em background: resumos e narrativas
  28. 28Deploy do Trigger.dev e as pegadinhas
  29. 29Evolution API: WhatsApp como canal de produto
  30. 30Instância por usuário e gestão centralizada
  31. 31IA gerando resumos de conversa
  32. 32Boas práticas e armadilhas no WhatsApp
  33. 33Integrando APIs de terceiros com IA
  34. 34Anthropic SDK: Claude dentro do produto
  35. 35Resend: e-mail transacional que chega
  36. 36Google Analytics, Search Console e Ads
  37. 37Rate limit, retry, idempotência e secrets
  38. 38GitHub: CI/CD e AI Code Review como portão de qualidade
  39. 39Deploy no Google Cloud Run
  40. 40A cultura por trás do vibe coding (e o futuro)
Vibe CodingParte 26 de 40

Workflows com retry e observabilidade

2 min de leitura
Compartilhar
Vibe Coding

Um job simples roda e acaba. A vida real é mais bagunçada: a API de terceiro cai, a rede oscila, o modelo de IA demora. A diferença entre um job de brinquedo e um de produção está em como ele lida com o erro — e em você enxergar o que aconteceu. Esse é o tema deste post.

Por que retry não é opcional

Tudo que depende de rede falha às vezes. Chamar a Evolution API, o Claude, o Resend, uma API de terceiro — qualquer uma pode dar timeout num dia ruim. Sem retry, uma falha boba mata o job inteiro e o resumo não chega. Com retry, o job tenta de novo e o usuário nem percebe que houve soluço.

O Trigger.dev dá retry com política configurável (quantas vezes, com que intervalo, backoff). Você decide o quão teimoso o job deve ser.

Mas retry exige idempotência

Lembra do #25? Retry e idempotência são inseparáveis. Se o job falhou depois de já ter gravado metade, o retry precisa não duplicar a metade que deu certo. Retry sem idempotência transforma uma falha em dois problemas.

Observabilidade: enxergar o invisível

Job roda sozinho, escondido. Sem observabilidade, você só descobre que quebrou quando alguém reclama que "o resumo não chegou". O Trigger.dev dá log e status por execução — então você consegue:

  • Ver o que rodou, quando e quanto demorou.
  • Achar a execução que falhou e por quê.
  • Distinguir "falhou e o retry salvou" de "falhou de vez".

A camada de bom senso: alertar quando importa

Observabilidade é poder olhar. O passo seguinte é ser avisado quando algo crítico falha de vez, em vez de depender de ir olhar. Job silencioso que falha em silêncio é o pior dos mundos.

Vibe coding aqui

A IA configura retry e estrutura o workflow bem. O julgamento humano: quantas tentativas fazem sentido (teimar demais numa API fora do ar só atrasa), o que é falha tolerável vs. crítica, e garantir que o retry é seguro. É Lealdade a Dados aplicada à operação: você decide com base no que o log mostra, não no que você imagina que acontece.

⚠️ Armadilha #26: configurar retry agressivo num job não-idempotente. Você não tornou o job resiliente — tornou cada falha um multiplicador de dado duplicado.

Próximo da série: #27 — IA em background: resumos e narrativas.

Curtiu como a gente pensa?

É assim que trabalhamos todo dia.

Se esse jeito de pensar é o seu, vem construir com a gente — dá uma olhada nas vagas abertas.

Ver vagas