MÓDULO 4.3

🧪 Teste vs. produção: dois mundos que nunca se misturam

Sua automação vai lidar com dados de gente de verdade. Antes de deixar ela mexer nisso, você precisa de um lugar seguro pra errar. Este módulo mostra por que toda automação séria vive em dois ambientes separados — e por que misturar os dois é a forma mais comum de causar estrago em produção.

6
Tópicos
30
Minutos
Intermediário
Nível
Prático
Tipo
0 de 60%
1

🍳 A cozinha de testes e a cozinha do restaurante aberto

Imagine um restaurante com duas cozinhas. Uma fica fechada pro público — é onde o chef testa um prato novo, erra a mão no sal, joga fora e tenta de novo, sem pressa e sem ninguém esperando o prato na mesa. A outra é a cozinha que está aberta agora, com clientes sentados esperando a comida. Ninguém em sã consciência testa uma receita nova na cozinha que está servindo clientes de verdade.

Novo aqui? Produção é o nome que se dá pro ambiente que está "no ar" de verdade — a automação rodando pra valer, mexendo em dados reais, enviando e-mails reais, executando ações que ninguém pode desfazer com um "ctrl+Z". É a cozinha aberta.

Novo aqui? Staging (também chamado de ambiente de dev, de "desenvolvimento") é a cozinha fechada: uma cópia da automação rodando separada, com dados de mentira ou dados de teste, onde você pode quebrar tudo sem que nenhum cliente de verdade sinta o impacto.

💡 Conceito Principal

Mesma automação, dois lugares diferentes rodando ela. Um é seguro pra errar, o outro não é.

  • Staging/dev: cozinha fechada, pode errar à vontade.
  • Produção: cozinha aberta, cliente sentado esperando o prato certo.
Staging
Cozinha fechada
Produção
Cozinha aberta
Dados falsos
Usados em dev
Dados reais
Usados em produção
2

⚠️ Por que um bug em produção não é só feio

Se um site tem um errinho visual, você corrige e ninguém percebeu. Automação é diferente: ela age. Um bug numa automação rodando em produção pode mandar o mesmo e-mail duas vezes pra centenas de clientes reais, gravar o mesmo pedido duplicado no seu sistema, ou disparar uma cobrança que não deveria existir. Não dá pra "desfazer" um e-mail que já chegou na caixa de entrada de alguém.

Por isso a regra é simples e não tem exceção: toda mudança de código passa primeiro pelo ambiente de staging/dev, roda lá, é conferida, e só depois — com aprovação — vai pra produção. Testar direto em produção é como o chef experimentar a receita nova servindo direto pro cliente da mesa 4.

✗ Testar em produção

  • Um erro de lógica manda e-mail duplicado pra clientes de verdade
  • Um teste malfeito grava registro repetido no banco de dados real
  • Não tem como "desfazer" uma ação já executada no mundo real

✓ Testar em staging

  • O erro acontece, você vê o log, corrige, testa de novo
  • Nenhum cliente real percebeu que algo quebrou
  • Só sobe pra produção o que já foi conferido funcionando

⚠️ Atenção

Um bug em produção não é vergonhoso — acontece com qualquer time. O problema é não ter um staging pra pegar esse bug antes dele chegar no cliente. É essa rede de segurança que este módulo constrói.

3

🔍 Os dois ambientes por dentro

Na prática, "dois ambientes" não significa dois computadores diferentes fisicamente. É a mesma plataforma de execução na nuvem (o Trigger.dev do módulo 4.2) rodando o mesmo código duas vezes, cada uma com uma variável de ambiente diferente marcando qual é qual — uma espécie de crachá que diz "isto aqui é staging" ou "isto aqui é produção".

Mesmo código no repositório 🍳 Staging / dev AMBIENTE=dev dados de teste, ninguém sente o erro 🍽️ Produção AMBIENTE=producao dados reais, cliente de verdade esperando

Legenda: o mesmo código sai do repositório e alimenta os dois ambientes — o que muda é a variável de ambiente que diz "estou em dev" ou "estou em produção", e os dados que cada um enxerga.

🔍 Por dentro

  • Variável de ambiente: uma informação guardada fora do código (tipo um bilhete colado no painel), que diz ao programa "você está rodando em dev" ou "em produção" — sem precisar reescrever nada.
  • Chave de API separada por ambiente: dev usa uma chave de teste, produção usa a chave de verdade — aprofundamos isso no módulo 4.4 (Segredos).

✓ Variável certa por ambiente

  • Dev lê AMBIENTE=dev e usa dados de teste
  • Produção lê AMBIENTE=producao e usa dados reais

✗ Valor fixo no código (hardcoded)

  • O código sempre aponta pra produção, mesmo quando você só quer testar
  • Testar vira sinônimo de arriscar dado real, porque não dá pra "escolher" o ambiente
4

🔁 O fluxo de uma mudança, do código à produção

Quando o agente (Claude Code) muda algo na sua automação, esse código não pula direto pra produção. Ele passa por uma esteira com paradas — cada parada é uma chance de pegar erro antes que ele chegue no cliente.

1

Código muda

O agente escreve ou ajusta o TypeScript da automação (relembrando o módulo 4.2 — você lê e aprova, não escreve à mão).

2

Testado em dev

A automação roda apontando pro ambiente de staging, com dados de teste. Você observa o log e confere se o resultado é o esperado.

3

Aprovado

Você — a pessoa, não o agente — decide que o comportamento está correto e dá o sinal verde pra seguir adiante.

4

Promovido para produção

Só agora o mesmo código passa a rodar apontado pra produção, mexendo em dados reais de verdade.

💡 Conceito Principal

Repare que "testado" e "aprovado" são dois passos separados: passar no teste não significa que já foi promovido. A promoção é sempre uma decisão explícita sua.

5

🛠️ Construir: rodando a automação apontada pra dev

Novo aqui? CLI é a sigla pra "interface de linha de comando" — o programa que você chama pelo terminal digitando um comando, em vez de clicar em botões numa tela. O Trigger.dev tem uma CLI própria pra rodar suas tarefas.

Objetivo desta tarefa: pedir ao agente pra rodar a automação já apontada explicitamente pro ambiente de dev, nunca deixando isso "no automático". Peça algo como: "rode a task da automação de notificações apontando pro ambiente de dev, não pra produção". O comando por trás normalmente parece com isto:

AMBIENTE=dev npx trigger.dev@latest dev --env=staging \
  --api-key=<isto voce troca>SUA_CHAVE_AQUI</isto voce troca>

A variável AMBIENTE=dev e a flag --env=staging garantem que a automação só enxergue o mundo de teste. Nunca cole uma chave de API real num prompt ou num arquivo compartilhado — use sempre um placeholder como SUA_CHAVE_AQUI até o momento de configurar de verdade (módulo 4.4 explica onde essa chave realmente mora).

🔍 Como verificar

  • 1. No painel do Trigger.dev, confira que a execução aparece listada sob o ambiente "Development"/"Staging" — não sob "Production".
  • 2. Abra o log (a lista de eventos registrados durante a execução, aprofundada no módulo 4.7) e confirme que os dados usados são os de teste, não os reais.
  • 3. Se a automação envia algo (e-mail, mensagem), confira que foi pra uma caixa de teste — nunca pro cliente de verdade.
6

🧭 Consolidar: o modo plano vale mais aqui do que em qualquer trilha anterior

Você conheceu o modo plano lá no módulo 0.5: o agente mostra o que pretende fazer antes de agir, e você aprova ou ajusta. Em nenhuma trilha anterior isso importava tanto quanto aqui — porque agora o "fazer" pode significar mexer em produção, com dados de clientes reais, sem botão de desfazer.

A regra prática pra fixar: sempre que pedir ao agente pra promover uma mudança pra produção, force o modo plano primeiro. Deixe ele te mostrar exatamente o que vai mudar, em qual ambiente, e só depois de ler você diz "pode ir".

🎯 Conceito Principal

  • Staging existe pra você errar sem custo — use-o sempre antes de mexer em produção.
  • Modo plano antes de qualquer promoção pra produção — sem exceção.

Checagem rápida (opcional): por que uma automação testa primeiro em staging antes de ir pra produção?

Resumo do Módulo

Dois ambientes: staging/dev (cozinha fechada) e produção (cozinha aberta), mesma automação rodando nos dois.
Bug em produção custa caro: dado duplicado ou ação real feita errado, sem botão de desfazer.
Fluxo de mudança: código → testado em dev → aprovado → promovido para produção.
Modo plano: obrigatório antes de qualquer promoção pra produção.

Próximo módulo:

4.4 — Segredos