¿Cuáles serían las ventajas de usar Node.js en lugar de Ruby on Rails?

Descargo de responsabilidad: nunca escribí una sola aplicación en Node. Lo que estoy publicando aquí son los hechos y la información que reuní al evaluar la viabilidad de Node para un proyecto reciente. Rails fue elegido al final.

Me gustaría comenzar citando la página oficial:

[…] El objetivo de Node es proporcionar una manera fácil de construir programas de red escalables […]
[…] Los fundamentos de los sistemas escalables son las redes rápidas y el diseño sin bloqueo […]

En primer lugar, el Nodo tal como es hoy no puede llamarse ‘Reemplazo de rieles’ porque resuelve un problema de desarrollo web más específico: los servicios basados ​​en web donde el rendimiento es una preocupación principal.
Rails, por otro lado, es una pila para crear aplicaciones web clásicas y maneja casi todo, desde la base de datos hasta el HTML y CSS que se muestra en la pantalla.

Si su proyecto es un sitio web clásico, todavía no puedo encontrar una razón decente para hacerlo con Node. Rails es ampliamente utilizado e implementado, es bastante maduro, toneladas de complementos y gemas para tareas comunes (por ejemplo: autenticación), increíble soporte de pruebas, etc.

El nodo comienza a tener sentido cuando tiene requisitos web en tiempo real (por ejemplo: un juego multijugador en línea, una aplicación de chat) donde tiene muchas pequeñas cosas que suceden y necesita que el cliente se actualice al instante.
Estas aplicaciones son naturalmente necesarias para poder manejar un número mucho mayor de conexiones simultáneas con el fin de enviar actualizaciones en tiempo real al lado del cliente

Node proporciona una infraestructura ‘lista para usar’ para abordar este tipo de problema con una cadena de herramientas completa sin bloqueo (bibliotecas, controladores de bases de datos, etc.).

Tenga en cuenta que no todas las aplicaciones se benefician de un enfoque basado en eventos. Usar Nodo en tales casos será como tratar de ajustar un círculo en un espacio cuadrado 🙂

Esta entrevista con Ryan Dahl sobre por qué creó el nodo puede darle una idea de por qué usarlo:
http://bostinnovation.com/2011/0…

Aquí están mis experiencias usando ambos de manera intensiva en 2011. Primero, estoy de acuerdo con lo que dijo Gustavo Barrancos, especialmente para las aplicaciones web clásicas, Rails es el camino a seguir y lo será por algún tiempo.

Ahora node.js tiene algunas ventajas distintivas sobre RoR que son difíciles de superar cuando todo lo demás es igual:

* Javascript / Coffeescript en el servidor y el cliente. Esto se ha intentado muchas veces y con node.js finalmente funciona. No tener que cambiar de idioma es un gran impulso de productividad. También le permite trabajar de extremo a extremo desde el cliente al almacén de datos con un único formato de datos nativo, json, y tratar al cliente y al servidor como una nube de actores siempre conectada (consulte hook.io).

* Velocidad de desarrollo: Node.js es significativamente más rápido que RoR cuando se trata del tiempo de inicio. Ejecutar pruebas en nuestras aplicaciones en node.js es de 20 a 50 veces más rápido que con Ruby on Rails y eso tiene un efecto significativo, incluso cuando se usan herramientas como guard y autotest en rails.
Esto probablemente se mitigará un poco con Ruby 1.9.3, pero dados los recursos que Google pone en V8, dudo que Ruby pueda ponerse al día aquí.

* La capacidad de aprender de los gigantes. Node.js es muy nuevo en comparación con RoR. Muchos desarrolladores de node.js han usado RoR antes y conocen tanto lo bueno como lo malo, y pueden construir sobre eso, lo que resulta en paquetes más fuertes para node.js.

* Vibrante comunidad de desarrolladores y ecosistema. A menos que viva en una isla, notó que 2011 es el año en que node.js despegó. Incluso Microsoft lo está apoyando (felicitaciones a ellos, sé lo difícil que es aceptarlo dado el origen de V8). Los principales VC invierten en empresas basadas en node.js.

* Nuevos escenarios de aplicación y distribución que no han sido posibles con Ruby / RoR debido a la gran huella. Para compañías como la mía que llevan a PaaS un paso más allá, node.js es una verdadera bendición, lo que hacemos no sería posible con ninguna otra plataforma.

* Estructura de aplicación más limpia porque node.js está enfocado en la forma de Unix. Los autores de Node.js, en gran medida, prefieren paquetes muy pequeños y centrados en una sola tarea (sí, hay excepciones, lo sé;). Esto, con el apoyo de NPM, el administrador de paquetes de nodos, hace que sea divertido y rápido crear módulos que se puedan combinar fácilmente en aplicaciones más grandes, de forma similar a cómo funciona la línea de comandos de Unix. Por supuesto, esto ha sido pionero de las gemas de Ruby, pero al considerar RoR solo, todavía tiene un marco bastante monolítico.

* Node.js PaaS hosting se está volviendo omnipresente.

* Nodo tiene tracción loca:

Fuente: http://nodejs-vs-ror.nodejitsu.com/ tomada el 25 de noviembre de 2011

3 horas despues: