Visão geral
Vou desenvolver um aplicativo no Android e iOS. Isso permitirá que os usuários configurem 'salas de bate-papo' em grupo e conversem em salas de bate-papo configuradas por outros usuários. O serviço precisa ser altamente escalável, de modo que possa acomodar um aumento maciço de usuários da noite para o dia (só podemos sonhar).
Informações de plano de fundo
Anteriormente, eu usei principalmente Java e Python, mas as linguagens mais apropriadas para esta tarefa devem ser usadas. Não me importo de aprender muitas novas habilidades.
Requisitos de
bate-papo O protocolo de bate-papo deve ser flexível: deve determinar quem pode visualizar / postar em 'salas de bate-papo' com base em fatores determinados pelo primeiro pôster / criador da 'sala de bate-papo' específica. Também deve permitir que os usuários instalem o aplicativo e comecem a usar o serviço, depois de fornecer apenas um apelido simples (que pode ser alterado posteriormente).
Planos de protocolo de bate-papo
Tendo olhado em volta, acho que o protocolo XMPP é o melhor candidato. Em particular, a extensão de bate-papo para vários usuários se parece com o que vou precisar. Isso seria mais adequado aos meus requisitos ou você conhece outra solução em potencial?
Atualização: Desde então, pesquisei o Protocolo para Conferência Síncrona e ele parece se encaixar perfeitamente com minhas necessidades. No entanto, não tenho certeza de como está bem documentado ou como realmente o implementaria.
Serviço em nuvem
Decidi entre o Amazon Web Services, o Google App Engine e o Windows Azure. Estou chegando à conclusão de que o Azure será o melhor, pois é mais fácil de gerenciar do que a AWS (a facilidade de escalabilidade será um fator-chave no design), acho que pode ser menos restrito que o GAE, e o Azure em breve terá kits de ferramentas para permitir uma fácil interface com os telefones Android e iOS.
Atualização: olhando para além, parece que a AWS seria mais barata e que eles têm disposições, como o Elastic Load Balancing e o Auto Scaling , que tornam o trabalho extra necessário para manter a escalabilidade bastante insignificante.
Essa é a decisão que você tomaria ou recomendaria / analisaria outros serviços em nuvem?
Requisitos gerais
Quaisquer componentes devem ser bem documentados, comprovadamente confiáveis e, de preferência, de alto nível sempre que possível. Por exemplo, eu preferiria usar um plug-in para implementar o protocolo de bate-papo em vez de escrevê-lo, deixando-o para pessoas mais experientes.
Obrigado
Obrigado pela leitura, e qualquer conselho que você tiver sobre qualquer aspecto seria muito apreciado :-)