Porquê precisamos de um ambiente de staging
Manter uma réplica do ambiente de produção realmente importa? O que isso pode me trazer?
É comum encontrar se aventurando por aí, empresas que batem o pé quando o assunto é criar ambientes de staging propriamente ditos alegando uma economia nos custos de infraestrutura. Essas mesmas empresas eventualmente esbarram em incidentes críticos em produção que quase que via de regra acabam custando muito mais do que o dito ambiente de staging. Hoje vamos discorrer o que realmente é um ambiente de staging, quais propósitos ele cumpre e estratégias para mitigar o custo de infraestrutura ao manter um.
Conceito
O nome “staging” é o teste final antes de produção, vem de “stage testing”, e são os ajustes finais no cenário mais próximo da realidade no palco, antes da apresentação. Com isso, implica-se que o ambiente de staging tem que ser sempre o mais próximo possível de production, e quando falamos “mais próximo possível” é realmente em sua completude, não somente as features da aplicação, mas a topologia de rede, regras de segurança, scaling, bancos de dados, compute, tratamento de erros, alertas de observabilidade, autenticação, capacidade e tudo que se tem direito. Se vai existir em production, deve existir também em staging.
Custo do risco
Sabendo o que é (ou deveria ser) um ambiente de staging propriamente dito, fica muito mais fácil entender quais as consequências e riscos que aceitamos assumir quando escolhemos não manter um ambiente de staging no nosso fluxo de entrega. Aceitamos que estamos suscetíveis a todas e quaisquer potenciais falhas que não sejam de aplicação (isso considerando que pelo menos as features da aplicação foram testadas previamente). É aceitar que um alerta de observabilidade pode não disparar. É aceitar que o banco de dados pode estourar a capacidade de conexões ativas em um pico de acesso. É aceitar que seu servidor pode não aguentar alguma operação pesada da sua aplicação. É aceitar que pode existir uma brecha de segurança em alguma camada que não foi testada e conferida antes e agora o que está exposto são os seus usuários. É sempre mais barato não ter um ambiente de staging até o momento que uma dessas bombas exploda.
Além de ter um ambiente de staging, ele precisa cumprir seu propósito por completo. Não basta ter uma “homologação tunada”, um ambiente com compute reduzido, dados distantes da realidade, topologia de rede alterada ou sem o volume de tráfego de produção Quer alguns exemplos de como um ambiente de staging bem azeitado faz falta?
- Cloudflare - Cloudflare outage on February 20, 2026
- Gitlab - Postmortem of database outage of January 31
- Roblox - Roblox Return to Service | Roblox
Como minimizar os custos de infra?
Mesmo demonstrando que é muito mais barato manter um ambiente de staging do que correr os riscos do contrário, para muitas empresas ainda pode ser um investimento caro, que reduz margem. É desejável, mas nem sempre é possível.
Para contornar isso, temos algumas estratégias que envolvem principalmente efemeridade, servidores e serviços sob demanda. Isso depende muito da realidade e maturidade de cada time de desenvolvimento, mas considerando fluxos de entregas a cada sprint (geralmente duas semanas), faz mesmo sentido mantermos os ambientes em idle gerando custos? A maioria dos serviços cloud hoje oferece recursos para interromper parcialmente serviços e reduzir custos. Puxando alguns exemplos da AWS, o Amazon Aurora recentemente passou a aceitar minCapacity 0 o que interrompe os custos de compute quando não recebe mais conexões. EC2 tem o start/stop, ECS tem o desiredCount, S3 tem o Glacier. A regra aqui é provisionar somente sob demanda para cortar ao máximo os custos quando em idle. Utilizando IaC, a maioria dessas coisas podem até ser completamente derrubadas e reestabelecidas conforme a necessidade, se o cold start de algumas horas (a depender da escala) for aceitável pro fluxo do seu time.
Para onde ir agora?
Apesar de tudo isso que eu falei aqui, é muito, muito comum mesmo empresas e times que aplicam esses multi-ambientes de forma errada ou subótima, e é um problema que eu tenho certeza que até quem faz certo hoje já enfrentou antes. A gente só aprende mesmo depois de sofrer com a cagada de não ter feito mais cedo.
Aqui na UEEK mesmo a gente já sofreu muito por não ter ambiente de testes antes, ou não ter uma réplica fiel de produção para testar toda a operação de ponta a ponta e encontrar os problemas antes que chegassem nos clientes, e a gente aprendeu tanto com esse tipo de problema que hoje a gente consegue oferecer uma ajudinha pra quem não quer passar pelo mesmo que a gente. Se interessou? Clica aqui e dá uma olhada, é grátis!