Si has llegado a hacerte esta pregunta, me imagino que ya no es necesario que vuelva a explicarte qué es NodeJS y qué significa programar Javascript en el servidor. Ahora lo que necesitas es saber si NodeJS sería una gran elección para tu próximo proyecto.

Estos son algunos escenarios en los que NO deberíamos usar NodeJS:

  • Una aplicación muy exigente con la CPU, donde principalmente tengas una parte de tu aplicación que se ejecuta mucho tiempo seguido y realiza gran cantidad de cálculos. Esto va a ser altamente bloqueante y simplemente vas a dejar a toda tu aplicación esperando hasta que acabes. Además, al no tener la posibilidad de crear hilos para estos procesos, puedes llegar a notar que el sistema no responde.

  • Un proyecto que no es principalmente de I/O. Es decir, no vas a tener que esperar a agentes bloqueantes como la red o lecturas en ficheros, los cuales crean tiempos muertos de CPU que la naturaleza asíncrona de JavaScript sabe muy bien cómo aprovechar para realizar otros trabajos en paralelo.

  • Un equipo de desarrollo con poca experiencia en Javascript. Si el equipo no está verdaderamente familiarizado con Javascript, hay mejores opciones, como Ruby o PHP, con las que tendrás un ciclo de desarrollo mucho más rápido. No te dejes llevar por las modas.

Por el contrario, hay otros escenarios en los que se le puede sacar mucho partido a esta nueva tecnología.

  • Tienes un proyecto web, donde haces de pasarela de I/O, como por ejemplo servir datos de una base de datos, hacer streaming de un fichero o llamar a servicios de terceros. Verás que tanto la programación asíncrona como Javascript te van a dar todas las herramientas que necesitas para hacerlo de forma óptima.

  • Buscas RealTime. No es exclusivo de NodeJS, por supuesto, pero es mortalmente simple crear un sistema que actualice en vivo y sin hacer pulling a tus servidores la información en los clientes. Hay librerías estupendas para esto como Socket.IO o las API nativas de NodeJS que, para un escenario simple, son más que suficientes.

  • Quieres un prototipo funcional rápidamente. Acabas de tener la idea del próximo Facebook y necesitas ponerla en producción YA, sin lidiar con demasiados detalles de implementación. La macrocultura open-source que existe en la comunidad de NodeJS sin duda te ayudará a pasar de cero a producción en un tiempo récord. Sobre todo, será más fácil encontrar gente que domine el lenguaje en comparación con otras tecnologías, como Python o Ruby.

  • Necesitas una gestión eficiente de las dependencias del proyecto. Hasta hace relativamente poco, las gemas de Ruby eran la opción menos mala gestionar el código de terceros en tu aplicación. NPM (node package manager), la solución de NodeJS, ha llegado a ser tan simple de utilizar que verás cómo tu proyecto acaba siendo un poco de glue code alrededor de un montón de código de terceros.

  • Tienes una SPA optimizada para SEO. La naturaleza isomórfica de NodeJS te permitirá utilizar el mismo código para renderizar tus vistas en el cliente y para renderizar esa misma vista en el servidor y que esta sea enviada al cliente. Si a esto añadimos el nuevo framework de Facebook, ReactJS, llegamos a un nivel de sofisticación superior. Se trata de un framework que fue desarrollado precisamente con la idea de que pudiera usarse indistintamente en el cliente y el servidor.

En futuros posts explicaré con detenimiento cómo montar desde cero una aplicación que use ReactJS para compartir las vistas en cliente y servidor.

Suscríbete a mi lista de correo

* Campos obligatorios