Ja saps com els usuaris troben el teu web (DNS i Route 53). Ara veurem com fer que el teu contingut els arribi ràpid, siguin on siguin al món. Aquesta és la missió de CloudFront, la xarxa de distribució de contingut (CDN) d’AWS. Ja la vam esmentar en parlar de les edge locations al Capítol 3; ara l’entenem a fons.
El problema: la distància afegeix lentitud
Imagina que el teu servidor és a Irlanda (Capítol 3) i un usuari et visita des del Japó. Cada cop que demana alguna cosa, la petició ha de creuar mig món i tornar. Encara que viatgi a la velocitat de la llum, aquesta distància afegeix latència (retard): el web carrega lent per a aquest usuari.
Usuari al Japó ──── (mig planeta) ────► Servidor a Irlanda
◄──── (i tornada) ─────────
= lent per a l’usuari japonèsLa solució: una CDN (xarxa de distribució de contingut)
Una CDN (Content Delivery Network) resol això acostant el contingut als usuaris. En lloc que tothom arribi fins al teu servidor llunyà, la CDN guarda còpies del teu contingut en molts punts repartits pel món (les edge locations del subcapítol 3.3). Cada usuari rep el contingut des del punt més proper a ell.
┌── Edge a Tòquio ──► usuaris del Japó (ràpid) El teu servidor ┼── Edge a Madrid ─► usuaris d’Espanya (ràpid) (origen) └── Edge a São Paulo ► usuaris del Brasil (ràpid)
CloudFront és la CDN d’AWS, amb centenars d’edge locations arreu del planeta.
Analogia: sense CDN és com tenir una sola botiga en una ciutat: tots els clients del país han de viatjar fins allà. Amb CDN és com obrir sucursals a cada ciutat: cada client va a la més propera. Molt més ràpid per a tothom.
Els conceptes clau de CloudFront
Distribució (distribution)
Una distribució és la configuració de CloudFront per al teu contingut: defineix d’on surt el contingut (l’origen), com es cacheja, quin domini fa servir, etc. És la «unitat» que crees a CloudFront.
Origin (origen)
L’origin és la font original del teu contingut, d’on CloudFront l’agafa la primera vegada. Pot ser:
- Un bucket de S3 (molt comú per a webs estàtiques, recorda el subcapítol 5.5).
- Un balancejador de càrrega (Capítol 13) davant dels teus servidors.
- Qualsevol servidor web, fins i tot fora d’AWS.
Memòria cau: el cor de CloudFront
La memòria cau és el que fa màgica una CDN. El primer cop que algú en una regió demana un fitxer, CloudFront el porta de l’origen i guarda una còpia a l’edge location propera. Les següents peticions d’aquella zona es serveixen directament des de la còpia, sense molestar l’origen.
1a petició (des del Japó): Usuari → Edge Tòquio (no la té) → Origen Irlanda → guarda còpia → usuari (lenta només aquesta vegada) 2a petició i següents (des del Japó): Usuari → Edge Tòquio (ja té la còpia!) → usuari (rapidíssima, no toca l’origen)
Doble benefici:
- Rapidesa: els usuaris reben el contingut des de prop.
- Menys càrrega a l’origen: la majoria de peticions les atén la memòria cau, no el teu servidor. El teu origen treballa molt menys (i pot ser més petit i barat).
TTL: quant dura una còpia a la memòria cau
Una pregunta important: quant temps guarda CloudFront una còpia abans de tornar-la a demanar a l’origen? Això ho controla el TTL (Time To Live), el «temps de vida» de la memòria cau.
- TTL llarg: la còpia dura molt. Màxima rapidesa i mínim treball de l’origen, però els canvis triguen a reflectir-se.
- TTL curt: la còpia es refresca sovint. Els canvis es veuen abans, però l’origen treballa més.
Regla pràctica: contingut que no canvia (imatges, CSS, vídeos, fitxers d’una web estàtica) → TTL llarg. Contingut que canvia sovint → TTL curt o sense memòria cau.
Invalidació: forçar el refresc
I si canvies un fitxer i vols que s’actualitzi ja, sense esperar el TTL? Pots fer una invalidació: li dius a CloudFront «esborra aquesta còpia de totes les edge locations», i la tornarà a portar de l’origen en la següent petició. Útil després de publicar una nova versió del teu web.
Quin contingut se’n beneficia més?
CloudFront brilla especialment amb contingut estàtic: imatges, vídeos, fulls d’estil (CSS), JavaScript, fitxers descarregables i webs estàtiques (S3). Aquest contingut és igual per a tots els usuaris, així que cachejar-lo és ideal. També accelera contingut dinàmic, tot i que aquí els guanys són menors.
Exemple del món real: un diari digital amb lectors arreu del món posa CloudFront davant del seu web. Les fotos, els vídeos i el disseny es serveixen des de l’edge location de cada lector (rapidíssim), i el servidor del diari només s’encarrega de generar els articles nous. Resultat: el web vola per a tothom i el servidor aguanta milions de visites sense saturar-se.
El que has de recordar
- CloudFront és la CDN d’AWS: acosta el teu contingut als usuaris guardant còpies a edge locations arreu del món, reduint la latència.
- Una distribució és la teva configuració de CloudFront; l’origen és la font original (un bucket S3, un balancejador, etc.).
- La memòria cau és la clau: la primera petició porta el contingut de l’origen i guarda una còpia; les següents es serveixen des de la còpia. Doble benefici: rapidesa + menys càrrega a l’origen.
- El TTL defineix quant dura una còpia (llarg per a contingut estàtic, curt per al que canvia); la invalidació força el refresc immediat.
- Brilla amb contingut estàtic (imatges, vídeos, CSS, JS, webs S3), tot i que també accelera el dinàmic.
Al següent subcapítol veurem com fer el teu lloc segur amb HTTPS usant certificats SSL/TLS gratuïts amb ACM.
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
