less-is-more-791109_640

Hacía ya tiempo que no aparecería un nuevo concepto, un nuevo palabro, en el ámbito de la arquitectura T.I., del estilo de BaaS (Backend as a Service) o de Microservicios… pues bien, ya tenemos aquí uno: Serverless

Como en muchos de estos conceptos, el nombre no es muy afortunado, ya que si nos hablan de una aplicación del tipo serverless (sin servidor), lo primero que podemos pensar es que se trata de una app web o móvil que se ejecuta totalmente en el lado del cliente, en el dispositivo, y que obviamente, no tiene servidor. Pues bien, esto no es tan sencillo, ya que una aplicación de este tipo, si bien no tiene un servidor como el que estamos a acostumbrados a ver, sí que tiene una parte servidora en definitiva.

Concepto de Serverless

Este artículo del site de Martin Fowler ofrece una explicación del concepto y de sus orígenes, que básicamente se empezó a usar para definir a aquellas aplicaciones que dependen en servidor de terceras aplicaciones o servicios de terceros para manejar el estado y la lógica de negocio en el lado del servidor.

En lugar de tener una aplicación en el servidor, un conjunto de servicios, empaquetados en uno o varios artefactos (no tiene que por qué ser una aplicación monolítica). Un servidor de larga duración, es decir, pensado para arrancarlo y mantenerse vivo indefinidamente para responder a las peticiones de la parte cliente, tendremos otra “cosa”. Y esta cosa en realidad son varios servicios de terceros y algunas lógicas de negocio de vida efímera que sólo se “levantan” en respuesta a un evento y luego se vuelven a destruir… estaremos hablando de lo que se conoce como serverless.

sketch

En el ejemplo que se pone en el mencionado artículo tenemos una aplicación, que en la parte servidora, se compone de lo que llama “lógica de infraestructura” como un repositorio de autenticación que está manejado por terceras partes, en la nube, como por ejemplo un servicio de autenticación en Microsoft Azure. También se muestran bases de datos de sólo lectura que pueden estar en base de datos hosted en cloud….

Hasta este punto, yo no vi ningún problema en el planteamiento, pero la siguiente pregunta que cabe hacerse es “¿y qué pasa con la lógica de negocio de la aplicación?”. Para eso, sí que se necesita un servidor propio de la aplicación ¿no? ¿dónde está en un planteamiento serverless?

Pues bien, la respuesta a esta pregunta, es que se tienen lógicas de negocio o “funciones” propias de la aplicación en el servidor, pero no tenemos un servidor como tal… como podríamos imaginar un servidor Tomcat con una aplicación web Java en él…sino que  tendremos únicamente contenedores muy ligeros para esta lógica… una lógica como servicio o más bien “Function as a Service” (FaaS).

Un ejemplo de este contenedor de funciones o de lógicas de negocio es Amazon AWS Lambda que se describe precisamente como “ejecuta código sin pensar en servidores. Paga sólo por el tiempo que consumes”.

Captura de pantalla 2016-07-25 a las 17.06.40

Conclusión

En definitiva, Serverless es una vuelta más de tuerca al concepto de la nube y del “X as a service” llevado al extremo. Si en realidad sólo quiero ejecutar unas lógicas de negocio ¿para qué quiero gestionar un servidor?… dime dónde puedo “alojar” estas lógicas y se ejecutarán cuando se necesite, y cuando no las necesito, permanecerán “apagadas” y no me costarán un céntimo…. muy interesante.