De vez em quando, você tem a oportunidade de provar seu valor em um grande palco. Há quatro semanas, tivemos essa chance. O usuário do Couchbase, OMGPOP, havia lançado Desenhe algo - um jogo semelhante a um dicionário que estava se tornando viral. Aproveitando o que acabaria sendo uma oportunidade de crescimento sem precedentes, eles precisavam absolutamente dimensionar seu banco de dados. Havia duas coisas inegociáveis: o desempenho tinha que ser sustentado e o jogo nunca poderia ser retirado do ar, mesmo quando o número de usuários e jogos aumentasse rapidamente.
Dimensionar para dar suporte ao jogo para celular que mais cresce em todos os tempos não é algo trivial. Desde o início, o Draw Something cresceu para Mais de 50 milhões de downloads em poucas semanas (e ainda está fazendo cerca de dois milhões de downloads por dia). O número de usuários ativos diários (DAU) é de 15 milhões, superando de longe o do jogo mais próximo, o Words with Friends. Dezenas de milhões de jogos foram iniciados. Mais de 3.000 desenhos são gerados a cada segundo, somando-se aos dois bilhões de que já foram criados e armazenados.
E o crescimento não parou. A OMGPOP agora está de olho em 100 milhões de downloads.
Esse tipo de crescimento é o sonho de todo desenvolvedor de aplicativos, mas se a escalabilidade não for planejada com antecedência, ela pode se tornar o pior pesadelo do desenvolvedor. A maneira mais rápida de acabar com um jogo em crescimento é fazer com que os usuários esperem ou, pior ainda, dizer a eles para voltarem quando você puder lidar com a carga. Basta perguntar à EA.
Lançado quase ao mesmo tempo que o Draw Something, o Simpson's Tapped Out, da EA, também estava tendo uma enorme adoção. Com crescimento viral, ele atingiu #2 na Apple App Store no início de março, antes de enfrentar problemas de escala. Em poucos dias, o jogo foi retirado da App Store apenas com os jogadores existentes continuando a jogar. Algumas semanas depois, ele ainda não retornou.
Felizmente, a OMGPOP planejou antecipadamente a escalabilidade, selecionando um Banco de dados NoSQL como sua principal tecnologia de armazenamento de dados. No caso deles, estavam usando Servidor Couchbasee as coisas estavam indo bem - nem sabíamos que o Couchbase estava por trás do jogo.
Ficamos cientes do nosso papel no sucesso deles quando nos chamaram para garantir que estavam empregando as práticas recomendadas no planejamento do crescimento do cluster de banco de dados. Como o número de usuários, jogos e desenhos cresceu a uma taxa sem precedentes, eles puderam aumentar continuamente a capacidade do cluster (chegando a mais de 100 servidores), mantendo o desempenho do aplicativo e com tempo de inatividade zero do aplicativo. Nunca houve uma queda de desempenho ou um único momento em que novos jogadores não pudessem se juntar à festa, mesmo diante de um hardware em extinção! Em um determinado momento, um problema na placa-mãe do hardware selecionado estava derrubando os membros do cluster em um ritmo assustador. O Couchbase enfrentou até mesmo essas falhas sem interromper a operação ou o desempenho do jogo.
O desenvolvimento de aplicativos inovadores é, obviamente, a base do sucesso da OMGPOP e de outras empresas. Embora os requisitos de escalonamento de um jogo social de sucesso possam ser mais extremos do que os da maioria dos aplicativos, a importância de poder escalonar facilmente seu aplicativo sem tempo de inatividade e, ao mesmo tempo, manter o desempenho é fundamental para o sucesso da maioria dos aplicativos. É importante que os desenvolvedores escolham um banco de dados que não apenas ofereça suporte à operação do aplicativo em si, mas que também seja capaz de dimensionar facilmente. Parabéns à OMGPOP por desenvolver um jogo inovador que é um grande sucesso em todo o mundo. Estamos felizes que o Couchbase tenha contribuído para esse sucesso.
Legal. Isso é algo para se gabar.
Então, quantos documentos são gravados e lidos por segundo com 100 nós? É um ambiente de nuvem ou HW dedicado?
Oi Artur -
Eles estão executando o Couchbase em um hardware dedicado (gerenciado por um provedor de hospedagem) e com uma média de cerca de 120.000 leituras e gravações de documentos por segundo, em apoio ao jogo. O cluster também está replicando dados em taxas semelhantes em todo o cluster (o que nos permitiu absorver muitas falhas de hardware nas últimas semanas).
james.
Algumas perguntas (divertidas):
Quantos servidores o OMGPOP matou/derrubou com o Draw Something?
Qual é a taxa de morte de servidores (falha de unidade/servidor).
É mais ou menos do que a falha de hardware esperada para os sistemas em que estão sendo executados?
Quanto custa para a OMGPOP/Zynga esse tipo de nível de serviço de hospedagem?
Gostaria de saber se soluções totalmente hospedadas, como a CloudAnt, poderiam ser tão responsivas.
Ou você precisa contratar um administrador para dimensionar isso prontamente.
Não está imediatamente claro para mim se as soluções totalmente hospedadas (como a CloudAnt) estão vendendo instâncias de um servidor ou uma infraestrutura de servidores que pode ser dimensionada sob demanda.
Hi -
Você deve conversar com a Cloudant para obter informações sobre suas ofertas e recursos. Eles estão mais bem preparados para responder a essas perguntas. O Couchbase oferece suporte à implementação hospedada do nosso software no EC2 por meio de rightscale. É muito fácil de usar. Basta pesquisar no Google couchbase e rightscale.
James.
Oi Razamataz,
Este não é o melhor lugar para falar sobre o Cloudant ou outros fornecedores que não sejam do Couchbase, mas abordarei as questões específicas que você levantou.
- A Cloudant tem histórias semelhantes de clientes que respondem aos requisitos de carga.
- Você não precisaria contratar um administrador porque a Cloudant gerencia tudo para você, seja no seu data center ou no da Cloudant. Você só precisa interagir com a API.
- Você pode dimensionar o número de nós em seu cluster do Cloudant.
Fique à vontade para entrar em contato comigo se quiser falar mais sobre a Cloudant.
Saúde.
Obrigado, Sam!
Gostaria de saber se eles estão tendo o mesmo problema com o recurso de rebalanceamento. Eles estão usando o couchbase 1.8.x? Estamos usando o membase 1.7.1 com mais ou menos 200 milhões de itens em um cluster aws de 9 nós, mas estamos tendo um problema crítico com o rebalanceamento que continua falhando.
Oi screwdisk -
Lamento que esteja tendo problemas. Está recebendo a ajuda de que precisa? Terei prazer em colocá-lo em contato com nossos recursos de suporte se quiser me enviar um e-mail. Meu nome é James no couchcbase.
obrigado -
james.
Estamos procurando alguém para nos ajudar a desenvolver nosso arco para um jogo social que está por vir e, bem, nenhum de nós aqui no escritório tem grande experiência com a execução de sites ou com a manipulação de dados na casa dos milhões por hora ou mais e com a capacidade de manter o escalonamento sem qualquer tempo de inatividade.
Nós nos comunicamos com nosso cliente de jogo por meio de pontos de extremidade json e gravamos muitos dados e, é claro, lemos esses dados também na inicialização do cliente. Precisamos ser capazes de lidar com o tráfego de jogos sociais à medida que nosso aplicativo cresce no iOS e no Facebook. O Right Scale com + CouchBase é uma boa solução e também uma solução em que você não precisa de um administrador em tempo integral, além disso, seria recomendável executar na nuvem aws ou hardware realmente metálico.
Sabemos se eles estão usando a versão 1.8 ou 2.0?
Versão 1.8.
Venho do Mongo e tenho visto alguns relatórios que me levaram a procurar outras opções para determinados projetos, como este exemplo incrível. Depois de mais pesquisas, essa parece ser uma solução fantástica. Trabalho com o Node e, no momento, parece que o node-memcached é o único caminho a seguir. Como nunca usei o memcached, embora ele seja drop-in, existem recursos importantes que eu perderia?
Embora seja verdade que o node-memcached seja a opção pronta para produção atualmente, temos um projeto em que estamos avançando com um cliente node baseado na libcouchbase. Envie um e-mail para mim (matt) no Couchbase se quiser uma prévia.
Usando o node-memcached, você não perderia nada, na verdade. Você teria que interagir diretamente com a interface REST da visualização, mas é um HTTP simples e bem documentado, que o node facilita muito, é claro.
Você pode ver algumas ideias aproximadas para isso aqui:
https://www.couchbase.com/wiki/...
... e mais discussões estão acontecendo entre os colaboradores e os desenvolvedores principais, tanto por e-mail quanto por IRC.