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
- 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.
- 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)
- 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
- 1.1 El model client-servidor tradicional
- 1.2 Problemes que venia a resoldre el núvol
- 1.3 On-premise vs cloud vs híbrid
- 1.4 Els tres models de servei: IaaS, PaaS, SaaS
- 1.5 Els cinc pilars del cloud (segons NIST)
- 1.6 Avantatges reals: elasticitat, pagament per ús, disponibilitat global
Capítol 2 · El mercat cloud i els grans proveïdors
- 2.1 AWS, Azure i GCP: diferències i quotes de mercat
- 2.2 Per què aprendre AWS primer
- 2.3 Conceptes que són universals entre proveïdors
Capítol 3 · Regions, zones de disponibilitat i edge
- 3.1 Què és una regió AWS i com triar-la
- 3.2 Availability Zones: alta disponibilitat des del disseny
- 3.3 Edge locations i CloudFront
- 3.4 Latència, resiliència i sobirania de dades
Capítol 4 · Càlcul: EC2
- 4.1 Instàncies: tipus, famílies i quan triar cadascuna
- 4.2 AMIs, key pairs i Security Groups
- 4.3 Cicle de vida d'una instància
- 4.4 Elastic IPs i Placement Groups
- 4.5 Savings Plans vs Reserved vs On-Demand vs Spot
Capítol 5 · Emmagatzematge: S3
- 5.1 Buckets, objectes i claus
- 5.2 Classes d'emmagatzematge (Standard, IA, Glacier…)
- 5.3 Versionat i cicle de vida d'objectes
- 5.4 Polítiques de bucket i ACLs
- 5.5 Hosting de llocs web estàtics
Capítol 6 · Xarxes: VPC
- 6.1 Què és una VPC i per què la necessites
- 6.2 Subxarxes públiques i privades
- 6.3 Internet Gateway i NAT Gateway
- 6.4 Route Tables i Network ACLs
- 6.5 VPC Peering i endpoints
Capítol 7 · Identitat i accés: IAM
- 7.1 Usuaris, grups, rols i polítiques
- 7.2 El principi de mínim privilegi
- 7.3 Polítiques basades en identitat vs en recurs
- 7.4 MFA i credencials temporals (STS)
- 7.5 Bones pràctiques de seguretat IAM
Capítol 8 · Bases de dades gestionades
- 8.1 RDS: motors, Multi-AZ i rèpliques de lectura
- 8.2 Aurora i els seus avantatges sobre RDS vanilla
- 8.3 DynamoDB: model clau-valor / documents
- 8.4 ElastiCache per a memòria cau en memòria
- 8.5 Quan utilitzar cada tipus de base de dades
Capítol 9 · Per què Infraestructura com a Codi
- 9.1 Problemes del provisionament manual
- 9.2 IaC declaratiu vs imperatiu
- 9.3 Terraform vs CloudFormation vs Pulumi vs CDK
- 9.4 El cicle plan → apply → destroy
Capítol 10 · HCL: el llenguatge de Terraform
- 10.1 Blocs resource, variable, output, locals
- 10.2 Tipus de dades: string, number, bool, list, map, object
- 10.3 Expressions, referències i funcions built-in
- 10.4 Condicionals i bucles (count, for_each, for)
Capítol 11 · Providers i estat
- 11.1 Com funciona el provider d'AWS
- 11.2 El fitxer terraform.tfstate i la seva importància
- 11.3 State local vs state remot (S3 + DynamoDB)
- 11.4 Comandes essencials: init, plan, apply, destroy, fmt, validate
Capítol 12 · La teva primera infraestructura real amb Terraform
- 12.1 Crear una VPC amb subxarxes des de zero
- 12.2 Posar en marxa una instància EC2 pública
- 12.3 Associar un Security Group i una Elastic IP
- 12.4 Outputs i referències entre recursos
- 12.5 Flux de treball en equip: PR review de plans
Capítol 13 · Balanceig de càrrega i autoescalat
- 13.1 Application Load Balancer vs Network Load Balancer
- 13.2 Target Groups, listeners i regles
- 13.3 Auto Scaling Groups: polítiques i mètriques
- 13.4 Warm pools i lifecycle hooks
Capítol 14 · Serverless amb Lambda
- 14.1 El model d'execució de Lambda
- 14.2 Triggers: API Gateway, S3, DynamoDB Streams, SQS
- 14.3 Gestió de dependències i capes (Layers)
- 14.4 Cold starts i estratègies per reduir-los
- 14.5 Límits i antipatrones
Capítol 15 · Missatgeria i esdeveniments
- 15.1 SQS: cues estàndard vs FIFO, DLQ
- 15.2 SNS: topics, subscripcions, fan-out
- 15.3 EventBridge: event buses i regles
- 15.4 Patrons: pub/sub, desacoblament, saga
Capítol 16 · Lliurament de contingut i DNS
- 16.1 Route 53: tipus de registres i routing policies
- 16.2 CloudFront: distribucions, memòries cau i origins
- 16.3 ACM: certificats SSL/TLS gratuïts
- 16.4 WAF integrat amb CloudFront
Capítol 17 · Contenidors a AWS
- 17.1 Docker: repàs exprés de conceptes clau
- 17.2 ECR: registre privat d'imatges
- 17.3 ECS: task definitions, services, Fargate vs EC2
- 17.4 EKS: quan Kubernetes i quan no
Capítol 18 · Mòduls: reutilització i composició
- 18.1 Anatomia d'un mòdul Terraform
- 18.2 Variables d'entrada, outputs i dependències
- 18.3 Mòduls locals vs mòduls del Terraform Registry
- 18.4 Versionat de mòduls amb Git tags
- 18.5 Disseny de mòduls genèrics vs específics de domini
Capítol 19 · Workspaces i gestió d'entorns
- 19.1 Workspaces de Terraform: casos d'ús i limitacions
- 19.2 Estratègia de directoris per entorn (dev/stg/prod)
- 19.3 Terragrunt: DRY per a configuracions d'entorn
- 19.4 Variables d'entorn i fitxers .tfvars
Capítol 20 · Backends remots i locking
- 20.1 Configurar S3 + DynamoDB com a backend
- 20.2 State locking: evitar corrupció en equip
- 20.3 Migració d'estat entre backends
- 20.4 terraform import: portar recursos existents a l'estat
Capítol 21 · Testing d'infraestructura
- 21.1 Terraform validate i fmt en CI
- 21.2 Checkov i tfsec: anàlisi de seguretat estàtica
- 21.3 Terratest: tests d'integració en Go
- 21.4 Contract testing entre mòduls
Capítol 22 · Terraform en CI/CD
- 22.1 Pipeline bàsic: lint → plan → apply a GitHub Actions
- 22.2 Atlantis: GitOps per a Terraform
- 22.3 Terraform Cloud / HCP Terraform
- 22.4 Drift detection i reconciliació automàtica
Capítol 23 · Seguretat en profunditat
- 23.1 AWS Organizations i Service Control Policies
- 23.2 AWS Config: compliment continu
- 23.3 GuardDuty: detecció d'amenaces
- 23.4 Security Hub: visió centralitzada
- 23.5 KMS: gestió de claus i rotació
- 23.6 Secrets Manager vs Parameter Store
Capítol 24 · Observabilitat: logs, mètriques i traces
- 24.1 CloudWatch Logs, mètriques i alarmes
- 24.2 CloudWatch Dashboards i Contributor Insights
- 24.3 X-Ray: traçat distribuït
- 24.4 OpenTelemetry a AWS
- 24.5 Managed Grafana i Managed Prometheus
Capítol 25 · Optimització de costos
- 25.1 AWS Cost Explorer i pressupostos amb alertes
- 25.2 Trusted Advisor i Compute Optimizer
- 25.3 Rightsizing: com detectar sobredimensionament
- 25.4 Savings Plans vs Reserved Instances: decisió estratègica
- 25.5 FinOps: cultura i processos per controlar la despesa
Capítol 26 · Alta disponibilitat i disaster recovery
- 26.1 RTO i RPO: definir els objectius
- 26.2 Estratègies: backup/restore, pilot light, warm standby, multi-site
- 26.3 Route 53 health checks i failover automàtic
- 26.4 AWS Backup: política centralitzada de còpies
Capítol 27 · Well-Architected Framework d'AWS
- 27.1 Els sis pilars: excel·lència operacional, seguretat, fiabilitat, eficiència de rendiment, optimització de costos, sostenibilitat
- 27.2 Well-Architected Tool: revisions formals
- 27.3 Com aplicar el framework en decisions de disseny
Capítol 28 · Arquitectures serverless a escala
- 28.1 Event-driven architecture amb Lambda + EventBridge
- 28.2 Saga pattern per a transaccions distribuïdes
- 28.3 Step Functions: orquestració de workflows complexos
- 28.4 Lambda@Edge i CloudFront Functions
Capítol 29 · Plataformes de dades a AWS
- 29.1 Data Lake amb S3, Glue i Athena
- 29.2 Kinesis Data Streams i Firehose per a streaming
- 29.3 Redshift: data warehousing a escala
- 29.4 Lake Formation: govern del dada
Capítol 30 · Multi-compte i landing zones
- 30.1 Per què separar workloads en comptes diferents
- 30.2 AWS Control Tower i Account Factory
- 30.3 Gestió centralitzada de logs i seguretat
- 30.4 Terraform a escala multi-compte amb mòduls compartits
Capítol 31 · Platform Engineering i Internal Developer Platform
- 31.1 Golden paths i abstraccions sobre Terraform
- 31.2 Service Catalog d'AWS
- 31.3 Backstage com a portal de desenvolupadors
- 31.4 Mòduls Terraform com a producte intern
Capítol 32 · Certificacions AWS rellevants
- 32.1 Cloud Practitioner: val la pena?
- 32.2 Solutions Architect Associate → Professional
- 32.3 DevOps Engineer Professional
- 32.4 Specialty: Security, Database, Networking
- 32.5 HashiCorp Terraform Associate
Capítol 33 · Projectes per consolidar el que s'ha après
- 33.1 Projecte 1: blog serverless (S3 + CloudFront + Lambda + DynamoDB)
- 33.2 Projecte 2: API REST amb ECS Fargate + RDS + ALB
- 33.3 Projecte 3: plataforma de dades amb Glue + Athena + Redshift
- 33.4 Projecte 4: landing zone multi-compte amb Terraform i Control Tower
