¿Cuáles son las desventajas de desarrollar una aplicación web usando Node.js en lugar de Python?

Permítanme presentar esto con la razón más importante por la que debería elegir a favor o en contra de algo: su comodidad personal con el lenguaje y los marcos disponibles. El objetivo de Node.js, Django, Tornado, CodeIgniter, CakePHP o lo que sea es ser productivo. Node.js puede ser adecuado para usted, puede que no. La forma más fácil de averiguarlo es intentar utilizarlo para un proyecto. Pensé que era genial cuando me zambullí por primera vez y después de intentar realmente lograr algo con eso, determiné que era más fácil para mí volver a usar Python Tornado. Eso no se debe a que Python y Tornado sean mejores que Javascript y Node.js, sino porque pude lograr lo que quería lograr en menos tiempo.

Ahora aquí hay algunos elementos en los que pensar al considerar Node.js.

– la programación del lado del servidor y la programación del navegador no son lo mismo. Hay diferentes desafíos que enfrenta. Un beneficio anunciado para node.js es poder usar javascript tanto como el front-end y el back-end. Eso es un beneficio, pero debe comprender que las metodologías de programación no son lo mismo.

– Node.js es nuevo. Por lo tanto, no hay muchos marcos disponibles. La distribución legítimamente evita construir marcos en ella, pero eso significa que usted está solo para encontrar y usar uno. Lo que descubrí cuando hice un intento serio de usar Node.js fue que los marcos que estaban disponibles en ese momento parecían querer modelar después de RoR, en lo que no tenía experiencia, por lo que había más de una curva de aprendizaje involucrada.

– Ha surgido el problema de que V8 limita la cantidad de memoria disponible para ejecutar, ¿creo que ahora es 1.9GB? Muchos modelos de programación incluso controlados se ejecutan en un solo núcleo, por lo que puede escalar horizontalmente balanceando la carga en varias instancias en la misma máquina, cada una utilizando un solo núcleo. Sin embargo, cuando usa otros idiomas no tiene ningún tipo de límite de memoria. El punto en el que esto se convierte en un problema es probablemente una carga más alta que muchas aplicaciones nuevas, pero imagino que bajo una carga extrema esto podría convertirse en una pared de ladrillos. Como administrador de sistemas, diría que solo necesita equilibrar mejor los núcleos y la memoria en el hardware físico. Virtualizaiton también podría ayudar aquí. No es un problema insuperable en absoluto, solo uno que podría requerir pensamiento. Me prepararía desde el principio en lugar de esperar a que se convierta en un problema más tarde. Entender cómo escalar su aplicación antes de tener que escalarla es una buena práctica de todos modos.

Al leer el otro lado de esta pregunta, todas las respuestas básicamente se redujeron a: “Es asíncrono, y es genial”. Excepto, por supuesto, la respuesta que menciona V8. Todos dicen lo mismo. Async es genial. Muy superior. etc.

Pero si eso fuera cierto, ¿por qué no estamos todos programando en marcos de eventos todo el tiempo? Podríamos hacerlo, tal vez no con la velocidad V8, pero ciertamente, ¡los bucles de eventos no son una ciencia nueva! ¿Por qué, en general, hemos ignorado este paradigma o, mejor dicho, no hemos acudido a él? ¡Ciertamente funciona bien para solicitudes HTTP, Zeus Web Server, Nginx, Tornado y otros! ¡Las bibliotecas para hacerlo han estado fuera para siempre!

Sin embargo:

Después de calmarse, debe escribir, depurar y mantener ese código. Esto es algo menos que divertido, especialmente si eres nuevo en él.

Es por eso que tendemos a no codificar mucho Twisted, por ejemplo, que es una pila excelente. Brillante de hecho.

También podríamos usar Tornado, supongo que una rueda reinventada rodaría de la misma manera, pero ¿código basado en devolución de llamada con funciones anónimas? ¿Todo el dia? ¿Todos los días? Hmm

El tipo de trabajo también importa.

“Nada es más peligroso que un programador que no sabe lo que él
no sabe Los bucles de eventos funcionan bien si su servidor está fuertemente vinculado a E / S,
mientras que si el servidor necesita hacer un trabajo de CPU no trivial, puede ser
mejor con hilos “.

( http://teddziuba.com/2010/09/pro …)

Sospecho que muchas instalaciones de nodos se ejecutan en VPS, que tienden a estar vinculadas a E / S.

El paso de mensajes y múltiples núcleos / procesadores con nodo puede ser problemático. Javascript está diseñado para trabajar en un solo proceso.
http://dosync.posterous.com/cloj… .

Finalmente, usar “el mismo lenguaje, front-end y backend” presupone que el lenguaje utilizado en el front-end también es la mejor herramienta para usar en el back-end. Python tiene una biblioteca estándar, que no fue escrita este verano. Se trata de interactuar con la máquina, entre otras cosas.

Descargo de responsabilidad: me gusta la idea de Node.js. Me gustaría usarlo si no es por otra razón que acelerar la desaparición de PHP (¿por qué usar PHP si tiene Node?)