Benvingut al món serverless, un dels canvis de mentalitat més grans del núvol. Fins ara sempre hi havia un servidor pel mig: l'engegaves, el configuraves, l'escalaves, el reparaves. Amb AWS Lambda t'oblides de tot això: només escrius el codi que vols executar, i AWS s'encarrega de la resta. En aquest subcapítol entendràs com funciona aquest model.

El canvi de mentalitat: del servidor a la funció

Recordem el que has fet fins ara amb EC2 (Capítol 4) i els Auto Scaling Groups (Capítol 13): et preocupaves de servidors. Encara que AWS gestionés el maquinari, tu havies de pensar en quantes instàncies, quin tipus, com escalar-les, com reparar-les.

Amb Lambda, la unitat ja no és el servidor: és la funció. Tu puges un tros de codi (una funció), i AWS l'executa quan cal. No hi ha servidor per gestionar. D'aquí el nom «serverless» (sense servidor): no és que no hi hagi servidors, és que no són el teu problema; AWS els posa i els treu per tu, de manera invisible.

Aclariment important: «serverless» no vol dir «sense servidors». Els servidors existeixen, però estan totalment ocults i gestionats per AWS. Tu no els veus, no els configures i no pagues per tenir-los encesos esperant.

Com funciona Lambda: execució sota demanda

El model de Lambda és senzill d'entendre amb una idea: el teu codi només s'executa quan passa alguna cosa, i només durant el temps que triga a fer la seva feina.

   Arriba un esdeveniment (una petició, un fitxer pujat, un missatge...)
        │
        ▼
   AWS arrenca la teva funció ──► executa el teu codi ──► retorna el resultat
        │
        ▼
   Acaba: AWS «apaga» tot. No hi ha res encès esperant.

Comparem-ho amb un servidor tradicional:

  • Un servidor EC2 està sempre encès, esperant peticions. Pagues per tot el temps que està encès, encara que no arribi cap petició.
  • Una funció Lambda només «existeix» quan hi ha feina. Si ningú la invoca, no s'executa i no pagues res.

Analogia: un servidor és com tenir un taxi amb el motor encès esperant tot el dia a la porta: pagues la benzina encara que no vagis enlloc. Lambda és com demanar un taxi per app: apareix just quan el necessites, et porta, i només pagues aquell trajecte. La resta del temps, no pagues res.

Els tres grans avantatges

  1. No gestiones servidors

No hi ha sistema operatiu per parchejar, ni instàncies per dimensionar, ni per reparar. AWS s'encarrega de tot el «per sota». Tu només t'ocupes del teu codi.

  1. Escalat automàtic i instantani

Si arriba 1 petició, AWS executa 1 funció. Si n'arriben 1.000 alhora, AWS executa 1.000 funcions en paral·lel, automàticament. No configures Auto Scaling Groups ni polítiques (Capítol 13): l'escalat és immediat i transparent, el gestiona AWS.

1 petició    → 1 execució de Lambda
1.000 alhora → 1.000 execucions en paral·lel (automàtic)
0 peticions  → 0 execucions (i 0 cost)

  1. Pagues només pel que fas servir

Aquesta és l'avantatge econòmica estrella. Pagues pel nombre d'execucions i pel temps que triga cadascuna (en mil·lisegons). Si la teva funció no s'executa, no pagues res. Això pot abaratir enormement les càrregues de treball intermitents o imprevisibles.

Com és una funció Lambda per dins?

Una funció Lambda és, bàsicament, una funció en el teu llenguatge preferit (Python, Node.js, Java, Go...) amb una forma concreta: rep un esdeveniment d'entrada i retorna una resposta. Aquí un exemple simple en Python:

def handler(event, context):
    nom = event.get("nombre", "món")
    return {
        "missatge": f"Hola, {nom}!"
    }
  • event: les dades d'entrada (què ha desencadenat la funció i amb quina informació).
  • context: informació sobre l'execució (quant temps queda, identificadors...).
  • El que retorna return és la resposta.

AWS crida aquesta funció cada vegada que passa l'esdeveniment que la dispara. No t'has de preocupar d'on s'executa ni de quantes còpies hi ha.

Quan encaixa Lambda (i quan no)

Lambda brilla en moltíssims escenaris, però no és per a tot:

Encaixa molt bé amb Lambda Millor amb servidors/contenidors
Tasques curtes i puntuals Processos molt llargs (minuts/hores)
Trànsit intermitent o imprevisible Trànsit constant i altíssim 24/7
Processar esdeveniments (un fitxer pujat, un missatge) Aplicacions amb estat en memòria persistent
APIs i backends lleugers Necessitats de control fi de l'entorn

Veurem els límits i antipatrones amb detall al subcapítol 14.5. Per ara, queda't amb la idea general.

El que has de recordar

  • Lambda canvia la unitat de treball: del servidor a la funció. Puges codi i AWS l'executa; no gestiones servidors.
  • Serverless no vol dir «sense servidors», sinó que els servidors són invisibles i gestionats per AWS: no són el teu problema.
  • El model és sota demanda: el teu codi només s'executa quan passa un esdeveniment, i només durant el temps que triga. Si no s'invoca, no s'executa.
  • Tres avantatges: no gestiones servidors, escalat automàtic i instantani (1 o 1.000 execucions en paral·lel), i pagues només pel que fas servir (si no s'executa, no pagues).
  • Una funció rep un esdeveniment d'entrada i retorna una resposta; encaixa en tasques curtes, trànsit intermitent i processament d'esdeveniments.

En el següent subcapítol veurem què pot disparar una funció Lambda: els triggers (API Gateway, S3, DynamoDB, SQS...).

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats