Serverless 101 by Oscar Cortes Bracho

Serverless 101 by Oscar Cortes Bracho

Introducción a una serie de artículos sobre serverles e IaC by Oscar L. Cortes Bracho

Serverles

Una introducción a una serie de artículos sobre serverles e IaC

Motivación:

Dentro del universo tecnológico hay pequeños entornos en los que se genera una cohesión entre los adeptos que destaca sobre los demás. Serverless es uno de esos ecosistemas donde los usuarios y adeptos son apasionados de las ventajas que ofrece y la reducción de algunos problemas a fuerza de imaginación y soluciones técnicas.

Desde que tuve la fortuna de trabajar con Damian, cada discusión alrededor de serverless fue siempre constructiva, poniendo de manifiesto el potencial del paradigma , cómo mitigamos esos problemas que serverless trae, que si 'mono-repo' o no, que si CDK o Pulumi, que Serverless framework, etc, esta serie de artículos es un acercamiento a nuestras discusiones y charlas relacionadas con Serverless, Infraestructura como código(IaC) y relacionados.

Pero para hablar de serverless e introducir esta serie de pequeñas historias alrededor de este apasionante tema, tenemos que empezar a definir qué abarca serverless sus orígenes y horizontes cercanos sin intentar hacer futurología.

¿Que es serverless?

Siempre me gusto ir a la definición del diccionario, pero para una palabra como serverless es difícil iniciar por ese punto. Por otro lado, serverless es una palabra originada en el idioma inglés, que si la diseccionamos(etimología) su traducción sería "sin servidor". El concepto sin servidor dentro del contexto que estamos tratando, hace referencia a la ausencia de un equipamiento físico: hardware al momento de ejecutar una aplicación, servicio, base de datos y además tiene implícito la ausencia de todo lo su correspondiente a la compra, administración y gestión del hardware.

Otra práctica recomendable al momento de abordar a un nuevo concepto es tratar de encontrar la referencia más antigua que se tenga o la utilización del término en un artículo o libro, documento técnico, etc. Aunque embarcarse en esa tarea en este resumen, puede ser una tarea que se escape del objetivo que es introducirnos al mundo serverless, de manera resumida podemos decir que hay cierta coincidencia que el término aparece entre los años 2000 y 2013 en una serie de artículos como por ejemplo,IEEE Xplorer, o este de Ken fromm por citar algunos.

En la actualidad serverless es un conglomerado de servicios que se pueden contratar o montar desde cero en nubes privadas o híbridas, llevando como bandera los conceptos insignias con los que nació el paradigma:

  • Pagar por lo que se usa(Sin contratar un servidor o tenerlo contratado 100% del tiempo),
  • Autoescalado( Sin necesidad gestionar el servidor donde se aloja el o los servicios)
  • No tener que administrar servidores (Sin coste o gestión de administración del servidor)
  • Reducción en el tiempo de la adopción de servicios (No tengo que esperar que me llegue el servidor)

Entre paréntesis colocamos a modo exagerado y coloquial la implicancia directa sobre el hardware ,tratando de dejar claro que es lo que hoy entendemos por Serverless o "Aplicaciones sin servidor"

Lambda como abanderado

Vamos con un ejemplo del que posiblemente sea el más conocido de los servicios serverless. En el año 2014 en la reinvent amazon lanza "AWS Lambda" como servicio, masificando el uso del concepto de serverless pero a la ves concentrándolo y llevando a lambda como el abanderado del paradigma serverless. Si bien trataremos a lambda en otros momentos, labmda es un servicio de AWS que permite subir y ejecutar piezas de código, seleccionando el tipo de hardware que necesitamos pero sin preocuparnos por su gestión y administración. Por ejemplo si solo queremos un servicio que me retorne una transformación de una imagen esta "función lambda" tendrá esa única responsabilidad, una imagen como entrada una imagen como salida y puedo actualizarla, publicarla, refactorizar, atómicamente con los beneficios comentados anteriormente como por ejemplo me cobran solo por el tiempo que dure la ejecución y no por tener mi lambda subida a la nube.

Además de lambda

Si bien lambda fue el servicio que popularizó el concepto de serverless, los distintos cloud provider como Google, Azure, etc. lanzaron sus propias versiones de lambda con muy buenas características, proporcionando distintos sabores en el mercado, incluso hasta el extremo de poder armar nuestras propias versiones de lambda knative ( que seguro trataremos en otra serie de artículos ...)

Pero no fueron sólo estos servicios de ejecución atómica de servicios/microservicios lo que popularizaron el concepto, incluso algunos anteriores a lambda somo SQS de amazon, permitieron crear un ecosistema de servicios con los cuales se puede construir el equivalente de una aplicación tradicional utilizando todos servicios serverless, para no extendernos en detalles podríamos resumir diciendo que tenemos una servicio serverless para cada capa tradicional de las aplicaciones: base de datos, ejecución de aplicaciones, colas, storage ...

¿Y ahora qué ?

La intención era realizar una pequeña introducción a una serie de artículos en los que contaremos temas relacionados con el mundo serverless y que sirva como disparador para generar un espacio para compartir y crear contenido alrededor de Serverless.

Referencias

Autor

Linkedin de contacto de Oscar