¿Qué es la arquitectura serverless?

¿Qué es la arquitectura serverless?

La administración y mantenimiento de un servidor, es una tarea que ocupa mucho tiempo y recursos. Esta arquitectura nos permite despreocuparnos de todas las tareas de gestión del servidor y además nos ofrece muchas ventajas. En este artículo hablaremos sobre arquitectura serverless y de cómo funciona, además veremos los servicios más populares. ¡Comenzamos!

¿Qué es la arquitectura serverless?

Aunque serverless signifique “sin servidor”, a lo que se refiere con esto es a que es una arquitectura en la que no debemos preocuparnos por él, puesto que el proveedor en la nube es quien se encarga de su administración.

Serverless es una solución que nos permite crear y ejecutar aplicaciones más rápido y de forma más barata, ya que solo pagas por lo que consumes. En las aplicaciones centradas en servidor, tenemos procesos continuamente activos que atienden peticiones. 

En las centradas en servidor, el programa se activa cuando recibe una petición, después la procesa y se apaga. El ciclo de vida es mucho menos en el caso de las serverless, tienden a ser un solo ciclo de petición y respuesta. Estas estructuras se conocen como Functions as a Service (FaaS), y las más populares son AWS Lambda, Azure Function y Google Cloud Functions. Después veremos estas FaaS y analizaremos qué diferencias tienen, pero primero vamos a ver que ventajas nos ofrece la arquitectura serverless.

Ventajas de la arquitectura serverless

  • No hay necesidad de administrar infraestructura: No hace falta administrar los servidores, ni mantenerlos. Todo esto será responsabilidad del proveedor de nube.
  • Escalabilidad: Los servicios en la nube son fácilmente escalables bajo demanda, se adapta fácilmente a nuestras necesidades.
  • Ahorro de costes: En esta arquitectura se paga por lo que se usa, es decir, en vez de pagar por la instancia, pagas por el tiempo de uso. 
  • Alta disponibilidad y tolerancia a fallos: Estos servicios ofrecen alta disponibilidad y tolerancia a fallos de manera predeterminada.
  • Automatización: Al ejecutarse por eventos se automatizan las tareas para ejecutarse cuando sea necesario.

FaaS más usados

AWS Lambda

Arquitectura Serverless - AWS Lambda Functions

¿Cómo funciona?

Cada función lambda es desencadenada por un evento. Este evento puede ser invocado por otro servicio AWS como Amazon API Gateway, creando un endpoint HTTP(s) o manualmente desde la consola de Lambda. Cuando recibe este evento, ejecuta el código asociado. El código se escribe en la página de funciones de AWS, aquí crearemos la función, le daremos un nombre y elegiremos el runtime, que puede ser Node.js 20.x o Python 3.12. Ahora ya podremos escribir nuestro propio código y probarlo. Aquí dejo un ejemplo de una función simple hecha en Python.

import json

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps('Hola! Esto es una prueba de Lambda')
    }

Desde la vista de diseño, podremos añadir los eventos que queremos que invoquen la función. Aunque podrás probar su funcionamiento pulsando «Test».

Para monitorear todo lo relacionado con esta función y acceder a sus logs, tenemos Amazon CloudWatch. Este nos mostrará un registro por cada vez que se llama a la función y sus posibles errores.

Ventajas

Su principal ventaja es su capacidad de integración. AWS ofrece muchos servicios que pueden integrarse con Lambda, como Amazon Lex, RDS, Alexa, Kinesis o DynamoDB.

Google Cloud Functions 

Arquitectura Serverless - Google Cloud Functions

¿Cómo funciona?

Lo primero que necesitamos para escribir nuestra primera función serverless en Google Cloud Functions es el código. Una vez tenemos el código guardado en un archivo, por ejemplo, index.js, podremos desplegar la función con gcloudCLI.

Este es un ejemplo para saludar en Google Cloud Functions.

exports.saludar= (req, res) => {
  let message = req.query.message || req.body.message || 'Hola! Esta es una prueba en Google Cloud';
  res.status(200).send(message);
};

gcloud functions deploy saludar--runtime nodejs16 --trigger-topic saludar

En este caso, para probar la función, tendremos que hacerlo mediante la consola y comprobar el resultado en Google Cloud Console logs.

Ventajas

Cuenta con la ventaja de poder integrarse con todos los servicios de Google Cloud, como Storage o Spanner.

Azure Functions

Arquitectura Serverless - Azure Functions

¿Cómo funciona?

Para crear nuestra primera función en Azure, tendremos que crear una Function app en Azure Marketplace y configurarla, para ello definimos el grupo de recursos, el nombre, suscripción, runtime y hosting. Una vez hemos generado la Function app, podremos empezar a diseñar una función serverless. Primero definiremos un evento para invocar la función y después escribiremos el código. Este es un ejemplo de una función serverless en Azure Functions:

func new --name saludar --template "HTTP trigger" --authlevel "anonymous"
def main(req):
    return f'Hola! Esto es una prueba en Azure'

Ventajas

Al igual que AWS, Azure también tiene una gran capacidad de integración, pudiendo conectarse con numerosos servicios de Azure o con Cortana, por ejemplo. Sin embargo, esta no es su mayor ventaja. Azure Functions es capaz de usar los principales lenguajes de programación de Microsoft, es decir, podrás programar en .Net, C#, PowerShell, JavaScript o Python.

Conclusión

En conclusión, la arquitectura serverless nos ofrece muchos avances y ventajas, ya que no solo acelera el proceso de desarrollo, sino que también permite una mayor agilidad y capacidad de respuesta, haciendo que sea una opción aún más atractiva.

Y tú, ¿te animas a meterte en el mundo de la arquitectura sin servidor? ¡Cuéntanos en comentarios!

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes usar estas etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>