Como o maior jogo para celular de todos os tempos escalou seu Pokémon Trainer Club para suportar milhões de usuários?
Couchbase e NoSQL
Em questão de dias, em relação aos usuários ativos diários, o Pokémon GO ultrapassou o Twitter. De acordo com a Apple 1Na primeira semana, quando foi lançado inicialmente na Nova Zelândia, na Austrália e nos Estados Unidos, ele estabeleceu um recorde de número de downloads. Hoje, já foi baixado mais de 500 milhões de vezes.
Por que NoSQL?
Um dos pontos de entrada, o sistema Pokémon Trainer Club, amplia um serviço legado de gerenciamento de perfil, permitindo que os usuários criem uma conta e façam login - não apenas para o Pokémon GO, mas para o Pokémon Trading Card Game Online, Play! Pokémon e muito mais.
O serviço legado de gerenciamento de perfis, criado sobre um banco de dados relacional, era capaz de dar suporte aos usuários existentes, mas não podia ser dimensionado para suportar os milhões de novos usuários esperados após o lançamento do Pokémon GO. A Pokémon Company International precisava de um banco de dados capaz de escalonar.
Eles escolheram o Couchbase Server Edição Enterprise.
O Pokémon GO foi lançado em alguns países de cada vez - da Nova Zelândia, Austrália e Estados Unidos ao Japão, Alemanha, Hong Kong e outros.
Essa estratégia permitiu que a The Pokémon Company International gerenciasse o crescimento de sua infraestrutura - de forma incremental, sob demanda e conforme necessário - garantindo que, embora algumas pessoas tivessem que esperar para criar uma nova conta, todos teriam a chance de jogar.
Por que o Couchbase Server?
SQL
O Couchbase Server 4.0 introduziu o N1QL, uma linguagem de consulta baseada em SQL para documentos JSON, facilitando a transição de bancos de dados relacionais. O sistema do Pokémon Trainer Club foi desenvolvido usando N1QL, em menos de três meses, para minimizar as alterações na forma como os dados são modelados e consultados no serviço de gerenciamento de perfil legado, construído sobre um banco de dados relacional.
Ao usar o N1QL, os desenvolvedores podem fazer a transição de um banco de dados relacional com muito mais rapidez e, no momento certo, otimizar a forma como os dados são modelados e acessados, utilizando o N1QL para consultas e as APIs de valor-chave/subdocumento para leituras e gravações.
Escalabilidade
O Couchbase Server 4.0 introduziu o dimensionamento multidimensional (MDS), permitindo que os administradores isolem e dimensionem serviços discretos (dados, consulta e índice). O sistema Pokémon Trainer Club, desenvolvido usando N1QL, produz uma carga de trabalho intensiva de consultas. Nos dias que se seguiram ao lançamento do Pokémon GO, os administradores puderam dimensionar os serviços de consulta e índice (mais de uma vez) em vez de dimensionar todo o banco de dados, eliminando a necessidade de reequilibrar ou "mover os dados", um processo com uma sobrecarga significativa.
Desempenho
O Couchbase Server 4.5 introduziu índices otimizados para a memória utilizando uma lista de saltos na memória e instantâneos persistentes, removendo a E/S de disco do caminho crítico e reduzindo a latência das atualizações e varreduras de índice. O sistema do Pokémon Trainer Club não é apenas de consulta intensiva (muitas varreduras de índice), mas também de gravação intensiva (muitas atualizações de índice) - com todos, dos Estados Unidos ao Japão, criando contas.
Ao aproveitar os índices otimizados para memória e a opção de consistência read-your-own-writes (RYOW), os índices foram atualizados mais rapidamente e as consultas retornaram resultados consistentes.
Suporte e serviço profissional
A Couchbase estava comprometida com o sucesso do Pokémon GO, com engenheiros de suporte disponíveis 24 horas por dia, 7 dias por semana, trabalhando durante o dia, até tarde da noite e durante o fim de semana para garantir o sucesso do lançamento. Quando foram identificados problemas de desempenho, as equipes de suporte e engenharia os resolveram sem demora; em uma ocasião, entregaram um patch de manutenção em questão de dias. Além disso, o suporte foi acompanhado por serviços profissionais e engenheiros de soluções para ajudar em tudo, desde a arquitetura e o código do aplicativo até a implementação e o dimensionamento. Foi um esforço de equipe.