Un
microservicio es una pieza de software que se encarga de hacer una tarea específica dentro del sistema. Un ejemplo de ello es
Auth0, el cual nos provee una API para manejar la autenticación de usuarios; otro muy conocido es
Algolia, el cual puede indexar el contenido que deseamos y nos entregue un API para realizar búsquedas.
Por otro lado, tenemos el término
serverless. Si realizamos una traducción literal, seria
sin servidor, pero esto
no es del todo cierto. Con el auge de los microservicios, lo que busca es
delegar ciertas tareas de nuestra aplicación a servicios de terceros, con lo cual sólo necesitamos ejecutar un script que realice dichas peticiones a terceros.
Teniendo estos conceptos un poco más claros, vamos a ver que son los
Serverless microservices, y
cuál es su utilidad.
¿Qué es un microservicio sin servidor?
Esta arquitectura de software permite al desarrollador
abstraerse de servidores, infraestructura y configuraciones complicadas, dejando las
tareas complejas en manos de terceros.
Como te conté antes, existen servicios de este tipo para
casi cualquier cosa,
algunos gratis, y en su mayoría
de pago pero con
una capa de uso gratuita, que permite probar algunas de sus capacidades. Un ejemplo de ello es el
free tier de Amazon S3, donde podemos almacenar información en sus servidores
sin pagar un peso, siempre y cuando sea dentro de ciertos límites.
¿Cuál entonces, es la diferencia entre una arquitectura
con servidor y una
sin servidor, o serverless?
Arquitectura tradicional
Es la usada en la mayoría de apps y servicios existentes. En ella,
el cliente — a través de un navegador -
realiza una petición al servidor que almacena nuestra aplicación o sitio web; éste, a su vez,
realiza una petición a la base de datos, que puede o no estar en otro servidor.

Luego, la información
regresa desde la base de datos al servidor, éste
procesa la información, y retorna la información ya procesada al cliente.
Arquitectura serverless, o sin servidor
Es una
nueva arquitectura que está tomando fuerza en los últimos meses. En esta, la
petición del cliente es
interceptada por una puerta de enlace, o
API Gateway, que
se encarga de redirigir el tráfico al microservicio correspondiente.
En el ejemplo de la imagen, es hacia un
servicio de autenticación (como
Auth0); luego, lo enruta hacia un servicio que
le da acceso a nuestro usuario a un subconjunto de nuestra base de datos. La función de búsqueda y compras son manejadas por
FaaS — Funciones como un Servicio, que explicaremos un poco más adelante. Por último, tenemos la base de datos de compras, la que reside en nuestro servidor.

Como mencionaba, las
FaaS (por sus siglas en inglés) o
Funciones como Servicios son
pequeños scripts que
realizan tareas específicas y muy acotadas.
Algunas de sus ventajas son:
- Corren sin necesidad de configuraciones complejas en el servidor.
- No se deben escribir pensando en el uso de alguna librería o framework específico.
- El despliegue de la aplicación es diferente: solo es necesario subir el código, y el proveedor del servicio se encarga del resto.
- El escalamiento horizontal es automático y manejado por el proveedor.
Existen algunos proveedores para ejecutar
FaaS. Uno de ellos es
AWS Lambda, el cual viene acompañado de una completa documentación para que lo implementes.
Beneficios
- Reducción en el tiempo de configuración.
- Abstracción de la infraestructura, configuración, mantenimiento de servidores.
- Reducción de costos en infraestructura y servicios de DevOps.
La
arquitectura de software sin servidor nos permite, de una manera
más económica, iniciar un producto o servicio y
no perder tiempo en desarrollar todo desde cero, y adicionalmente, de
evitarnos todo lo relacionado a configuración y administración de servidores.
Fuentes:
Excelente aporte!
Muchas gracias!!!
Muy buen aporte.
Buen post, gracias
Excelente! Graças Diego, muy buena explicación!