Para una aplicación móvil híbrida que sirve actualizaciones en tiempo real, ¿puedo usar Ruby on Rails para la API o necesito un sistema de back-end más potente y listo para la concurrencia como Node.js o Scala (con Akka)?

Los servicios en tiempo real necesitan mantener muchas conexiones de larga duración (de modo que cuando hay un nuevo evento en el lado del servidor, el servidor puede empujarlo inmediatamente al lado del cliente), mientras que Rails está diseñado para una única solicitud-respuesta tradicional, por lo que Rails es naturalmente no está diseñado para servicios en tiempo real.

Puede probar el marco web Xitrum Scala. Algunas de sus ventajas:

  • Está diseñado por un antiguo desarrollador de Rails. Sus API son muy familiares para los desarrolladores de Rails.
  • Tiene soporte incorporado para SockJS. Esto puede ser lo que realmente necesita para admitir dispositivos móviles más antiguos que no tienen soporte WebSocket. Hasta donde sé, hasta este momento Xitrum es el único framework web Scala que tiene soporte incorporado para SockJS.
  • Se basa directamente en Netty (consulte Comparación de rendimiento del marco web TechEmpower y Testimonios de Netty) y Akka, que son muy rápidos. A diferencia de Rails, Netty está diseñado para mantener muchas conexiones de larga duración.
  • Tiene soporte incorporado para escalar el lado del servidor a múltiples servidores (formando un grupo de servidores). Con la misma solución SockJS basada en Node.js, para escalar a múltiples servidores, necesitará configurar un servidor Redis adicional, su arquitectura pronto se convertirá en un desastre y difícil de mantener si no tiene cuidado.

Descargo de responsabilidad: trabajo para Typesafe y contribuyo a Play Framework de vez en cuando.

Los puntos de referencia tecnológicos para varios sitios web están aquí: Comparación del rendimiento del marco web TechEmpower

Para la serialización JSON:

play-scala-anorm: 176,265
rieles: 71,260

Tenga en cuenta que Techempower es una herramienta de evaluación comparativa centrada en tareas muy pequeñas. Es posible que desee verificar esto con sus propios puntos de referencia y ver cuántos usuarios simultáneos espera; es posible que Rails funcione perfectamente con su base de usuarios.

Históricamente, ciertamente Rails ha tenido problemas. No puedo hablar con Rails ahora, pero puedo contarte mi experiencia. Comencé como programador de Java y trabajé durante tres años haciendo Ruby on Rails. Aprendí Scala porque estaba viendo números de Rails que sabía que no coincidían con los números que había estado obteniendo en Java. Conocía al menos a dos compañías que escribieron aplicaciones de chat en Rails y terminaron reescribiéndolas en Java porque no estaban obteniendo la capacidad de respuesta que necesitaban. Nuevamente, verifique esto independientemente.

Hay una aplicación de ejemplo llamada Mapas reactivos que utiliza Play con un sistema reactivo (es decir, asincrónico sin bloqueo) que puede darle una idea de lo que puede hacer: Typesafe Activator

La representación de Play es conceptualmente muy cercana al modelo de Rutas / Controlador / Vistas de plantilla de Rails, pero no tiene un ORM codificado como ActiveRecord. Puede usar Anorm, pero usar un controlador JDBC lo llevará directamente al bloqueo nuevamente. Muchos usuarios de Play usan conexiones sin bloqueo contra Redis / Cassandra / etc. o usan un controlador de base de datos sin bloqueo como mauricio / postgresql-async.

Puede probar una aplicación Play con una herramienta de prueba de carga llamada Gatling: Gatling Project – Stress Tool

More Interesting

¿Cómo diseñaría un plan de 8 semanas para aprender sobre el desarrollo de aplicaciones web y / o móviles en línea?

¿Cuál es la diferencia entre un servicio web, API web y API REST? ¿Qué es mejor usar con todos los lenguajes como Java, PHP y aplicaciones móviles?

¿Cuánto costará hacer una aplicación como Snapdeal?

¿Cuáles son los costos del servidor para una aplicación o una red social que tiene 1-2 millones de visitas activas mensuales en más de 200 páginas? Además, ¿cuáles son los costos del servidor para 100,000 activos mensuales?

¿Hay proyectos comercialmente exitosos basados ​​en el contenido de Wikipedia (sitios web, aplicaciones móviles, etc.)?

¿Qué se necesita para crear una aplicación móvil de pizarra colaborativa?

¿Cuál es el mejor lenguaje de codificación para crear sitios web y aplicaciones de Android, si requiero cambios frecuentes en el diseño del sitio web y la aplicación?

¿Hay sitios o aplicaciones de alto tráfico que actualmente usan Neo4j?

¿Cuándo se necesita la versión móvil y tableta para cualquier sitio web?

¿Debería tener mi propia base de datos para mi aplicación web y aplicación móvil o debería usar un BaaS de terceros como Parse / Build Realtime Apps - Firebase?

Cómo comenzar a aprender Ubuntu y MySQL, comenzar a escribir mi primera aplicación, proveniente de un fondo de tecnologías de Microsoft

¿Cómo empezaste a construir tu perfil de Github?

¿Qué tan difícil es el desarrollo móvil en comparación con la web?

¿Hay alguna forma viable de ganar dinero en la industria de viajes?

Cómo asegurar una aplicación basada en el registro de un número de teléfono