Ninguém Mais Escreve Código

Capítulo 11. Enquanto não funcionou para as pessoas, nada aconteceu

Parte III. Antivibe9 min

11

Enquanto não funcionou para as pessoas, nada aconteceu

Noite num escritório escuro: um engenheiro cansado, de costas, diante de dois monitores com janelas de terminal quase iguais, a mão na testa.ilustração
A 31 de janeiro de 2017 um engenheiro da GitLab apagou dados numa janela ligada ao servidor errado. Nenhuma cópia de segurança funcionava como todos julgavam.

Na noite de trinta e um de janeiro de 2017 um engenheiro do GitLab, um dos maiores serviços de hospedagem de código do mundo, estava lidando com um problema num banco de dados. O banco tinha dois servidores, o principal e o reserva, e o reserva tinha se atrasado em relação ao principal e parado de copiar os dados dele. Para reiniciar a cópia, era preciso limpar o servidor reserva. Era tarde da noite no fuso do engenheiro, ele estava cansado, vinha brigando com o problema havia várias horas seguidas e, em algum momento, executou um comando de apagar dados numa janela que estava conectada ao servidor errado. Um ou dois segundos depois ele percebeu o erro e interrompeu o comando. Nesse segundo, cerca de trezentos gigabytes de dados de produção sumiram do servidor principal.

A empresa tinha várias formas de backup, e cada uma estava configurada. Quando a equipe começou a verificá-las, descobriu que nenhuma funcionava como todos achavam. As cópias diárias no armazenamento em nuvem não estavam sendo feitas, porque o programa de backup tinha sido feito para uma versão antiga do banco, e ele avisava dos erros por e-mails que ninguém recebia por causa de outra configuração. Os outros mecanismos ou não estavam ativados para esse servidor, ou geravam cópias a partir das quais não dava para restaurar rapidamente. O que salvou a situação foi o acaso: seis horas antes do acidente um dos engenheiros tinha tirado um snapshot do banco para os seus testes. Foi dele que tudo se restaurou, e as mudanças dessas seis horas, projetos, comentários, cerca de setecentas contas novas, se perderam. A restauração foi transmitida ao vivo no YouTube, e milhares de pessoas passaram várias horas vendo os dados serem copiados.

Antes do acidente tudo parecia exemplar. O backup estava configurado, as tarefas estavam agendadas, a documentação dizia que as cópias eram feitas. Em qualquer reunião, à pergunta “temos backup?” a resposta seria “sim”, e seria uma resposta sincera. Só que as cópias não existiam, porque ninguém nunca tinha tentado restaurar a partir delas. Um backup a partir do qual nunca se restaurou nada existe mais ou menos no mesmo sentido em que existe o objeto com forma de software do segundo capítulo.

Comigo aconteceu algo parecido numa escala muito mais modesta, e por isso mesmo, acho, mais revelador. No dia vinte e oito de março de 2026 eu estava implantando uma nova versão de um dos meus projetos, o initerent. O script de implantação devia fazer quatro coisas em sequência: passar o banco para o novo esquema, preenchê-lo com os dados iniciais, migrar os documentos antigos e só depois disso parar o aplicativo e subi-lo de novo. O script tropeçou logo na primeira linha por causa de um errinho de sintaxe do shell, e depois, por causa de configurações erradas e de uma variável vazia com o nome da conta no registro de imagens, começaram a falhar uma após a outra a migração, o preenchimento e a transferência de documentos. E então, embora nenhuma operação preparatória tivesse dado certo, o script chegou ao último passo e parou o aplicativo direitinho, para recriá-lo na nova versão.

Após entrar

O resto do livro é para quem entrou

Entre com INITE ou crie uma conta. Leva um minuto, e o livro abre aqui mesmo.