"Perhaps we no longer have to think about servers". Estas fueron las palabras de Werner Vogels, CTO de AWS, el 7 de julio de 2016 para resumir el valor de la computación Serverless en su intervención en el Summit de Londres.

La destacaba como la siguiente gran revolución tras los contenedores y comentaba que algunas compañías ya estaban empezando a quitar las grandes piezas de sus aplicaciones y estaban reemplazando sus servidores, sus máquinas virtuales y sus contenedores sólo con código.

¿Qué ventajas tienen los servicios serverless?

Y es que si algo caracteriza a los servicios cloud es la capacidad que nos ofrecen para desarrollar nuestras aplicaciones sin preocuparnos del hardware subyacente.

Dentro de los servicios de computación, el nivel básico de abstracción lo obtenemos con un IaaS, en un PaaS conseguimos una abstracción mayor y el nivel máximo lo podemos alcanzar con los servicios Serverless.

En estos, podemos alojar nuestro código o nuestra aplicación que se ejecutará al ocurrir determinados eventos. No tendremos que encargarnos de gestionar ningún servidor. El servicio escalará automáticamente (casi hasta el infinito) para adaptarse a la demanda.

Y solo pagaremos en función de los recursos consumidos. Además, los principales proveedores cloud incluyen una capa gratuita mediante la que se pueden usar mensualmente una gran cantidad de recursos sin ningún cargo.

¿Qué es un serverless?

Cuando hablamos de Serverless conviene aclarar que este término se utiliza para hacer referencia a varias cosas: una metodología, un framework y una organización.

La arquitectura Serverless es una metodología completamente agnóstica a proveedores. El framework Serverless es una herramienta multiproveedor por línea de comandos que automatiza y nos evita realizar a mano multitud de tareas.

¿Qué utilidades ofrece?

Este stack proporciona un conjunto de utilidades para trabajar sobre los servicios serverless de varios proveedores. Y la empresa que desarrolla y mantiene este framework es Serverless Inc. En este momento el framework Serverless soporta los siguientes proveedores:

Comúnmente se asocia Serverless a FaaS (Function as a service) una tecnología que nació en 2014 en hook.io y que continuaron, entre otros, AWS Lambda, Google Cloud Functions, Microsoft Azure Functions o IBM/Apache OpenWhisk.

AWS

AWS Lambda no fue el primer servicio Serverless que estuvo operativo en el mercado, pero sí el que se ha hecho más popular. Soporta Java, Node.js, C#, Python y Go. Se integra con el resto de servicios del ecosistema Amazon: API Gateway, S3, RDS, Kinesis, DynamoDB, SNS, etc. Se puede monitorizar con CloudWatch y es utilizada en grandes proyectos por empresas como Netflix.

Google Cloud

Google Cloud Functions lleva un tiempo en la plataforma de Google y, aunque por el momento solo admite código Javascript para ejecutar en un entorno Node.js, se integra con el resto de servicios: Storage, Spanner, Pub/Sub, Firebase, etc. La monitorización se puede realizar a través de Stackdriver.

Azure

Azure Functions es la propuesta de Microsoft Azure. Llevan aproximadamente 2 años en el mercado. Permite el uso de C#, F#, Java, Python, PHP, Batch, Bash o Powershell. Se integra con muchos de los servicios de Azure, incluído Cortana.

Otros proyectos open source

Pero, además de estos servicios, que son los más conocidos, existen multitud de proyectos opensource como Kubeless, Fission, OpenFaaS o Riff, que nos permiten minimizar el vendor lock-in mientras seguimos utilizando servicios Serverless.

Estos frameworks están diseñados para desplegarse sobre clusters de Kubernetes, sobre Swarm o sobre Docker. Y ofrecen un entorno Serverless open source donde ejecutar nuestras porciones de código bien sea en una nube pública bien en una privada. Soportan multitud de lenguajes: Java, Python, Node.js, Ruby, PHP y otros.

Además, ofrecen integración con los principales proveedores Cloud y con el framework Serverless citado anteriormente. Soportan diferentes sistemas de mensajería como Kafka y se adaptan a diferentes herramientas de monitorización como Prometheus.

Casos de uso

Los casos de uso que puede tener esta tecnología son tantos como se nos ocurran, pero podemos citar, entre otros, los siguientes:

Además...

Y a todo esto hay que añadirle otros servicios que conceptualmente también se pueden considerar servicios de computación sin servidores:

Conclusiones

Con todo esto podemos construir arquitecturas completas para nuestras aplicaciones basadas en tecnologías Serverless.

Hasta hace bien poco para montar microservicios, buses de eventos o motores de procesamiento streaming se necesitaban grandes clusters con un montón de servidores que tenían que ser mantenidos y que tenían que estar siempre corriendo. Pero ahora ya nada de eso es necesario.

Utilizando una mentalidad Serverless estas arquitecturas eliminan la necesidad de tener los servidores siempre activos. Esto hace que en estos nuevos sistemas se aligere significativamente el coste operacional y la complejidad, a la vez que se reduce el coste de los desarrollos y se consigue que el escalado mediante funciones sea más económico.

Gracias a todas estas ventajas y al gran número de productos que hay en el mercado, el uso de la computación Serverless está aumentando a gran velocidad. Se ha convertido en una herramienta muy poderosa para innovar rápidamente.

Con Serverless estamos construyendo un gran número de productos software y poniéndolos a disposición de los usuarios sin tener que preocuparnos de las máquinas. Tal vez ya no tengamos que pensar más en los servidores, como Vogels y otros pronosticaban hace un par de años.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.