Rede Pwn3ed:
Pwn3ed
League of Legends
Master Smite
Smite

quinta-feira, 20 de março de 2014

Undefined? Rincewind e os problemas com o servidor!

Riot Rincewind comentando os problemas com o launcher (servidores sendo listados como indefinidos) que ocorreram ontem:

"Os detalhes da interrupção de serviço hoje garantem uns bons tapas na cara. É aquela típica história que pode ser ouvida de quase todo iniciante que fica grande em um curto período de tempo.

Como se rastreia um sistema que está e não está em produção? Quando você é uma loja pequena, você faz isso numa simples página da web. De tempos em tempos você adiciona alguns recursos, dai um dia você acha eles pesados e troca com novos softwares que procuram no seu inventário.

Nós mudamos para um novo sistema. É rápido, tem todos os recursos para copiar os sistemas num ritmo rápido e é confiável. Entretanto, ele só é confiável enquanto a informação do sistema de inventário está atualizada e confiável.

Como parte da migração para os sistemas mais novos, nós desativamos os servidores antigos. Esse era o objetivo hoje. Infelizmente isso se mostrou um pesadelo quando começou uma interrupção global.

O que nós chamamos de launcher, o botãozinho pequenininho que diz "JOGAR", pelo qual os jogadores fazer a transição para a tela de login do cliente. Nós mantemos o estado do launcher de diferentes regiões para uma série de databases centrais. Eles também servem para outros conteúdos como notícias e as páginas que você vê logo após de entrar no jogo. Essa parte do sistema é bem parada e não muda quase nunca.

O conteúdo é distribuído de nossa database e fica disponível nas páginas da web. Como o conteúdo é disponibilizado por um bom tempo, não há muito trânsito para a database. Hoje, como parte do desligamento dos servidores antigos, nós desligamos alguns que não estavam em produção de acordo com a ferramenta de inventário.

Vocês podem imaginar o que aconteceu depois.

Alguns minutos depois o launcher, as notícias e as páginas do cliente desapareceram. O launcher mostrou "undefined" ao invés de jogar. Invocadores por todo o mundo experimentaram um coletivo "Não conseguimos logar!!!!"

O servidor de armazenamento expirou o conteúdo e foi para a database para conseguir novo, só que eles não conseguiram alcançar as databases porque elas haviam sido desligadas. Nós acidentalmente desligamos servidores que estavam em produção, porém eles estavam definidos como fora de produção.

Após algumas chamadas de telefone bem nervosas para o pessoal da central de dados, os servidores database foram reativados. Só que eles fazem algo depois de um desligamento errado: entram em modo de recuperação e checam a integridade das informações. Dependendo do tamanho da informação, o processo pode demorar um bom tempo. No nosso caso demorou e nós tivemos que rodar a checagem de integridade.

Conjuntamente, começamos a trabalhar para conseguir arrumar o botão de jogar caso as databases demorassem. Elas realmente demoraram para se recuperar, então no final nós aproveitamos o trabalho para restaurar a operação, mesmo com a recuperação incompleta. Os jogadores agora conseguiam ver "JOGAR" ao invés de "undefined" e logar novamente.

FAQ

1) WTF Rincewin, isso soou tão amador, como vocês desligaram o sistema sem verificar?

Isso foi um aprendizado e estamos trabalhando para educar as pessoas em como usar as ferramentas de modo eficiente, mas também verificar se a informação apresentada é exatamente o que ela diz ser. Isso é também um artefato de um ambiente que está em transição de um processo antigo para um novo. Essas coisas acontecem em lojas que vão de um modelo pequeno para um enorme em um curto período de tempo.

2) Ok, e porque vocês não voltaram para os databases de backup e trouxeram tudo de volta?

Nós acidentalmente desligamos eles também como parte do processo.

3) Err, isso soa como falhas.

Sim, e nós estamos arrumando isso agora. Estamos nos assegurando que nenhuma database central tenha as informações para todas as regiões. Todos os sistemas estão sendo separados e se transformando em seus próprios serviços para que eles não derrubem uns aos outros.

4) Como nós podemos confiar que isso não vá se repetir de novo em novas centrais de dados como em Oregon.

Nós estamos construindo a central de dados de Oregon do zero. Nós não teremos as ferramentas antigas ou isso poderia nos afetas. Nós temos novas ferramentas para controlar esse ambiente sem sermos afetados por servidores anciões ou inventários de informações.

Por fim, quando perguntado sobre o código "thereisnourflevel" ser uma solução para o problema, respondeu:

"@Chess435 O código é baseado no cliente. É uma passagem que nós usávamos alguns anos atrás antes de termos pessoal especializado para a fila de login principalmente para controlar a quantidade de jogadores logando. Hoje nós usamos a fila de login para controlar isso.

Nós decidimos não mudar o código até porque não iria demorar muito para os jogadores descobrirem qual é o novo. Nós simplesmente temos usado o botão de jogar como um indicador se a plataforma está ligada ou não. Eu acho que está na hora de rever essa decisão e fazer isso de um jeito melhor."

Fonte: Surrender@20

Se você quiser pode acessar esse post no site novo da Pwn3ed, clique aqui e acesse!
Share:

Nenhum comentário:

Postar um comentário

© Pwn3ed! Todos os direitos reservados | Design por Gradash adaptado apartir de Gradash