2026-03-02

Converse com qualquer pessoa da engenharia: devs, arquitetos, gestores. A resposta é sempre a mesma. Ninguém está feliz com os ambientes compartilhados. Dev, test, stage, demo, homolog. Não importa o nome. Ambientes não produtivos são universalmente ruins. Essa é a realidade da nossa indústria.
Eu nunca gostei de nenhum ambiente compartilhado em nenhuma empresa que trabalhei. E te faço a mesma pergunta: você já viu um ambiente não produtivo que funcionava bem?
Agora, a parte curiosa. Se você pergunta pra alguém qual é a solução, a resposta quase sempre é: “se a gente tivesse mais um ambiente, aí sim ia dar certo”. E a minha pergunta é: se não deu certo nos ambientes que já existem, por que daria certo no próximo?
Alguns argumentam que ambientes são necessários pra testar. Eu diria que esse é o tipo mais caro de teste que existe. Por que você precisa de um ambiente remoto compartilhado? Por que não pode testar na sua máquina? Por que não pode ter um mecanismo de teste mais barato?
Claro, alguns cenários são mais difíceis. Um sistema legado proprietário sem código fonte, por exemplo, é genuinamente complicado de testar localmente. Não é impossível, mas é mais trabalhoso.
O problema é que muita gente não conhece formas melhores de testar e assume que a única alternativa é ter um ambiente compartilhado. Boas engenheiras rodam tudo que podem nas próprias máquinas e evitam ambientes compartilhados a todo custo.
Alguém poderia argumentar que testes complexos e de longa duração exigem ambientes compartilhados. Mas se você consegue reproduzir esses cenários localmente, o ambiente compartilhado vira redundante. Pra Integração Contínua (CI), faz sentido ter um ambiente centralizado rodando testes continuamente. Mas isso é CI, não um playground coletivo.
Então você tem algo genuinamente caro de testar. Mas antes de aceitar isso, pergunte: tem certeza que não existe um container Docker ou Podman que resolva? Muitas vezes a solução existe, só não está integrada no dia a dia da empresa, ou as pessoas não sabem como fazer essa mudança.
Pega a AWS como exemplo. Uma das coisas que mais me incomoda é que você precisa pagar pra aprender. Vários serviços simplesmente não rodam na sua máquina: Bedrock, SQS, agent-core. Você precisa de uma conta e vai pagar uma fatura só pra fazer um POC.
Mas engenheiras sempre encontram um jeito. Existe um projeto open source chamado LocalStack que uso há anos. Ele emula APIs da AWS localmente. Não é pra produção, é pra testes. E resolve o problema.
É comum não ter APIs pra todos os “estados” que você precisa induzir num teste. Por exemplo: como simular que alguém comprou 300 iPhones num e-commerce pra testar um cenário de fraude? Se o serviço não expõe essa API, você cria uma interface de teste. Uma API que só existe em ambientes não produtivos, com o único propósito de criar o estado necessário pro teste.
Não ter uma API é um inconveniente, não um impedimento. Se você tem o código fonte, é só ir lá e adicionar a interface de teste que precisa.
Digamos que é um sistema legado proprietário, sem APIs, só com uma interface gráfica. Mesmo que seja um software desktop, se existe uma UI onde você consegue criar o estado que precisa via cliques, você pode escrever software que faz esses cliques por você. É mais lento? Sim. Mas ainda é possível automatizar a criação do estado necessário.
Algumas práticas que fazem diferença real:
Pare de criar ambientes novos. Comece a mudar a cultura e o comportamento das pessoas que usam os que já existem.