Bienvenido al mundo serverless, uno de los cambios de mentalidad más grandes de la nube. Hasta ahora siempre había un servidor de por medio: lo arrancabas, lo configurabas, lo escalabas, lo reparabas. Con AWS Lambda te olvidas de todo eso: solo escribes el código que quieres ejecutar, y AWS se encarga del resto. En este subcapítulo entenderás cómo funciona ese modelo.

El cambio de mentalidad: del servidor a la función

Recordemos lo que has hecho hasta ahora con EC2 (Capítulo 4) y los Auto Scaling Groups (Capítulo 13): te preocupabas de servidores. Aunque AWS gestionara el hardware, tenías que pensar en cuántas instancias, qué tipo, cómo escalarlas, cómo repararlas.

Con Lambda, la unidad ya no es el servidor: es la función. Tú subes un trozo de código (una función), y AWS lo ejecuta cuando hace falta. No hay servidor que gestionar. De ahí el nombre «serverless» (sin servidor): no es que no haya servidores, es que no son tu problema; AWS los pone y los quita por ti, de forma invisible.

Aclaración importante: «serverless» no significa «sin servidores». Los servidores existen, pero están totalmente ocultos y gestionados por AWS. Tú no los ves, no los configuras y no pagas por tenerlos encendidos esperando.

Cómo funciona Lambda: ejecución bajo demanda

El modelo de Lambda es sencillo de entender con una idea: tu código solo se ejecuta cuando ocurre algo, y solo durante el tiempo que tarda en hacer su trabajo.

   Llega un evento (una petición, un archivo subido, un mensaje...)
        │
        ▼
   AWS arranca tu función ──► ejecuta tu código ──► devuelve el resultado
        │
        ▼
   Termina: AWS «apaga» todo. No hay nada encendido esperando.

Comparémoslo con un servidor tradicional:

  • Un servidor EC2 está siempre encendido, esperando peticiones. Pagas por todo el tiempo que está encendido, aunque no llegue ninguna petición.
  • Una función Lambda solo «existe» cuando hay trabajo. Si nadie la invoca, no se ejecuta y no pagas nada.

Analogía: un servidor es como tener un taxi con el motor encendido esperando todo el día en la puerta: pagas la gasolina aunque no vayas a ningún sitio. Lambda es como pedir un taxi por app: aparece justo cuando lo necesitas, te lleva, y solo pagas ese trayecto. El resto del tiempo, no pagas nada.

Las tres grandes ventajas

  1. No gestionas servidores

No hay sistema operativo que parchear, ni instancias que dimensionar, ni que reparar. AWS se encarga de todo el «por debajo». Tú solo te ocupas de tu código.

  1. Escalado automático e instantáneo

Si llega 1 petición, AWS ejecuta 1 función. Si llegan 1.000 a la vez, AWS ejecuta 1.000 funciones en paralelo, automáticamente. No configuras Auto Scaling Groups ni políticas (Capítulo 13): el escalado es inmediato y transparente, lo gestiona AWS.

1 petición    → 1 ejecución de Lambda
1.000 a la vez → 1.000 ejecuciones en paralelo (automático)
0 peticiones   → 0 ejecuciones (y 0 coste)

  1. Pagas solo por lo que usas

Esta es la ventaja económica estrella. Pagas por el número de ejecuciones y por el tiempo que tarda cada una (en milisegundos). Si tu función no se ejecuta, no pagas nada. Esto puede abaratar enormemente las cargas de trabajo intermitentes o impredecibles.

¿Cómo es una función Lambda por dentro?

Una función Lambda es, básicamente, una función en tu lenguaje favorito (Python, Node.js, Java, Go...) con una forma concreta: recibe un evento de entrada y devuelve una respuesta. Aquí un ejemplo simple en Python:

def handler(event, context):
    nombre = event.get("nombre", "mundo")
    return {
        "mensaje": f"¡Hola, {nombre}!"
    }
  • event: los datos de entrada (qué desencadenó la función y con qué información).
  • context: información sobre la ejecución (cuánto tiempo queda, identificadores...).
  • Lo que return devuelve es la respuesta.

AWS llama a esta función cada vez que ocurre el evento que la dispara. No te preocupas de dónde se ejecuta ni de cuántas copias hay.

Cuándo encaja Lambda (y cuándo no)

Lambda brilla en muchísimos escenarios, pero no es para todo:

Encaja muy bien con Lambda Mejor con servidores/contenedores
Tareas cortas y puntuales Procesos muy largos (minutos/horas)
Tráfico intermitente o impredecible Tráfico constante y altísimo 24/7
Procesar eventos (un archivo subido, un mensaje) Aplicaciones con estado en memoria persistente
APIs y backends ligeros Necesidades de control fino del entorno

Veremos los límites y antipatrones con detalle en el subcapítulo 14.5. Por ahora, quédate con la idea general.

Lo que debes recordar

  • Lambda cambia la unidad de trabajo: del servidor a la función. Subes código y AWS lo ejecuta; no gestionas servidores.
  • Serverless no significa «sin servidores», sino que los servidores son invisibles y gestionados por AWS: no son tu problema.
  • El modelo es bajo demanda: tu código solo se ejecuta cuando ocurre un evento, y solo durante el tiempo que tarda. Si no se invoca, no se ejecuta.
  • Tres ventajas: no gestionas servidores, escalado automático e instantáneo (1 o 1.000 ejecuciones en paralelo), y pagas solo por lo que usas (si no se ejecuta, no pagas).
  • Una función recibe un evento de entrada y devuelve una respuesta; encaja en tareas cortas, tráfico intermitente y procesamiento de eventos.

En el siguiente subcapítulo veremos qué puede disparar una función Lambda: los triggers (API Gateway, S3, DynamoDB, SQS...).

Cloud, AWS & Terraform — De cero a experto

Capítulo 1 · Qué es el cloud computing

Capítulo 2 · El mercado cloud y los grandes proveedores

Capítulo 3 · Regiones, zonas de disponibilidad y edge

Capítulo 4 · Cómputo: EC2

Capítulo 5 · Almacenamiento: S3

Capítulo 6 · Redes: VPC

Capítulo 7 · Identidad y acceso: IAM

Capítulo 8 · Bases de datos gestionadas

Capítulo 9 · Por qué Infraestructura como Código

Capítulo 10 · HCL: el lenguaje de Terraform

Capítulo 11 · Providers y estado

Capítulo 12 · Tu primera infraestructura real en Terraform

Capítulo 13 · Balanceo de carga y autoescalado

Capítulo 14 · Serverless con Lambda

Capítulo 15 · Mensajería y eventos

Capítulo 16 · Entrega de contenido y DNS

Capítulo 17 · Contenedores en AWS

Capítulo 18 · Módulos: reutilización y composición

Capítulo 19 · Workspaces y gestión de entornos

Capítulo 20 · Backends remotos y locking

Capítulo 21 · Testing de infraestructura

Capítulo 22 · Terraform en CI/CD

Capítulo 23 · Seguridad en profundidad

Capítulo 24 · Observabilidad: logs, métricas y trazas

Capítulo 25 · Optimización de costes

Capítulo 26 · Alta disponibilidad y disaster recovery

Capítulo 27 · Well-Architected Framework de AWS

Capítulo 28 · Arquitecturas serverless a escala

Capítulo 29 · Plataformas de datos en AWS

Capítulo 30 · Multi-cuenta y landing zones

Capítulo 31 · Platform Engineering e Internal Developer Platform

Capítulo 32 · Certificaciones AWS relevantes

Capítulo 33 · Proyectos para consolidar lo aprendido

Capítulo 34 · Recursos y comunidad

© Copyright 2024. Todos los derechos reservados