Programación PHP vs. Programación Node.JS
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 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
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)
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]
0 comentarios:
Publicar un comentario