En este artículo vamos a analizar las tecnologías backend que hoy representan mayor innovación en el mundo del desarrollo.
En el manual de Innovación en el desarrollo hemos tratado ya algunos puntos interesantes para todos aquellos que nos dedicamos a la programación en general. En el primer paso definimos las necesidades de las aplicaciones de hoy en día. En el segundo paso hemos descrito la arquitectura API REST, que es el principal exponente de las aplicaciones capaces de reutilizar el desarrollo backend para diferentes plataformas.
Ahora, ya que estamos hablando de backend, queremos detenernos un poco para hablar de tecnologías de backend, describiendo no todo el mercado o abanico de lenguajes, servidores y herramientas, sino aquellos que nos facilitan principalmente el desarrollo de sistemas innovadores.
Pero antes de comenzar queremos aclarar que Cualquier API REST se puede construir con cualquier lenguaje, puesto que todos los lenguajes actualmente tienen soporte a JSON. La arquitectura de una aplicación basada en API Rest es indiferente del lenguaje y por tanto cualquier alternativa es suficiente para acometer una tarea de hacer un backend que permita su reutilización para diferentes frontales. Así mismo, desde un frontal web o App para móviles es también indiferente en qué lenguaje esté construida el API, por lo que al final nuestra elección tiene bastante flexibilidad.
Dicho eso, es cierto que hay algunos lenguajes más adecuados que otros y en este caso el que últimamente más se ha postulado como candidato a construir un API es NodeJS, que ya sabemos que es una plataforma que usa Javascript como lenguaje y que permite el desarrollo de cualquier tipo de programa (NodeJS no es solamente Javascript del lado del servidor).
Por qué NodeJS es una excelente opción para construir un API REST
Es gracias a las características no bloqueantes de Javascript. La mayoría de los lenguajes tradicionales, cuando tienen un proceso que ocupa más tiempo (por ejemplo realizar cualquier tipo de solicitud a un servidor remoto), se quedan esperando que éste acabe para continuar con la ejecución del código. Javascript no. Simplemente libera los procesos y se centra en otras cosas hasta que se tenga respuesta.
Llegado el momento en el que el código pueda continuar su ejecución, porque ya se tenga respuesta de aquel trabajo que se estaba esperando, Javascript ejecuta lo que se conoce como funciones "callback". Estas funciones también se conocen como "closures" y contienen el código que se debe procesar para realizar las acciones oportunas según sea la respuesta.
Esa posibilidad de no bloquear los procesos provoca que NodeJS sea capaz, al menos en teoría, de atender mayor número de usuarios que otros lenguajes. Obviamente esta comparación sería con lenguajes en ejecución sobre en máquinas con los mismos recursos.
Siguiendo la estela de NodeJS / Javascript
La programación con closures (o funciones anónimas) está captando mucho interés en el momento actual de la programación, por sus ventajas en lo que respecta a la asincronía de ejecución del código.
Sin embargo, algo que era una novedad hoy está siendo mayoritariamente incorporado por otros lenguajes.
De hecho, una de las grandes novedades que tendrá la próxima versión de .NET es la posibilidad de usar closures y de liberar los procesos como hace NodeJS. Por su parte PHP también ha incorporado el uso de funciones anónimas dentro del lenguaje.
Otras ventajas de NodeJS en el desarrollo web
Candidatos a construcción de APIs, como hemos dicho, son todos los lenguajes de Backend, aunque NodeJS tiene otra ventaja, dicho sea de paso: el lenguaje es Javascript. Trabajando con "Node" seríamos capaces de construir todas las partes de una aplicación con el mismo lenguaje, lo que puede resultar en mayor productividad para el desarrollador.
El acrónimo MEAN ejemplifica este caso y es una de las alternativas de la tendencia “Javascript Fullstack”. Sus siglas son: MongoDB, Express, AngularJS, NodeJS.
Frameworks pensados para hacer APIs REST
Express es un framework de NodeJS muy popular para realizar esta tarea. También podemos mencionar por su inmediatez el framework SailsJS, que permite en pocos minutos tener un API lista para ser usada.
Pero para las personas que prefieren PHP hay alternativas muy adecuadas como puede ser Laravel o Symfony, dos de los frameworks más importantes en la actualidad, que tienen un extensísimo apoyo con comunidades muy nutridas a lo largo del planeta.
En el mundo de PHP además han surgido lo que se conoce como "micro frameworks" que no son más que frameworks menores, enfocados específicamente en la construcción de APIs, donde se ha eliminado gran parte del código que los hacía pesados. Lumen, hermano pequeño de Laravel es un ejemplo, así como Silex, hermano pequeño de Symfony.
Otras alternativas destacables
Apreciaremos que estamos abriendo mucho el abanico de tecnologías. Hemos señalado lenguajes de backend como NodeJS, .NET o PHP (siempre recordando que "node" es una plataforma que tiene Javascript como lenguaje, así como .NET es otra plataforma capaz de soportar diversos lenguajes). Pero no nos podemos olvidar de Ruby o Python.
A Ruby hay que agradecerle además algunas de las tendencias que hoy encontramos en la mayor parte de los lenguajes, como los gestores de paquetes (gemas) cuya filosofía tiene Node a través de npm o PHP a través de Composer. Así como la arquitectura de Ruby on Rails que ha sido parte de la inspiración de los frameworks actuales más relevantes como Laravel.
Bases de datos innovadoras
En cuanto a bases de datos es interesante destacar las prestaciones del nuevo modelo de las bases de datos NoSQL, "Not Only SQL". Estas bases de datos responden a alguna de las necesidades más destacadas del momento actual y que hemos comentado de pasada, la minería de datos, recolección masiva de datos con diversos fines:
- Conocer a los usuarios (y en esto son especialistas empresas como Google o Facebook que basan su modelo en presentar publicidad al usuario altamente relacionada con sus búsquedas o intereses.
- Imaginar la cantidad de datos que debe manejar Google para tener perfilados a la mayoría de usuarios de Internet).
- Detectar patrones de comportamiento con los que identificar problemas de las aplicaciones, cuellos de botella en la experiencia de usuario, etc.
- También se desea detectar y acompañar el uso de las aplicaciones para conocer las necesidades de los productos. Es decir, definir las funcionalidades y metas de las aplicaciones, en función del uso que los usuarios hacen de éstas.
- A veces esa recolección y uso de datos trasciende de las personas, entrando en juego lo que se conoce como el “internet de las cosas” (internet of things), que aumenta exponencialmente la recolección de datos por parte de los sistemas.
Ante esa necesidad de recabar información de todos y de todo os podéis imaginar el volumen de almacenamiento que requiere, así como la tecnología necesaria para trabajar con lo que se conoce como “big data”. Los sistemas gestores de las bases de datos tradicionales, con motores basados en SQL, no ofrecen el rendimiento que se necesita para el procesamiento de esta magnitud de información.
En estos casos son más adecuadas las bases de datos NoSQL, llamadas también bases de datos documentales, que sí están preparadas para estas necesidades actuales:
- Almacenamiento masivo de datos
- Acceso y recuperación rápida de los datos almacenados
- Lidiar con datos heterogéneos
Ejemplos de bases de datos no relacionales tenemos en la mencionada MongoDB, pero también en otras bases de datos más elementales como Redis.
Conclusión
El panorama de tecnologías no para de crecer, no nos debemos volver locos queriendo aplicarlas todas para cualquier nuevo proyecto que tengamos entre manos, pero sí debemos conocer sus características para saber cuándo se deberían usar.
Por poner un ejemplo, como hemos mencionado, las bases de datos documentales sirven muy bien cuando se tiene gran cantidad de información y modelos de datos heterogéneos. El tipo de operaciones de acceso a datos que realizaremos con ellas son diferentes a las que se realizan en habitualmente en aplicaciones de gestión más tradicionales. "Dame todos los clientes de nacionalidad española que han comprado productos de electrónica el mes pasado". Ese tipo de consultas son muy sencillas en bases de datos relacionales y no tanto en las bases de datos documentales, cuyos documentos pueden o no estar pensados para facilitarlas.
Lo que queremos decir es que, porque las bases de datos documentales estén de moda y nos sirvan para solucionar algunos problemas de las aplicaciones actuales, no significa que las tengas que usar para todos los proyectos.
Del mismo modo, aunque NodeJS tiene diversas ventajas que ya hemos comentado, no siempre es la mejor selección para todos los tipos de proyectos, por lo que siempre será importante valorar el tipo de aplicación que se va a realizar y el conocimiento de partida de los desarrolladores que vayan a acometer el proyecto.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...