Programación PHP vs. Programación Node.JS

publicado en: Desarrollo web | 22

php-vs-nodejs

 

Tanto PHP como Node.JS funcionan del lado servidor y son opciones viables para el desarrollo de de sitios y aplicaciones web; aún así, conviene analizar profundamente cada proyecto en particular y optar por el más conveniente para ese proyecto (no hay que dejarse llevar por el impuso de usar algo solo porque nos gustó lo que leímos en algún foro) ya que, si bien ambos son buenos opciones, tienen diferencias muy importantes que los hacen mejores para determinado caso.


¿Qué es … ?

PHP

PHP_Logo

PHP es un lenguaje de programación de uso general, open source, que funciona del lado de servidor. Originalmente diseñado para producir páginas web dinámicas, fue uno de los primeros lenguajes del lado de servidor que pueden ser embebidos dentro de HTML. El código PHP en un archivo tipo script que, al ser solicitado, es interpretado por un servidor web (generalmente Apache con un módulo procesador de PHP), el cual genera el contenido e imágenes dinámicamente. PHP puede ser desplegado en la mayoría de los sistemas operativos, servidores web y plataformas.

Node.JS

nodejs-logo

Node.js es un framework, open source, que funciona del lado del servidor. Por lo tanto, permite que el servidor y las aplicaciones de escritorio se comuniquen por medio de Javascript. En contraste con el uso convencional de Javascript, las aplicaciones con Node.js se ejecutan más rápidamente porque no necesitan de un compilador que interprete el código. De este modo, las aplicaciones creadas con Node.js necesitan menos recursos, funcionan más rápido y por lo tanto ofrecen mejor rendimiento que los servidores tradicionales.

 

Cabe aclarar que son compatibles entre si y se podrían utilizar en conjunto (aunque recomiendo analizar bien si esto se justifica)

[sociallocker]

Madurez y recursos humanos

PHP es un lenguaje muy maduro que cuenta con una gigantesca comunidad de programadores y desarrolladores experimentados (mayor oferta implica mejores precios y más opciones a la hora de contratar).

Además, la comunidad de programadores PHP es muy generosa, la gente se ayuda mutuamente sin esperar nada a cambio y siempre hay tutoriales, artículos y soluciones a la disposición de cualquiera.

Node.JS no es tan nuevo como muchos piensan pero su comunidad aún no es tan grande como la de PHP. Lo negativo de una comunidad pequeña es que muchos desarrolladores geniales intentan mantenerse cierta exclusividad y la mayoría de ellos se reserva ciertos conocimientos para ellos mismos (menor oferta implica precios más altos y muy pocas opciones a la hora de contratar)

Escalabilidad y rendimiento

PHP corre sobre un servidor (Apache, Nginx u otros), donde cada conexión consume una pequeña parte de los recursos del servidor.

Esto es es algo muy positivo porque significa que cada conexión es independiente del resto y, lo que un usuario hace, no afecta al resto (si un usuario realiza una tarea muy complicada, el sistema se pondrá lento solo para él).

El problema inicia cuando la aplicación tiene cientos o miles de usuarios recurrentes que consumen todos los recursos del servidor… y, finalmente, el servidor completo colapsa al quedarse sin recursos.

Lo positivo es que la optimización de rendimiento y escalabilidad se pueden dejar para una etapa futura pero, obviamente que, sin descuidarlos desde el inicio.

Node.JS cuenta con su propio servidor y mantiene una única instancia del mismo, esto significa un uso mucho más eficiente de los recursos y una respuesta mucho más rápida a conexiones simultaneas… pero, no todo lo que brilla es oro, porque si un usuario ejecuta alguna tarea muy complicada puede provocar lentitud en todo el servidor y, por consecuencia, a todos los demás usuarios.

Lo ( negativo o positivo según el caso) de esto es que la optimización de rendimiento y escalabilidad se realizan desde etapas tempranas del proyecto, dando como resultado un sistema más eficiente y evitando cualquier futuro refactor de código innecesario por un descuido al inicio del proyecto.

 

Además, a lo mencionado anteriormente, hay que añadir que programar en Node.JS requiere ser conscientes y estar constantemente pendientes de que cada función debe ser muy eficiente, de modo que si hay usuarios recurrentes trabajando, no noten lentitud… pero, en PHP, Apache resuelve esto automáticamente ya que cada llamada a PHP inicia una instancia del servidor, la cual resuelve la tarea sin afectar al resto y cuando termina la tarea, devuelve los resultados y libera los recursos.

Debuging

Node.JS es completamente asincrónico, todo lo que se ejecuta en el servidor y en simultaneo.

Es decir, cuando se dispara un proceso, el proceso se ejecuta y luego dispara en evento de fin para avisar a la aplicación que ya termino.

Mientras el proceso “A” se ejecuta, otros procesos son disparados y comienzan a ejecutarse e, incluso, pueden terminar antes de que se termine el proceso “A”.

Esto hace que debugear errores en Node.JS sea un poco complicado, especialmente cuando son cuestiones de performance.

Conclusión

La programación PHP se basa en el lenguaje PHP mientras que Node.JS es un entorno de ejecución y una librería.

Node.JS es ideal para aplicaciones que utilizan mucho AJAX y que hacen muchas pero muchas llamadas asincrónicas por pagina para consultar pequeños dato. Ejemplo: un dashboard donde se muestran en tiempo real todas las alzas y bajas de las cotizaciones de la bolsa o de precios de divisas, datos estadísticos en tiempo real, etc.

PHP es para aplicaciones más clásicas, donde hay paginas con mucho contenidos o datos complejos o donde tenes que paginar muchos datos (es decir, aquellos casos donde hacer muchas pero muchas consultas asincrónicas no tiene mucho sentido). Ejemplo: sitios web, tiendas virtuales, aplicaciones de gestión comercial.[/sociallocker]

Consulte nuestros servicios IT de Programación PHP 5 y Programación Node.JS

22 Responses

  1. Yolfry

    Falta mucho para abandonar php7 , un lenguaje tan seguro y potente y compatible con mucho más lenguaje y una gran comunidad que lo apoya; Sólo al que fijarse de los proyecto que se an desarrollado con php, Como Facebook etc.

  2. Anderson Moreta

    Excelente post, me encantó la explicación, ya que no se refiere a un vs en sí, si no que explica cuales son los fuertes y las ventajas de cada uno y te deja a ti la elección final.

  3. Diego

    Node a nivel avanzado es mucho mejor por la facilidad de distribuir los sistemas, me explico, para un sistema grande, con millones de consultas, node nos ofrece la facilidad de realizar diferentes consultas en diferentes servidores ofreciendo un servicio rest rápido , pudiendo ser 1 a muchos los servidores node que trabajen sobre las consultas a 1 misma base de datos, a lo que voy es que php puede instancia 1 sesión por usuario el cual puede hacer muchas consultas diferentes, como el caso de logeo o consulta de información. Por otro lado node , puede tener 1 nodo para el logeo de sus usuarios, otro nodo para la consulta de información de x , otro para la consulta de información de y, etc.. distribuyendo asi el consumo de sus servidores dinamicamente. Me gusta mucho el programar en node, aunque su complejidad es mayor, ofrece amplias opciones a la toma de desición , de como sera la estructura de un sitio web veloz y eficaz.

  4. Alex

    Hace falta algo mas que Nodejs para migrar y abandonar al grande PHP7. Aplicaciones web asincronas se hacen y con eficiencia utilizando AJAX con PHP, Mucho antes de que existiera Node. Ahora, la curva de aprendizaje de PHP y un framework como Laravel es bastante corta, a diferencia de Node.js y Express que es bastante confuso aprenderlo porque hay que escribir código que muchas veces es memorizado pero no entendido. No es un código humano por decirlo de alguna manera. Cosa que no sucede con PHP, es sencillo y poderoso

  5. el sebas

    Hola encontré la respuesta que buscaba.
    decididamente vamos a tener php por muchos años mas
    todavia estoy esperando algo que realmente lo destrone.

  6. Mike

    (Se escribe con “b”)

    Cabe aclarar

    “Cave aclarar que son compatibles entre si y se podrían utilizar en conjunto (aunque recomiendo analizar bien si esto se justifica)”

  7. Adrian

    Muy buen articulo, si deseo hacer una aplicación que realice altas y bajas de alumnos, consultas de materias y horarios y registro de asistencias. Tanto alumnos como docentes van a poder realizar consultas, es recomendable utilizar nodejs?

  8. Ricardo

    Si tuvieras que desarrollar un sistema académico para un colegio que en términos generales implica: creación de planes de estudio, designaciones de docentes, inscripciones de alumnos, carga de notas (por parte de los docentes), cierre de etapas de evaluación calculando promedios, cierre anual de materias,creación de turnos de exámenes, emisión de actas de examen, carga de notas de actas de exámenes, reincripción de alumnos, control de asistencias, etc. etc., usarías Node.Js?
    Soy programador PHP y me gusta aprender nuevas tecnologías como Node.Js, pero en lo que llevo leído de preguntas, opiniones y respuestas, no veo que nadie de un ejemplo concreto como el que planteo.
    Espero tu respuesta o comentario.

    Saludos.

    • gerardo

      considero que esta bien como lo estas haciendo, ya que un sistema escolar puede llevarse de las dos formas, si deseas aplicar node pudiera ser que hagas muchas consultas ajax, como hacer notificaciones en tiempo real, a lo mejor la parte publica para alumnos necesites hacer las consultas usando nodejs , todo depende del esquema a lo mejor no si no tienes un servidor que no aguante la carga de solicitudes puedes usar nodejs pero no creo que sea tu caso…saludos!!

  9. camilo andres

    Muchas Gracias por tu articulo… muy claro….

    Puedes aclararme algunas cosas por favor?

    PHP y NODE…. son usados solo cuando vas a tener bases de datos en tu web?

    PHP no puede correr si no haces las configuraciones de tu servidor?

    Has oido de Meteoro y Mongo…. son otras alternativas??

  10. Robert Arias

    Hola, solo quería saber q lenguaje me recomiendan de los dos para trabajar con bases de datos q podrán llegar a ser consultadas, modificadas, grabadas y creadas de manera simultánea por diferentes usuarios (estoy pensando en crear una aplicación web y se q al momento de estar funcionando tendrá q tener mucha capacidad para responder a las diferentes tareas q se estén realizando en el momento (como calculo de costos de procesos y demás), qdo atento a una opinión de parte de alguno de ustedes y saludos desde colombia

    • Sigma reef team

      Hola Robert Arias, es poca la información que nos brindas como para poder decirte a ciencia cierta que lenguaje sería el más recomendable pero, si vas a trabajar tu sólo y/o si es tu primer trabajo, te recomiendo PHP.

  11. José Carlos R

    Muy buen articulo me aclaro la pregunta del millón con nodejs Vs php.

  12. Yurly Andres Velez

    Excelente artículo, me permitió aclarar el panorama para tomar decisiones de que ruta tomar a la hora de plantear el lenguaje sobre el cual basar un desarrollo específico.

    Concluyo que Node js es una buena herramienta para el desarrollo de aplicaciones mobiles, que constantemente consulten datos al servidor; por el otro lado php me permitiría desarrollar aplicaciones web que utilizan información mas de consulta e ingreso de datos por formularios y no en tiempo real que refresquen datos constantemente.

  13. Juan

    Muy interesante, Node.JS está en bocas de todos y la verdad es que el articulo me resultó muy útil. Gracias por compartir.

Dejar una opinión