AWS Lambda, arquitectura serverless para implementar APIs

La arquitectura de microservicios ha llegado para quedarse. En el blog de Paradigma ya hemos escrito varios post sobre esta arquitectura, sus ventajas y por qué las empresas están usándola.

Esta arquitectura destaca por “no tener servidor”. Ahora mismo habrá muchos que estaréis pensando que me he vuelto loco, ya que si no hay servidor es imposible ejecutar el código. Efectivamente hay servidor, sólo que nosotros no tenemos que saber que existe, ni administrarlo ni preocuparnos de si esta disponible o no.

Con este artículo queremos ir un paso más allá y ver una arquitectura que muchas empresas están empezando a usar y que en algunos casos puede ser un buen sustituto de la arquitectura de microservicios. Hablamos de la arquitectura serverless, aunque podríamos llamarla arquitectura de nanoservicios. Para ello hablaremos de AWS Lambda.

Lambda1

AWS Lambda: la apuesta de Amazon por la arquitectura serverless

Aunque en este post nos centremos en Amazon Lambda, producto del gran proveedor de servicios de Internet, Amazon, no debemos olvidar los otros dos grandes: Google Cloud y Microsoft Azure, productos similares.

Este tipo de arquitectura ejecuta el código que hayamos creado basado en distintos eventos. No es necesario tener una máquina con nuestro código y un servidor de aplicaciones que lo ejecute, simplemente cuando ocurra un evento que definamos se ejecutará el código que hayamos configurado.

Lambda2

Pero, ¿qué eventos podemos definir? La ventaja que tiene este servicio de Amazon es que se puede unir a Amazon API Gateway. Este servicio de Amazon nos permite crear unos endpoints para crear una API y basado en estos endpoints configurar qué código del que tenemos en AWS Lambda ejecutará cada uno de ellos.

De esta forma no tenemos que tener ningún servidor donde resida nuestro código, sólo lo subimos y configuramos la API para que ejecute ese código. Gracias a las políticas de autoescalado que podemos configurar en Amazon podemos hacer servicios que siempre respondan independientemente de la carga que tengan.

A día de hoy, los lenguajes que soporta AWS Lambda son Java, NodeJS y Python, pero seguro que irán llegando otros.

Pero aún hay más. AWS Lambda permite añadir otro tipo de eventos para nuestro código como eventos de buckets de S3, el servicio de almacenamiento de Amazon y, por ejemplo, usarlo como hacen en Idealista.com. En su plataforma, cuando sus usuarios suben un archivo, éste se almacena en un bucket S3. El evento es recogido por un código que crea los thumbnails y se encarga de actualizar los datos en su base de datos.

Otras empresas como Playon usa eventos para codificar en tiempo real videos a distintos formatos y servirlos a distintas plataformas en función de la velocidad de conexión.

Pero aún hay mucho más. Hay infinidad de eventos que pueden ser consumidos por código en AWS tales como Kinesis, DynamoDB, SNS, eventos programados…

Las posibilidades son infinitas y sólo tenemos que preocuparnos por nuestro código, lo demás lo dejamos en las expertas manos de Amazon.

Llevo programando desde los 8 años cuando mis padres se compraron un Amstrad CPC 6128. Desde entonces no he parado y me encanta aprender lenguajes nuevos y aplicar las 3 R (Reutilizar, Reducir, Refactorizar) a los proyectos donde estoy. Actualmente trabajo como Arquitecto de Soluciones en Paradigma.

Ver toda la actividad de Rubén García Becerro

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Comentarios

  1. nines peña dice:

    Gran artículo Rubén,

    buscando como lo hacían en idealista. encontré este post bastante interesante tambíen https://www.idealista.com/labs/blog/idealista/como-procesamos-y-servimos-100-millones-de-fotos-con-la-ayuda-de-aws/

Escribe un comentario