Cloud mal feita vira incidente

9 minutos de leitura

Quando a infraestrutura é tratada como detalhe, ela cobra o preço na pior hora possível

O incidente que ninguém viu chegar

Era sexta-feira à noite. O time de desenvolvimento tinha acabado de fazer um deploy de rotina. Nada crítico, nada urgente. Uma atualização pequena que estava em homologação há dias.

Quarenta minutos depois, o sistema de pagamentos estava fora do ar.

Não havia rollback automatizado. Não havia runbook claro para aquele tipo de falha. Não havia monitoramento configurado nos endpoints que importavam. E o engenheiro de plantão estava sozinho, sem contexto, tentando entender o que tinha mudado num ambiente que ninguém havia documentado direito.

Três horas de indisponibilidade. Milhares de transações perdidas. Uma sexta-feira que virou sábado de manhã para cinco pessoas que não deveriam estar trabalhando.

Esse cenário não é exceção. É o destino inevitável de toda cloud mal feita.

O incidente não começa no dia do incidente

A maior ilusão sobre incidentes de infraestrutura é que eles são eventos. Algo que acontece, que surge do nada, que pega todo mundo de surpresa.

Não são.

Incidentes são o resultado visível de decisões invisíveis. Cada atalho tomado no passado é uma dívida que acumula juros silenciosamente, até que o vencimento chega, sempre no pior momento possível.

O deploy que falhou na sexta foi consequência de uma pipeline sem testes automatizados aprovada há seis meses porque “a gente ajusta depois”. O rollback que não existia foi consequência de uma arquitetura pensada para funcionar, mas nunca para falhar. O monitoramento que não alertou foi consequência de dashboards configurados para mostrar que tudo estava bem, não para detectar quando algo ia mal.

Cloud mal feita não explode. Ela apodrece lentamente, por dentro, até que a estrutura não aguenta mais.

As decisões que constroem o incidente

Infraestrutura configurada à mão

Existe uma prática que parece inofensiva e é uma das maiores fontes de incidentes em ambientes de cloud: configurar infraestrutura manualmente.

Um engenheiro acessa o console do provedor, ajusta um parâmetro de segurança, adiciona uma regra de firewall, muda o tamanho de uma instância. Rápido, prático, sem burocracia.

O problema começa quando ninguém documenta o que foi feito. E depois quando outra pessoa recria o ambiente sem saber desse ajuste. E depois quando um ambiente de produção e um ambiente de homologação divergem silenciosamente por meses, até que algo funciona num e falha no outro sem que ninguém entenda por quê.

Infraestrutura configurada à mão é infraestrutura que só existe na cabeça de quem a configurou. Quando essa pessoa sai de férias, pede demissão ou simplesmente não está disponível às três da manhã, o conhecimento vai junto.

Infraestrutura como código não é burocracia. É a diferença entre um ambiente reproduzível e um ambiente frágil.

Monitoramento que monitora as coisas erradas

Toda empresa tem monitoramento. Poucas empresas têm monitoramento útil.

O monitoramento inútil é aquele que mede o que é fácil de medir: uso de CPU, consumo de memória, espaço em disco. Métricas técnicas que dizem muito sobre a saúde do servidor e quase nada sobre a saúde do negócio.

O usuário não se importa se o servidor está com 80% de CPU. O usuário se importa se o checkout está lento. Se o login está falhando. Se a notificação não chegou. Se a busca não retornou resultado.

Cloud mal feita monitora infraestrutura. Cloud bem feita monitora experiência.

E a diferença entre as duas aparece no incidente. O sistema de monitoramento envia um alerta de CPU alta. A equipe investiga o servidor e não encontra nada anormal. Meia hora depois, o suporte começa a receber reclamações de usuários que não conseguem finalizar compras. O problema estava em outra camada, em outro serviço, e o monitoramento simplesmente não estava olhando para o lugar certo.

Segurança deixada para depois

Segurança é a área da engenharia de cloud que mais sofre com o “a gente vê isso depois”.

O prazo está apertado. O produto precisa ir ao ar. As permissões são configuradas de forma ampla para não travar o desenvolvimento. Os segredos ficam em variáveis de ambiente sem rotação. A autenticação entre serviços é deixada para uma segunda fase que nunca chega.

E então um bucket de armazenamento fica público por acidente. Ou uma chave de API vazada nos logs é usada por alguém de fora. Ou uma vulnerabilidade conhecida não é corrigida porque ninguém tem visibilidade sobre quais versões estão rodando em produção.

Incidentes de segurança na cloud raramente são sofisticados. A maioria é consequência direta de configurações óbvias deixadas erradas porque ninguém foi responsabilizado por deixá-las certas.

Deploys sem estratégia de reversão

Todo deploy carrega risco. O deploy perfeito não existe.

O que existe é o deploy que, quando dá errado, pode ser revertido em minutos, e o deploy que, quando dá errado, exige horas de trabalho manual para descobrir o que mudou, desfazer o que foi feito e restaurar o estado anterior.

Cloud mal feita trata o rollback como exceção. Como algo que só precisa existir se as coisas derem muito errado. E por isso não é automatizado, não é testado, não faz parte da rotina.

O problema é que, quando as coisas dão muito errado, é exatamente o momento em que não há tempo para improvisar. O rollback precisa existir antes do incidente, não durante.

Escalabilidade pensada só para cima

Um dos erros mais comuns em arquiteturas de cloud é projetar para crescimento sem projetar para variação.

O sistema foi desenhado para escalar quando o tráfego aumenta. Mas o que acontece quando o tráfego cai abruptamente e os recursos não são reduzidos? A conta do provedor cresce sem que o negócio cresça junto.

E o que acontece quando o tráfego aumenta de forma mais rápida do que o escalonamento automático consegue acompanhar? Uma campanha de marketing bem-sucedida, um pico inesperado de acessos, um evento que ninguém antecipou. O sistema começa a degradar antes que os recursos adicionais estejam disponíveis.

Escalabilidade mal projetada não protege nos momentos que importam. Ela cria uma falsa sensação de segurança que dura até o primeiro teste real.

O custo real de um incidente

Existe uma tendência nas organizações de medir o custo de um incidente pelo tempo de indisponibilidade multiplicado pela receita por hora. Um cálculo simples, auditável, que aparece nos relatórios pós-incidente.

Esse cálculo subestima o custo real por um fator enorme.

O custo direto, a receita perdida durante a indisponibilidade, é apenas a ponta visível. Abaixo da superfície estão os custos que raramente aparecem nos relatórios.

O custo da confiança perdida. Usuários que experimentaram uma falha não voltam com a mesma disposição. Empresas B2B que sofreram um incidente em sistemas críticos iniciam conversas sobre cláusulas contratuais e SLAs que deveriam ter sido cumpridos.

O custo do tempo da equipe. Cada hora de incidente consome horas de vários engenheiros simultaneamente. A investigação que vem depois consome mais horas. A correção definitiva, se houver, consome mais. E enquanto tudo isso acontece, nenhum produto novo está sendo construído.

O custo da dívida técnica acelerada. A correção de emergência feita sob pressão raramente é a correção certa. Ela resolve o sintoma imediato e introduz nova complexidade no sistema, plantando a semente do próximo incidente.

E o custo cultural. Times que passam por incidentes repetidos sob pressão e sem suporte adequado desenvolvem medo. Param de experimentar. Passam a evitar deploys em determinados horários. Criam rituais defensivos que desaceleram tudo. A cultura de engenharia se contrai ao redor do medo de quebrar o que está funcionando.

A diferença entre o acidente e o padrão

Todo ambiente de cloud vai ter incidentes. Isso não está em discussão.

A diferença entre uma organização madura e uma imatura não é a ausência de incidentes. É a frequência, a severidade, o tempo de recuperação e, principalmente, o que acontece depois.

Em organizações maduras, cada incidente é tratado como uma oportunidade de aprendizado sistêmico. O post-mortem não busca culpados. Busca as condições que tornaram o incidente possível e as mudanças que tornarão a recorrência menos provável. A cultura é de melhoria contínua, não de punição.

Em organizações imaturas, o incidente é investigado até que um responsável seja identificado, a correção imediata é aplicada, e o sistema retorna ao estado anterior, que é exatamente o estado que produziu o incidente.

Nesse segundo caso, o incidente não é um evento. É uma rotina com data de recorrência já marcada.

O que separa cloud mal feita de cloud bem feita

A separação não está no orçamento. Não está no tamanho da equipe. Não está no provedor escolhido.

Está nas decisões que a organização toma quando ninguém está olhando.

Automatizar o que pode ser automatizado, mesmo quando fazer manualmente parece mais rápido agora. Testar cenários de falha antes que a falha aconteça em produção. Documentar o que foi feito, para quem vai precisar desfazer. Monitorar o que importa para o usuário, não apenas o que é fácil de medir. Tratar segurança como requisito, não como funcionalidade futura. Construir rollback antes de precisar dele.

Essas são decisões que não aparecem nas demos, não rendem aplausos nas apresentações internas, e não geram nenhum resultado visível enquanto tudo está funcionando.

Elas só aparecem quando algo dá errado.

E quando algo dá errado, elas são a diferença entre um incidente resolvido em minutos e uma sexta-feira que vira sábado de manhã para cinco pessoas que não deveriam estar trabalhando.

“Cloud mal feita não explode. Ela apodrece lentamente, por dentro, até que a estrutura não aguenta mais.”