O servidor saudável que ninguém conseguiu alcançar na manhã seguinte

Ler o original em inglês

dns-and-sslmigrationguardrailsdeploy-verification

Imagem de capa: O servidor saudável que ninguém conseguiu alcançar na manhã seguinte

Nós movemos um servidor pequeno de uma configuração para outra. Mesmas ferramentas, mesmo propósito, endereço novo. Rodamos um teste completo contra ele no mesmo dia. Tudo funcionou. Fechamos o notebook achando que o trabalho estava terminado.

Na manhã seguinte, a mesma configuração não conseguia mais alcançar o mesmo servidor. Nada tinha mudado nesse meio tempo.

Nossa primeira suposição foi que tínhamos quebrado o servidor durante a noite. Verificamos tudo com cuidado. Ele estava saudável, esperando por um tráfego que não chegava.

O problema estava em como a conexão encontrava o caminho até lá. O endereço tinha sido atualizado corretamente na fonte real. O que não tinha acompanhado eram todos os caches entre a nossa configuração e essa fonte real, cada um ainda guardando uma resposta antiga até que o seu próprio prazo de validade acabasse.

A migração estava feita. O caminho até ela não estava, e eram duas linhas de chegada diferentes.

Já tínhamos pagado por essa lição antes

O que mais doeu foi que nós já tínhamos aprendido exatamente essa lição, num projeto bem maior, em que uma diferença de tempo parecida causou uma queda real para alguém importante. Aquele incidente é o motivo de existir uma proteção formal para projetos nessa escala. A proteção diz para checar diretamente a fonte real, a que tem a palavra final, e nunca tratar um deploy bem-sucedido como prova (Ler em inglês) de que o caminho inteiro está no ar.

Criamos essa proteção para o projeto grande. Depois caímos direto no mesmo problema numa coisa pequena que montamos numa tarde, porque parecia pequena demais para precisar da mesma proteção.

O que fazemos agora

Sempre que a infraestrutura muda de lugar, por menor que seja, checamos diretamente a fonte real em vez de confiar num cache local. O cache é o que tem mais chance de estar mentindo, porque ele repete uma resposta velha.

Também não entregamos um sistema recém-movido a trabalhos automáticos ou sem supervisão até confirmarmos uma conexão limpa a partir de um lugar que nunca falou com a configuração antiga. Uma máquina assim não tem memória velha para ser enganada.

Nada automático tomou essa decisão

Uma proteção comprovada numa escala não se espalha sozinha para uma versão menor do mesmo tipo de mudança. Alguém precisa decidir que a lição continua valendo, mesmo quando o trabalho à frente parece pequeno demais para dar atenção. Nada automático toma essa decisão por nós, então mantemos o hábito de propósito, sempre, qualquer que seja o tamanho.

Antes da sua próxima migração, confira o endereço na fonte real e confirme uma conexão limpa a partir de um ponto de vista novo, antes de entregar o sistema a um trabalho sem supervisão.

Receba a próxima história de IA no dia a dia

Histórias em linguagem simples sobre usar IA para facilitar o trabalho do dia a dia. Um e-mail curto quando sair uma nova, sem jargão.