Empresas gastam fortunas em ambientes na nuvem pra resolver um problema que cabe num arquivo de 80 linhas.

Enquanto isso, o dev fica esperando acesso, abrindo ticket, dependendo de outra equipe pra fazer o básico. E o famoso "funciona na minha máquina" continua vivo, passando de projeto em projeto como herança maldita.

Vou contar como virei esse jogo.


Onboarding não deveria ser rito de passagem

Toda empresa tem um ritual de onboarding não documentado. Aquele onde o dev novo precisa do colega ao lado pra funcionar. "Instala isso aqui, configura aquela variável, ah e esse serviço você precisa rodar localmente porque o de QA tá quebrado desde terça."

Na prática, isso se traduz em dias até o primeiro commit. Às vezes semanas.

Docker não é novidade pra ninguém. Mas usar Docker de verdade — onde docker-compose up é o único ritual que existe — é outra história.

O que fiz foi simples em conceito: cada serviço do sistema, incluindo os externos (banco, cache, filas, dependências de terceiros), virou um container declarado. O compose.yml virou o contrato de ambiente. Não o README. Não o Notion. Não a memória do dev mais antigo.

Onboarding que levava dias passou a levar poucas horas. O dev novo clona, sobe, e está desenvolvendo no mesmo ambiente que produção roda. Sem variação, sem surpresa, sem cerimônia.

O "funciona na minha máquina" simplesmente deixou de existir, porque a máquina de todo mundo virou a mesma máquina.


O compose virou documentação viva

Quando todo mundo sobe o mesmo ambiente do mesmo jeito, algo interessante acontece: as pessoas começam a entender o sistema inteiro.

Antes, o dev de frontend nunca olhava pra base de dados pela burocracia que é pra entrar no servidor de QA. O de backend não sabia exatamente quais serviços externos o produto consumia. Cada um no seu quadrado.

Com o compose declarando tudo junto, o sistema distribuído ficou legível. A arquitetura virou visível pra qualquer pessoa que abrisse o arquivo. Isso democratiza o conhecimento do todo de um jeito que nenhuma documentação tinha conseguido antes.


Cada máquina é um ambiente

Quanto mais devs no time, mais difícil é compartilhar ambientes de teste. Apenas 2 ambientes antes de produção virou gargalo. Porém, cada ambiente novo é custo de infra, é demanda pra outra equipe, é mais uma coisa pra manter de pé.

E se cada máquina de dev virasse um ambiente?