Manutenção do servidor sem expulsar ninguém
O que acontece de verdade com os jogadores quando precisamos atualizar o servidor? A resposta simples seria: puxar o plugue. Construímos a resposta melhor — e é um dos meus recursos favoritos, embora o ideal seja quase nem notar.
O aviso. O servidor pode enviar uma mensagem de manutenção a cada mundo em execução. No jogo, aparece então um banner com contagem regressiva: "Reinicialização do servidor em 10 minutos." A mensagem precisa ser dispensada ativamente — mas só depois de alguns segundos, para que ninguém a feche sem querer no calor da batalha.
A reinicialização suave. Quando a contagem termina, o mundo é encerrado de forma ordenada: salvar o estado do jogo, despedir os jogadores com uma tela de despedida explicativa (em vez de um enigmático "conexão perdida") e parar o contêiner. Na próxima entrada, o mundo acorda de novo já na versão nova — o save, claro, continua lá.
A tecnologia por trás: um endpoint de administração protegido aceita os avisos — protegido por um token que só o servidor conhece. Se nenhum token estiver configurado, o recurso fica totalmente desligado; um endpoint de avisos aberto seria um convite para travessuras. Para os administradores há ainda comandos de chat direto no jogo e um botão por mundo no painel de administração.
Um efeito colateral inesperado: desde que o sistema existe, fazemos atualizações com mais calma — e, por isso, com mais frequência. Boas ferramentas de manutenção não melhoram só a manutenção, melhoram o projeto inteiro.
Comentários