Node.js - Casos de Uso, Buenos y Malos

 

Las razones por las cuales alguien que esté en el negocio del software elige sus herramientas de trabajo (lenguajes, framework, sistema operativo) son variadas, sus combinaciones, infinitas. Node.js, el framework en javascript construído sobre el engine V8 de google ha explotado como una elección popular en el último tiempo, atrayendo desarrolladores provenientes de distintos paradigmas, motivando a una legión de programadores a crear bibliotecas de todo tipo y para toda necesidad.

Lenguajes Top en Github al 20130130

Ahora, las dos preguntas que más me han hecho acerca de Node.js son: "¿Cuáles son las ventajas de Node.js?" y "¿Para que podría YO ocupar Node.js?". Una buena manera de orientarse en preguntas tan abstractas, es ver qué nos puede decir algún experto en el campo. El programador de Alemania, Felix Geisendörfer es considerado uno de los miembros más prolíficos de la comunidad de Node.js. Éste, en uno de sus artículos de su sitio de título Felix's Node.js Convincing the boss guide, da su opinión una serie de casos de uso, tantos MALOS como BUENOS, para implementar una solución en Node.js, los cuales transcribiremos:

Malos Casos de Uso

Aplicaciones pesadas en CPU

A pesar de lo mucho que quiero a Node.js, existen varios casos de uso donde simplemente no tiene sentido utilizarlo. El más obvio de dichos casos es cuando las aplicaciones son muy intensivas en el uso de la CPU y muy livianas en el uso de I/O. Por lo que si tú planeas escribir software para codificar videos, inteligencia artificial o software de ese talante, hambriento de recursos, por favor no uses Node.js. Puedes obtener mejores resultados con C o C++.

Dicho sea de paso, Node.js permite escribir facilmente agregados en C++, de manera que puedas usarlo como un motor de scripting encima de tus algoritmos super secretos.

Aplicaciones simples CRUD (Crear, Leer, Actualizar y Borrar) / HTML

Mientras Node.js pasará evantualmente a ser una herramienta divertida para escribir todo tipo de aplicaciones web, no deberías esperar en este punto a que te dé más beneficios que PHP, Ruby o Python. Si, tu aplicación puede terminar al final siendo ligeramente más escalable, pero no, tu aplicación no obtendrá magicamente más tráfico solo porque la escribiste en Node.js

NoSQL + Node.js + Buzzword

Si la arquitectura de tus próximas aplicaciones suenta tal cual como los ingredientes del libro de cocina NoSQL, por favor, detente un segundo y lee esto:

Si, Redis, CouchDB, MongoDB, Riak, Casandra, etc. Todos ellos lucen realmente tentadores, pero también se veía así esa manzana roja que no pudo resistir Eva. Si tú ya estás tomando un riesgo en tecnología, no deberías multiplicarlo con más tecnología que probablemente no entiendas muy bien aún.

Seguro, hay casos de uso legítimos para escoger una base de datos orientada a los documentos, pero si tratas de construir un negocio basado en tu software, mantenerse en una tecnología de base de datos conservadora (tales como PostgreSQL o MySQL) puede superar los benficios de satisfacer a tu nerd interno o impresionar a tus amigos.

Buenos Casos de Uso

Aplicaciones de una sóla página

Si planeas escribir una aplicación de una sóla página intensiva en AJAX (como por ejemplo GMail), Node.js es una muy buena alternativa para ello. La habilidad de procesar tantos requerimientos por segundo con tiempos de respuesta bajos, así como la de compartir cosas como por ejemplo el código de validación entre cliente y servidor (javascript a ambos lados), hacen que Node.js sea la gran opción para aplicaciones web modernas que hacen un montón de procesamiento en el lado del cliente.

Envoltura y exposición de herramientas unix

Con Node.js aún joven (versión 0.8.18 a la fecha de publicación), es tentador reinventar la rueda para todo tipo de software. Sin embargo, un mejor enfoque es aprovecharse del vasto universo de herramientas de línea de comandos. La habilidad de Node.js de engendrar miles de procesos hijo y tratar a sus outputs como streams, hace que sea una elección ideal para aquellos que buscar realzar el nivel del software existente.

Streaming de datos

Los stack tradicionales para web tratan las HTTP request y sus responses como eventos atómicos. Sin embargo, la verdad es que estos son streams, y muchas aplicaciones cool de Node.js pueden ser construídas para tomar ventaja de este hecho. Un gran ejemplo es el de poder parsear subidas de archivo en tiempo real, así como construir proxies entre diferentes capas de datos.

Aplicaciones livianas en tiempo real

Otro gran aspecto de Node.js es la facilidad en la que se puede desarrollar sistemas livianos de tiempo real. Con eso, me refiero a cosas como Twitter, software para chats, apuestas deportivas o interfaces para redes de mensajes instantáneos.

En conclusión, usaremos la vieja frase: "Para cada problema existe la herramienta adecuada". No porque una solución esté de moda, es la solución total que resolverá todo. Pero conviene tener una nutrida caja de herramientas. Node.js siempre fue diseñado con la mente en el modelo de eventos de la web y en esos espacios con usuarios concurrentes, eventos que se encolan y mensajes livianos, se ve la diferencia.

powered byDisqus