¿Por qué un equipo de desarrollo debería elegir Node.js para aplicaciones web? ¿Es cierta clase de aplicaciones realmente más fácil para desarrolladores expertos con Node.js?

Esta no es una pregunta trivial, así que creo que merece una respuesta articulada. Pocos puntos ya se han expresado en otras respuestas, pero creo que enumerarlos todos puede ayudar a aclarar:

1) rápido y fácil de crear prototipos: hace que sea extremadamente fácil crear prototipos (casi) cualquier tipo de aplicación web en un tiempo más corto en comparación con otros como, por ejemplo, JAVA y LAMP. Solo por mencionar algunos de los ahorros en tiempo: node.js proporciona el módulo del servidor web en sí mismo, por lo que no tiene que tener conocimiento sobre la configuración de Apache o NGINX a menos que desee integrarse en la plataforma existente o tenga un sistema complejo arquitectura, y la comunidad muy activa de node.js proporciona módulos listos para usar y un conocimiento profundo que puede ahorrarle tiempo cuando se trata de desarrollar funciones básicas (Facebook-Connect, RESTful API, plantillas)
2) npm: es EL administrador de paquetes de nodos, representa la forma estándar de compartir código con la comunidad y administrar dependencias externas. Tiene solo 2 años y el número de módulos presentes ha superado (casi) el número de módulos publicados en gemas RoR. El uso de módulos comunitarios como express, socket.io, mongoose, mocha, everyauth, solo por mencionar algunos de ellos, le proporciona una poderosa caja de herramientas para construir una aplicación en ejecución “equivalente a LAMP” en cuestión de horas. Gestiona todas las dependencias anidadas para usted, por lo que puede concentrarse en cuál es la lógica de su aplicación CORE en lugar de perder tiempo desarrollando características básicas que la comunidad mantiene de manera colaborativa y efectiva para usted. La sencilla sintaxis del archivo de configuración también le permite fijar un módulo a una versión específica para que no tenga que preocuparse por futuras actualizaciones que rompan su software.
3) plataforma en la nube: hay una serie de soluciones de Plataforma como servicio como Joyent cloud, heroku, nodejitsu que identifican el nodo como tecnología de primera clase y hacen que la implementación y la escala de su aplicación sean triviales. Otros servicios similares como Pagoda también le permiten desarrollar aplicaciones PHP + MySQL fácilmente, pero en este momento hay más opciones y un mejor soporte para tecnologías de nodos en la nube en mi humilde opinión.
4) mongoDB y Redis: generalmente un proyecto node.js va de la mano con una solución NoSQL. MongoDB y Redis son tecnologías complementarias que están muy bien integradas con node.js. Si está haciendo un proyecto sin una base de datos relacional, node.js es definitivamente un buen candidato.
5) javascript y coffescript: el hecho de que Javascript sea el idioma del navegador hizo necesario que todos los desarrolladores web lo manejen . Esto significa que casi todos los desarrolladores pueden leer Javascript, y encuentro que cada vez más personas son capaces de escribir aplicaciones JavaScript de cliente sólidas, sólidas y sólidas. Tener node.js en el back-end trae otro tipo de problemas como arquitectura en capas, diseño de modelo de dominio, MVC y el uso correcto de patrones de diseño que los desarrolladores suelen usar para resolver usando otros lenguajes como PHP, JAVA, Python, RoR, pero coffescript constituye un Lenguaje de traducción de brecha de puente válido entre la herencia clásica de OO y prototipos como JavaScript, lo que ayuda a no conocer a los nuevos desarrolladores de node.js redescubiertos para evitar errores tontos y filtrar la parte mala de JavaScript
6) arquitectura: la arquitectura node.js le ayuda a superar los problemas de rendimiento y escalabilidad gracias a su interacción sin bloqueo. Metafóricamente, alguien en la conferencia en línea de Nodestack comparó Apache como una pizza cuando tienes que esperar a que se cocinen las pizzas existentes antes de poner más y node.js a un malabarista que permite manejar las solicitudes en el aire mientras se sirve. La nueva venida. Esta arquitectura particular que, de manera similar a NGINX, aprovecha directamente las llamadas al sistema de eventos del sistema operativo abre el desarrollo de todas esas aplicaciones de software en tiempo real que no se pueden desarrollar fácilmente con otros idiomas.
7) costos: gracias a su alto rendimiento, puede evitar costos por hardware adicional. Logré alcanzar 5000 respuestas por segundo en mi computadora portátil (midiendo con ab -n 100000 -c una aplicación exprés). Teóricamente, también ahorra tiempo en la administración del sistema (a menos que tenga una arquitectura compleja), ya que no es necesario conectar las solicitudes HTTP o TCP a otro lenguaje del lado del servidor. Por lo tanto, evita los costos de instalación y mantenimiento de Apache o NGINX.

Todavía hay una rama de aplicaciones web que no recomendaría que se desarrolle usando node.js, aunque la comunidad está creciendo tan rápido que no me sorprendería ver que node.js se usa muy pronto en el centro de sistemas transaccionales complejos. Lo más probable es que necesite un entorno de espacio aislado donde la separación del espacio de memoria para cada solicitud es crítica para el negocio y no puede permitirse una situación en la que una sola excepción derribe el servidor node.js es subóptimo.

Creo que construir una startup usando Node.js le permite mantenerse más delgado:

1) entrega más rápida : Node.js ayuda a entregar un prototipo temprano debido a múltiples ahorradores de tiempo:

  • compartir código de modelo y pruebas entre el cliente (por ejemplo, el navegador) y el servidor,
  • sin desajustes entre el backend y el frontend en términos de comunicación (JSON en todas partes),
  • omitiendo la configuración de Apache o NGINX,
  • y otra

2) pivote más rápido : nuestras experiencias muestran que la introducción de cambios sustanciales en una aplicación, como resultado de un cambio en el modelo de negocios, fue más fácil cuando el modelo de aplicación se basa en el modelo basado en eventos de Node.js en lugar de un MVC clásico

3) escalado más fácil : el beneficio de Node.js es que es simplemente MÁS fácil de escalar que otras tecnologías. Lo que significa que está listo para la báscula recién listo: no tiene que hacer la magia para comenzar a manejar la báscula.

Para obtener más información, aquí está el artículo completo: ¿Por qué amamos a Node.js (y usted también debería hacerlo) – Blog Brainhub.eu

Elegiría Node.js para aplicaciones que pueden recibir muchas solicitudes simultáneas de usuarios, como por ejemplo sistemas de chat.

Node.js ejecuta todas las operaciones de E / S de forma asincrónica. Esto significa que no hace que su programa espere la finalización de una operación de E / S, como acceder a un archivo, una base de datos, una conexión de red, etc.

Esto significa que un solo subproceso puede gestionar la ejecución de muchas tareas de E / S paralelas, lo que hace un uso más eficiente de los recursos de CPU y memoria. Eso lo hace ideal para manejar las solicitudes de muchos usuarios simultáneos en una sola máquina.