¿Debo desarrollar mi aplicación web en Node.js o Ruby on Rails?

Tanto Ruby como Node.js serían opciones adecuadas. Node.js es menos maduro que la comunidad Ruby, pero estoy seguro de que Node.js tiene algunas bibliotecas ahora que ayudan a construir este tipo de características. Ruby ya tiene muchas bibliotecas maduras disponibles para manejar este tipo de características. Como Mike mencionó, el costo del tiempo de desarrollo es algo importante en lo que centrarse. Si bien Node.js puede ser más eficiente que Ruby en ciertas tareas, el costo de los recursos informáticos adicionales es insignificante. Un desarrollador experto de Ruby probablemente costará más que un desarrollador de Node.js, pero probablemente completará el trabajo en menos tiempo. Node.js está creciendo en popularidad porque mucha gente ya conoce JavaScript. Sin embargo, alguien que conozca “JavaScript del navegador” no necesariamente sabrá cómo trabajar con Node.js. El tamaño del grupo de talentos probablemente será similar.

Personalmente, iría con Ruby. En mi experiencia, las personas que conocen y trabajan con Ruby son de mayor calibre que los desarrolladores de Node.js o PHP. Tengo más confianza en que un desarrollador de Ruby haría el mejor uso del tiempo ya que la productividad está tan arraigada en la cultura.

Además, he escuchado cosas buenas sobre Toptal para encontrar y contratar desarrolladores independientes.

Además, Heroku ciertamente no es la opción más barata cuando se trata de alojamiento. Hay opciones más baratas disponibles. Sin embargo, una vez más, el costo del tiempo de configuración de Heroku es realmente bajo, ya que puede hacer la mayor parte haciendo clic en el sitio web. Una vez que llegue a un punto de crecimiento en el que el costo de la infraestructura sea un problema y tenga suficientes ingresos para invertir en mejorarlo, es probable que rediseñe su infraestructura para que se ejecute en instancias de computación en la nube “desnudas” (como Amazon EC2, por ejemplo) .

Creo que Mike Olson tiene algunas buenas ideas, y definitivamente deberías leer su respuesta antes de continuar con la mía. Ahora, en aras de la discusión, supongamos que ha validado sus suposiciones y solo necesita respuestas que se ajusten a su escenario descrito.

¿Cuál es más rápido de escribir y completar?

Contrata a trabajadores independientes y encuentra trabajos independientes en línea: obtén presupuestos para tu aplicación. Apuesto a que la propuesta más barata será de un desarrollador de Rails.
Editar: (Andrew Havens sugirió http://Toptal.com como alternativa)

¿Ir con el nodo ahorrará recursos del servidor para que pueda tener más usuarios en menos servidores?

La escalabilidad es un problema más complicado que determinar cuántos usuarios espera. ¿Qué harán los usuarios? ¿Qué harán tus trabajadores? ¿Qué base de datos? Dependiendo del contexto, puede que ni siquiera sea un problema que deba resolver en este momento. Deje que PaaS haga lo suyo y escale por usted. Hasta que llegue a las restricciones, girar algunos dinamómetros adicionales probablemente sea más barato que contratar a un ingeniero devops.

tl; dr
Ya sea. Perdón por la falta de respuesta.

Cuando tomé este tipo de decisión en el pasado, los criterios no técnicos superaron con creces los técnicos. Hay varios idiomas modernos que son adecuados para el producto que ha descrito. Pero si está tomando la decisión técnica en lugar de dejar que su equipo técnico elija la herramienta adecuada para el trabajo (una vez que tengan todos los detalles), entonces debe pensar a largo plazo.

¿Cuán escalable necesita que sea la aplicación? ¿Cuántas características adicionales agregará en el futuro? ¿Cuántos desarrolladores esperas contratar en el futuro (considerando también la cancelación)? ¿Necesitará ayuda externa para acelerar el desarrollo? ¿Es esta versión un prototipo que puede descartarse en algún momento en el futuro cuando comprenda mejor el mercado?

Hago estas preguntas porque, en muchos casos, el recurso más limitado (o el más costoso) es el tiempo que un ser humano pasa en algo. Preguntó acerca de “cuál es más rápido de escribir y completar” porque comprende que un desarrollador cuesta mucho más que el hardware del servidor. Además, puede llevar varios meses (o más) encontrar y contratar a un desarrollador decente, y unos meses más antes de que sean productivos al unirse a un proyecto existente. ¿Cuál es el conjunto de habilidades de su grupo de trabajo local? Sugiero que esto es mucho más importante para su decisión que si NodeJS es un orden de magnitud más rápido en tiempo de ejecución que Ruby.

Además, si realmente planea escalar tan rápido como sugiere, le sugiero que reevalúe la noción de que no tendrá que preocuparse por los servidores. Las soluciones de alojamiento de aplicaciones reclaman escalabilidad horizontal, pero su aplicación estará vinculada a un único back-end de base de datos, que de todos modos tiende a ser el cuello de botella. Necesitará a su desarrollador para planificar la escalabilidad y diseñar el producto en consecuencia.

Solo puedo decir por la experiencia de la empresa en la que trabajo. Hacemos aplicaciones con Ruby on Rails. Los detalles sobre el desarrollo de Ruby on Rails se pueden encontrar en el artículo de mi blog Desarrollo de aplicaciones web de Ruby on Rails

Elegimos el marco RoR debido a muchos factores. Pero el más importante de ellos lo mencioné en el sub-artículo de la guía de desarrollo de aplicaciones web llamado “Por qué Ruby on Rails es ideal para el desarrollo de aplicaciones web”:

  1. Con Rails puedes automatizar muchas tareas
  2. Escribir desde cero con Ruby on Rails puede brindarle un conjunto de convenciones que alentarían una mejor arquitectura
  3. Debido a una base de código más ágil, un diseño modular y el uso de complementos existentes, la aplicación web Ruby on Rails se puede iniciar dos veces más rápido
  4. Los usuarios de Rails no necesitan saber expresiones regulares para definir rutas
  5. Muchas bibliotecas de Rails compatibles lo ayudan con cualquier aplicación web que cree
  6. Los rieles fomentan las buenas prácticas de codificación con conjuntos de pruebas, herramientas para analizar su código. El marco está desarrollado para priorizar las pruebas para que su proceso de desarrollo sea aún más fácil.
  7. RoR es excepcionalmente fácil de implementar y administrar de forma remota

Contrata un programador Javascript

  • Raspar la web con un servidor creado como NodeJS es mucho más eficiente que usar Ruby, donde el proceso tiene que esperar cuando se solicitan páginas web para desechar.
  • Puedes heroku para escalar. Funciona bien con nodo y rubí
  • Para informar / enviar correos electrónicos, tanto ruby ​​como node funcionan bien

Entonces, mi sugerencia sería elegir NodeJS, por lo tanto, contratar a un desarrollador de JS

Depende de algunos requisitos (principalmente) no funcionales de su proyecto.
¿Te preocupa el rendimiento y el escalado? Use node.js
¿Estás tratando de crear un prototipo rápido de una idea para un sitio web y llegar rápidamente al mercado? Usa Ruby on Rails

Además, depende de cuáles sean sus capacidades como desarrollador (de lo contrario, deberá aprender una nueva pila completa). ¿Eres competente como desarrollador de Javascript (quiero decir, no solo “jQuery”) ?: usa node.js para backend y frontend

Además, tendrá en cuenta una diferencia muy importante al comparar “Ruby on Rails” y “node.js”. Ruby on Rails es un marco completo de pila completa para desarrollar un sitio web dinámico, mientras que node.js es solo el motor V8 javascript (el mismo que se usa en el navegador google chrome) incrustado como un comando del sistema + alguna API de nivel del sistema (archivos, redes, etc.)

Asumiré que obtendría las libs / herramientas necesarias para completar la pila de desarrollo en el caso del nodo, estas podrían ser (opinión personal): Strongloop para administración de backend / datos, incluidos servicios REST, Angular.js para hacer desarrollo frontend, bower y gruñido para automatizar las tareas del proyecto (minify, implementaciones, configuración, recarga automática en el desarrollo, etc.)

Recuerde también que la diferencia entre “nodo” (+ fullstack) y RoR no es solo el lenguaje, sino también la arquitectura obstinada. Node está orientado principalmente a hacer microservicios y clúster a favor del rendimiento / escala y RoR está orientado principalmente a aplicaciones web monolíticas del lado del servidor diseñadas para un desarrollo divertido, rápido y fácil mantenimiento