Descripción general
Voy a desarrollar una aplicación en Android e iOS. Permitirá a los usuarios configurar 'salas de chat' grupales y hablar en salas de chat configuradas por otros usuarios. El servicio debe ser altamente escalable, de modo que pueda acomodar un aumento masivo de usuarios durante la noche (solo podemos soñar).
Información general
Anteriormente he usado principalmente Java y Python, pero se deben usar los lenguajes más apropiados para esta tarea. No me importa aprender muchas habilidades nuevas.
Requisitos de
chat El protocolo de chat debe ser flexible: debe permitir determinar quién puede ver / publicar en 'salas de chat' en función de los factores determinados por el primer afiche / creador de la 'sala de chat' en particular. También debería permitir a los usuarios simplemente instalar la aplicación y comenzar a usar el servicio, después de solo proporcionar un apodo simple (que podría cambiarse más adelante).
Planes de protocolo de chat
Después de mirar alrededor, creo que el protocolo XMPP es el mejor candidato. En particular, la extensión de chat multiusuario se parece a lo que necesitaré. ¿Sería esto más adecuado para mis requisitos, o conoces otra solución potencial?
Actualización: desde entonces he investigado el Protocolo para conferencias sincrónicas y parece encajar perfectamente con mis necesidades. Sin embargo, no estoy seguro de qué tan bien documentado está o cómo realmente lo implementaría.
Servicio en la nube
que he estado decidiendo entre Amazon Web Services, Google App Engine y Windows Azure. Estoy llegando a la conclusión de que Azure será el mejor, ya que es más fácil de administrar que AWS (la facilidad de escalabilidad será un factor clave en el diseño), creo que puede ser menos restringido que GAE, además Azure pronto tendrá kits de herramientas para permitir una fácil interfaz con teléfonos Android e iOS.
Actualización: al analizarlo más a fondo, parece que AWS sería más barato y que tienen disposiciones, como Elastic Load Balancing y Auto Scaling , que hacen que el trabajo adicional necesario para mantener la escalabilidad sea insignificante.
¿Es esta la decisión que habría tomado, o recomendaría / buscaría en otros servicios en la nube?
Requisitos generales
Cualquier componente debe estar bien documentado, ser confiable y, preferiblemente, de alto nivel, siempre que sea posible. Por ejemplo, preferiría usar un complemento para implementar el protocolo de chat en lugar de escribirlo yo mismo, dejándolo a disposición de personas más experimentadas.
Gracias
Gracias por leer, y cualquier consejo que tenga sobre cualquier aspecto sería muy apreciado :-)