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ès

La 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.
   Usuaris ──► CloudFront (edge) ──► Origen (S3 o balancejador)
                  (les còpies)         (la font original)

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

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