Ya sabes cómo los usuarios encuentran tu web (DNS y Route 53). Ahora veremos cómo hacer que tu contenido les llegue rápido, estén donde estén en el mundo. Esa es la misión de CloudFront, la red de distribución de contenido (CDN) de AWS. Ya la asomamos al hablar de las edge locations en el Capítulo 3; ahora la entendemos a fondo.

El problema: la distancia añade lentitud

Imagina que tu servidor está en Irlanda (Capítulo 3) y un usuario te visita desde Japón. Cada vez que pide algo, la petición tiene que cruzar medio mundo y volver. Aunque viaje a la velocidad de la luz, esa distancia añade latencia (retraso): la web carga lenta para ese usuario.

Usuario en Japón ──── (medio planeta) ────► Servidor en Irlanda
                 ◄──── (y vuelta) ─────────
                 = lento para el usuario japonés

La solución: una CDN (red de distribución de contenido)

Una CDN (Content Delivery Network) resuelve esto acercando el contenido a los usuarios. En lugar de que todos lleguen hasta tu servidor lejano, la CDN guarda copias de tu contenido en muchos puntos repartidos por el mundo (las edge locations del subcapítulo 3.3). Cada usuario recibe el contenido desde el punto más cercano a él.

            ┌── Edge en Tokio ──► usuarios de Japón (rápido)
Tu servidor ┼── Edge en Madrid ─► usuarios de España (rápido)
 (origen)   └── Edge en São Paulo ► usuarios de Brasil (rápido)

CloudFront es la CDN de AWS, con cientos de edge locations en todo el planeta.

Analogía: sin CDN es como tener una sola tienda en una ciudad: todos los clientes del país tienen que viajar hasta allí. Con CDN es como abrir sucursales en cada ciudad: cada cliente va a la más cercana. Mucho más rápido para todos.

Los conceptos clave de CloudFront

Distribución (distribution)

Una distribución es la configuración de CloudFront para tu contenido: define de dónde sale el contenido (el origen), cómo se cachea, qué dominio usa, etc. Es la «unidad» que creas en CloudFront.

Origin (origen)

El origin es la fuente original de tu contenido, de donde CloudFront lo coge la primera vez. Puede ser:

  • Un bucket de S3 (muy común para webs estáticas, recuerda el subcapítulo 5.5).
  • Un balanceador de carga (Capítulo 13) delante de tus servidores.
  • Cualquier servidor web, incluso fuera de AWS.
   Usuarios ──► CloudFront (edge) ──► Origin (S3 o balanceador)
                  (las copias)         (la fuente original)

Caché: el corazón de CloudFront

La caché es lo que hace mágica a una CDN. La primera vez que alguien en una región pide un archivo, CloudFront lo trae del origen y guarda una copia en la edge location cercana. Las siguientes peticiones de esa zona se sirven directamente desde la copia, sin molestar al origen.

1ª petición (desde Japón):
   Usuario → Edge Tokio (no la tiene) → Origin Irlanda → guarda copia → usuario
   (lenta solo esta vez)

2ª petición y siguientes (desde Japón):
   Usuario → Edge Tokio (¡ya tiene la copia!) → usuario
   (rapidísima, no toca el origen)

Doble beneficio:

  • Rapidez: los usuarios reciben el contenido desde cerca.
  • Menos carga en tu origen: la mayoría de peticiones las atiende la caché, no tu servidor. Tu origen trabaja mucho menos (y puede ser más pequeño y barato).

TTL: cuánto dura una copia en caché

Una pregunta importante: ¿cuánto tiempo guarda CloudFront una copia antes de volver a pedirla al origen? Eso lo controla el TTL (Time To Live), el «tiempo de vida» de la caché.

  • TTL largo: la copia dura mucho. Máxima rapidez y mínimo trabajo del origen, pero los cambios tardan en reflejarse.
  • TTL corto: la copia se refresca a menudo. Los cambios se ven antes, pero el origen trabaja más.

Regla práctica: contenido que no cambia (imágenes, CSS, vídeos, archivos de una web estática) → TTL largo. Contenido que cambia a menudo → TTL corto o sin caché.

Invalidación: forzar el refresco

¿Y si cambias un archivo y quieres que se actualice ya, sin esperar al TTL? Puedes hacer una invalidación: le dices a CloudFront «borra esta copia de todas las edge locations», y volverá a traerla del origen en la siguiente petición. Útil tras publicar una nueva versión de tu web.

¿Qué contenido se beneficia más?

CloudFront brilla especialmente con contenido estático: imágenes, vídeos, hojas de estilo (CSS), JavaScript, archivos descargables y webs estáticas (S3). Este contenido es igual para todos los usuarios, así que cachearlo es ideal. También acelera contenido dinámico, aunque ahí las ganancias son menores.

Ejemplo del mundo real: un periódico digital con lectores en todo el mundo pone CloudFront delante de su web. Las fotos, los vídeos y el diseño se sirven desde la edge location de cada lector (rapidísimo), y el servidor del periódico solo se encarga de generar los artículos nuevos. Resultado: la web vuela para todos y el servidor aguanta millones de visitas sin saturarse.

Lo que debes recordar

  • CloudFront es la CDN de AWS: acerca tu contenido a los usuarios guardando copias en edge locations por todo el mundo, reduciendo la latencia.
  • Una distribución es tu configuración de CloudFront; el origin es la fuente original (un bucket S3, un balanceador, etc.).
  • La caché es la clave: la primera petición trae el contenido del origen y guarda una copia; las siguientes se sirven desde la copia. Doble beneficio: rapidez + menos carga en el origen.
  • El TTL define cuánto dura una copia (largo para contenido estático, corto para el que cambia); la invalidación fuerza el refresco inmediato.
  • Brilla con contenido estático (imágenes, vídeos, CSS, JS, webs S3), aunque también acelera el dinámico.

En el siguiente subcapítulo veremos cómo hacer tu sitio seguro con HTTPS usando certificados SSL/TLS gratuitos con ACM.

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