¿Puede node.js reemplazar a Apache?

Soy un gran fanático de node, pero hay un par de cosas que debes tener en cuenta:

  • Nodo todavía es joven

Cuando los CTO de las principales empresas analizan la tecnología a utilizar, uno de los factores determinantes puede ser cuánto tiempo la tecnología ha estado en el campo. Si se le ha dado la tarea de decidir la tecnología para impulsar un proyecto multimillonario, ¿va a depositar toda su confianza en un proyecto que está despegando lentamente? ¿Puedes ir con confianza a tus compañeros con esa decisión?

Como Apache ha estado en el campo durante tanto tiempo, ha resuelto muchos problemas relacionados con la integración y la configuración. No puede hacer reescrituras de URL fácilmente fuera de la caja. La integración de PHP es mucho más difícil. Varias cosas buenas que tenemos que damos por sentado se eliminan repentinamente, y tenemos que hacerlo nosotros mismos o esperamos que haya un módulo npm para ello.

  • Node es más que solo un servidor web

Node es más un marco que soporta la configuración de un servidor web y la comunicación de socket asíncrono. Puede configurar clientes http, manipular gráficos, trabajar con el sistema de archivos, todo tipo de cosas geniales. Con eso en mente, es difícil saber qué puerto de nodo se mejorará más. ¿Continuará resolviendo más problemas relacionados con los servidores web o se convertirá en algo completamente diferente? Aunque para ser honesto, usar el nodo como servidor parece ser la tendencia general.

  • La comunidad de nodos aún necesita crecer

¿Tienes un problema con Apache? Hay un montón de lugares a los que puede acudir para obtener ayuda con una amplia variedad de problemas. Empresas de consultoría, foros, blogs, todos en gran volumen. Compare esto con la comunidad de nodo. Los paquetes npm siguen mejorando y se agregan continuamente, pero no está a la altura de la funcionalidad del servidor web que proporciona Apache.

La documentación también es muy deficiente. De alguien que lo usa literalmente todos los días, a menudo me encuentro teniendo que navegar hacia adelante y hacia atrás porque una función le dice que devuelve un Buffer, pero no se vincula a él. Algunas funciones suponen que ya has visto la lista de codificaciones disponibles en la parte superior. Entonces, los ejemplos son escasos en este momento para muchas de las funciones. De hecho, algunos ejemplos están referenciados por funciones mucho más abajo, lo que una vez más aumenta el problema de ida y vuelta.

Para resumir, no, no hará que Apache vaya a ningún lado pronto.

Sí, pero no fuera de la caja.

Apache es un servidor web de uso general. Fuera de la caja, sirve archivos estáticos del disco y guarda archivos de registro, y con módulos opcionales puede hacer mucho más (almacenamiento en caché, equilibrio de carga, gzipping, proxy, reescritura de URL, etc.)

Node.js es solo API de E / S asíncronas (incluido HTTP) para JavaScript. Para que incluso sirva un archivo desde el disco, necesita escribir un código. Dicho esto, toda la funcionalidad de Apache podría replicarse en un programa escrito para Node.

Habiendo desarrollado y usado aplicaciones que usan Node.JS, diría que no. Apache (o Lighttpd o Nginx) son en realidad un gran cumplido para Node.JS. Node es muy bueno para atender las solicitudes asincrónicas y permitir que se ejecute el código de su aplicación. Donde está limitado es servir archivos estáticos y proporcionar entornos multiinquilino. Por lo general, en mis configuraciones usamos un proxy inverso al Nodo front-end para almacenar en caché y servir archivos estáticos (CSS, JS, Imágenes, etc.). En realidad, esto funciona muy bien, ya que nos permite ejecutar múltiples instancias de Nodo optimizadas de manera diferente y ser perfecta para los usuarios finales.

Por lo tanto, no, Node no reemplazará (en su forma actual) Apache o cualquier otro servidor web, pero los complementará o complementará.