Node JS vs PHP: Comparaciones, CMS, beneficios y tiempos de respuesta

php-vs-node

Desde hace algún tiempo atrás, estoy viendo que en muchas empresas tecnológicas se implementa la tecnología Node JS. Sinceramente considero que es una apuesta a futuro y una muy buena práctica. Pero, me llama mucho la atención cuando pregunto: ¿por qué debemos implementar Node JS?… y en la mayoría de casos las respuestas son: Paypal y Netflix hacen uso de ello, también LinkedIn y eBay entre otras.

Veamos, claro queda que Node JS es una muy buena opción para algunos desarrollos y es una tecnología del momento. Con tecnología del momento quiero decir que a pesar de haber sido lanzada en el año 2009, hoy en día es una de las preferidas por los técnicos y a su vez por las empresas. Si empresas tan sonadas como Paypal, Netflix, LinkedIn, eBay, etc hacen uso de ello, ya partimos con una razón de peso. Pero antes de implementar una nueva tecnología en nuestra empresa, debemos preguntarnos dos cosas: ¿Es realmente necesario? y ¿qué ventajas vamos a obtener por ello?

En la entrada de hoy y siendo esta la primera entrada creada en la nueva categoría de Node JS de mi blog, voy a intentar orientaros de cuando es realmente una ventaja hacer uso de Node JS. A su vez, crearé una serie de puntos explicativos acerca de Node JS y realizaré comparativas sobre el lenguaje más utilizado hasta el momento: PHP.

En cuanto a explicaciones sobre PHP poco entraremos en detalle ya que es un lenguaje de programación muy rodado y casi todos sabemos más o menos acerca de él.

¿Qué es Node JS?


Node.js es un entorno de tiempo de ejecución. Exactamente es código abierto de JavaScript para la creación de aplicaciones de red. Permite a los desarrolladores ejecutar el código en el lado del servidor. Por lo tanto, Node.js es una forma ligera, escalable y rápida de escribir scripts.

Node.js está principalmente en uso para crear aplicaciones web en tiempo real. Sin embargo, el desarrollo de aplicaciones móviles también es posible, gracias a todo el ecosistema de Node.js. Y su gestor de paquetes – NPM, en particular.

¿Qué NO es Node JS?

A pesar de que Node es un programa de servidor, cabe destacar que no tiene nada que ver con Apache o Tomcat. Estos mismos, son instalados en servidores para implementar aplicaciones instantáneamente. Y en realidad, podemos tener listo y operativo un servidor web en pocos minutos para poder hacer uso de él.

Apache puede agregar un módulo PHP para permitir a los desarrolladores crear páginas Web dinámicas, y un módulo SSL para conexiones seguras. Node JS también dispone del mismo concepto de módulos que se pueden agregar a su núcleo, pero… Node definitivamente no es Apache.

Quiero decir de una forma atrevida, que un gran número de personas están confundidas o tienen falta de información acerca de lo que es y no es Node JS. Ellas están, y es comprensible, pensando en modo Apache  (un servidor es una aplicación en la que usted descarga sus archivos HTML y todo funciona) y realmente esto no es así.

Sigamos concretando más acerca de Node JS.

¿Cuándo debemos aplicar Node JS?

El principal objetivo de este entorno de trabajo, es poder desarrollar programas de red escalables y por supuesto peticiones multi-hilo.

Tengamos en cuenta que con lenguajes como PHP, cada conexión genera un nuevo hilo que potencialmente viene acompañado de 2 MB de memoria. En un sistema que tiene 4 GB de RAM, esto da un número máximo teórico de conexiones concurrentes de cerca de 2.000 usuarios. Llegado el caso en que nuestra aplicación obtuviera un mayor número de conexiones simultáneas, el servidor se colapsaría y mostraría un error 500.
En este momento la única solución a la que se podría optar para poder manejar un número mayor de conexiones, sería ampliar RAM y por lo tanto, un coste mayor económicamente hablando.

Node JS resuelve este problema cambiando la forma en que se realiza una conexión con el servidor. En lugar de generar un nuevo hilo de OS para cada conexión y de asignarle la memoria correspondiente, cada conexión dispara una ejecución de evento dentro del proceso del motor de Node JS.

Con Node JS también podemos tener en cuenta que no se quedará nunca la aplicación en punto muerto, recordemos que los bloqueos están descartados. Además, Node JS nos asegura poder realizar decenas de miles de conexiones concurrentes y esto es un dato muy a tener en cuenta.

Como hemos podido ver hasta el momento, Node Js es muy bueno para sitios donde esperamos una gran cantidad de tráfico y donde la lógica del lado del servidor y el procesamiento requeridos, no sean necesariamente grandes antes de responder al cliente.

Resumiendo: Node JS debe ser utilizado para crear micro-servicios y aplicaciones RESTful. Vamos a detallar algunos puntos:

API RESTful con Node JS.

Pongamos el hipotético caso de proyecto donde recibimos una petición con una serie de parámetros, realizamos una consulta a la base de datos, obtenemos un resultado, y este es devuelto como respuesta JSON. Esto sería un escenario ideal donde poder sacar una ventaja increíble a Node Js. Recordemos que Node Js es capaz de tratar multitud de peticiones de forma asíncrona sin llegar a sobrecargar el servidor.

Cola de peticiones.

Pensemos en una aplicación como Whatsapp donde la cola de mensajes es infinita (somos muchos los usuarios que hacemos uso de esta aplicación). Si gestionamos los mensajes uno a uno de forma síncrona, tengamos por seguro que tendríamos un lag (retardo en la entrega) increíblemente alto. Si esto lo gestionamos con Node Js podemos procesar miles de mensajes al mismo tiempo, y es aquí donde obtenemos un gran beneficio de su uso.

Estadísticas.

Otro fuerte donde podemos explotar al máximo Node Js es a nivel estadístico, si tenemos que generar informes de forma recurrente y a tiempo real, consultando muchas tablas en base de datos, deberíamos plantearnos hacerlo con Node JS. Gracias a ello, el consumo de recursos sería infinitamente menor.

Tabla comparativa entre Node JS y PHP.

Conociendo ahora las ventajas que nos ofrece Node JS y a su vez, por experiencia propia todo lo que ya se puede hacer con PHP, vamos a ver una tabla comparativa entre ambos.

¿Qué beneficios tenemos en PHP sobre Node JS?

Algunos desarrolladores dicen que PHP es mucho más fácil de usar que Node.js. Sus argumentos son:

  • Es más fácil configurar el entorno de desarrollo para PHP.
  • Node.js requiere más código.
  • Para poder programar en Node.js, se debe comprender las funciones de devolución de llamada y los bloqueos.
  • Todos los servicios de alojamiento de internet soportan PHP.
  • Soporta más frameworks y CMS.
  • Código oficial de recomendaciones de organización (PSR).
  • PHP tiene una biblioteca más grande de instrucciones y preguntas frecuentes (hubo suficiente en 20 años)
    La comunidad de desarrolladores de PHP es un grupo masivo y diverso de personas, están constantemente revisando y actualizando bibliotecas, marcos y otros componentes de PHP.

¿Cuándo deberíamos hacer uso de PHP para nuestro proyecto?

Siempre y cuando queramos hacer uso de las tecnologías de CMS como WordPress, Drupal, Joomla, etc. ya que están creadas bajo PHP. Incluso si desarrollamos un proyecto a medida y este dispone de alguna sección que incluya por ejemplo: blog, página de administración, tienda en línea, etc.

También es recomendable hacer uso de PHP si se está trabajando sobre una base de datos relacional. Resumiendo, PHP es compatible con los siguientes sistemas de administración de bases de datos:

  • MySQL / MySQLi
  • SQLite
  • PostgreSQL
  • Oracle (OCI8)
  • Microsoft SQL Server
  • Sybase
  • ODBC
  • mSQL
  • IBM DB2
  • Cloudspace
  • Apache Derby
  • Informix
  • Ovrimos SQL
  • Lotus Notes
  • DB++
  • DBM
  • dBase
  • DBX
  • FrontBase
  • filePro
  • Ingres II
  • SESAM
  • Firebird/InterBase
  • Paradox File Access
  • MaxDB
  • PDO

¿Cuándo deberíamos hacer uso de Node JS para nuestro proyecto?

Una de las principales ventajas de NodeJS es el soporte de sub-procesos múltiples como hemos estado comentando a lo largo del artículo de hoy. Si bien es una necesidad en los navegadores, no es tan necesario en el proceso de desarrollo web. Muchos desarrolladores eligen Node.js sobre PHP en los siguientes casos:

  • Tiene soporte de servidor incorporado.
  • Una sola sintaxis para el lado del cliente y del servidor del sitio web. Esto mejora la reutilización del código y facilita el trabajo de un desarrollador fullstack.
  • Módulo de almacenamiento en caché: los módulos se descargan y se inicializan cuando se les llama por primera vez, luego están constantemente disponibles.
  • El módulo Stream facilita el trabajo con archivos grandes.
  • Node tiene una sintaxis casi idéntica a JavaScript, por lo que es fácil de aprender y aprender para los desarrolladores de JS.

Tabla comparativa de tecnologías soportadas por Node JS y PHP.

Benchmark: control de rendimiento de Node JS 6.11.2 vs PHP 7.0.x.

A continuación voy a mostrar unos resultados de rendimiento que he obtenido de una página web donde estuve profundizando y obteniendo información al respecto.
Los tests han sido realizados con una máquina con los siguientes componentes:

  • VDS
  • CPU – 1 core, 2GHz
  • RAM – 1GB RAM
  • Storage – 10GB SSD
  • OS – Debian 8.6
  • PHP 7.0.22 FPM
  • Node.js 6.11.2

Resultados PHP (Primer test).

php vs nodejs first test php

Resultados Node JS (Primer test).

php vs nodejs first test nodejs

Conclusiones del primer test.

Como puedes ver, PHP es más rápido que Node.js en:

  • Concatenacion de cuerdas.
  • Matriz de relleno.
  • Matriz asociativa de relleno.
  • Leyendo el archivo.
  • Consulta de MySQL.

Node.js es más rápido que PHP solo al agregar números.

Resultados PHP (Segundo test).

php vs nodejs second test nodejs

Resultados Node JS (Segundo test).

php vs nodejs second test php

Conclusiones del segundo test.

Para este segundo test, fueron lanzadas 1000 consultas en 1000 hilos. Toda la configuración se realizó en el lado del servidor. Nginx 11.7 + PHP 7.1.1 FPM vs Node.js.

Y los resultados de este segundo test vuelven a estar a favor de PHP:

  • PHP + Nginx – 32 ms
  • NodeJS – 200 ms

Resumen y conclusión final.

PHP ha ganado en casi todas las comparativas que se realizaron en el ejercicio anterior, a esto debemos sumarle que PHP es más popular, su aprendizaje es más sencillo y dispone de una mayor comunidad de desarrolladores dispuestos a colaborar y a aportar conocimientos. Y la mayoría de veces gratuitamente.

Por otro lado, Node JS es óptimo para trabajar los servicios web multi-hilo por un consumo menor de recursos en el lado servidor.

Y hasta aquí la entrada de hoy, como siempre digo: espero que te haya gustado y haya sido de utilidad.


Summary
Article Name
Node JS vs PHP: Comparaciones, CMS, beneficios y tiempos de respuesta
Description
Comparaciones entre el lenguaje PHP y el seudo-lenguaje Node JS. Análisis de tiempos de respuesta.
Author

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Responsable de los datos: Luis María Jordán Muñoz | Finalidad: Responder a la solicitud que me envíes y ofrecerte información | Legitimación: Tu consentimiento de forma expresa | Destinatario: Webempresa mi proveedor de hosting | Derechos: Tienes derecho al acceso, rectificación, supresión, limitación, portabilidad y olvido, para más información, te dejo enlace a mi política de privacidad ... enlace