coldwa.st
All guidesProgrammingWebDataToolsDatabasesHaskellConceptsCabal & buildsToolchainCompilerPerformanceEditor & HLS

Programacion · web · rendimiento

Que es una CDN?

Por ColdwastActualizado 18 jul. 20268 min de lectura#cdn#rendimiento#web
Un mapa del mundo con nodos de red conectados que representan una red de distribucion global
Una CDN guarda copias de tu contenido en servidores por todo el mundo, de modo que cada visitante es atendido desde una maquina cercana a el.

Una CDN (content delivery network, red de distribucion de contenido) es un conjunto de servidores repartidos por muchas ubicaciones que guardan copias de tu contenido estatico - imagenes, CSS, JavaScript, fuentes, videos - y sirven a cada visitante desde un servidor geograficamente cercano. El objetivo es simple: acortar la distancia que debe recorrer una peticion, para que las paginas carguen mas rapido y tu servidor principal trabaje menos. Si tu sitio esta alojado en una sola ciudad, un visitante al otro lado del planeta ya no tiene que cruzar el mundo para cada archivo.

El problema que resuelve

Cuando tu sitio vive en un solo servidor, cada peticion - de cada pais - tiene que llegar a esa unica maquina y volver. La distancia cuesta tiempo: cuanto mas lejos esta el visitante, mas latencia se acumula, y mas cargado queda tu servidor a medida que crece el trafico. Una CDN responde a ambos problemas colocando copias de tus archivos mas cerca de la gente y quitando la mayor parte de la carga de peticiones de tu origen.

Servidores edge y puntos de presencia

Los servidores que una CDN usa para cachear y servir contenido suelen llamarse servidores edge, situados en el "borde" (edge) de la red, cerca de los usuarios, en lugar de en tu origen central. Grupos de estos se colocan en centros de datos por todo el mundo, a veces llamados puntos de presencia (PoP). Cuando alguien pide un archivo, la CDN lo dirige a un servidor edge cercano en lugar de a tu origen. Como ese servidor esta cerca, el viaje de ida y vuelta es mas corto y la entrega mas rapida.

Cache hit, cache miss y el origen

El mecanismo central de una CDN es la cache. La primera vez que se le pide a un servidor edge un archivo que no tiene, eso es un cache miss: el edge obtiene el archivo desde tu servidor de origen, lo envia al visitante y guarda una copia. El siguiente visitante en ese mismo edge obtiene un cache hit - el archivo ya esta ahi y se sirve de inmediato, sin tocar el origen en absoluto.

peticion -> servidor edge mas cercano
  cache HIT  -> sirve la copia guardada (rapido, origen intacto)
  cache MISS -> obtiene del origen, sirve, luego guarda para la proxima

Por eso una CDN acelera la entrega y descarga el origen: una vez que el contenido esta cacheado en el edge, la mayoria de las peticiones se atienden sin llegar nunca a tu servidor. Ante un pico de trafico, la red edge absorbe el grueso de la carga.

Un servidor y un cable de red naranja con datos binarios
Servidores edge en centros de datos de todo el mundo guardan copias en cache de tu contenido, cerca de las personas que lo piden.

TTL e invalidacion: mantener la cache al dia

Una copia en cache no puede vivir para siempre, o los visitantes seguirian viendo una version antigua tras actualizar un archivo. Dos mecanismos se encargan de esto:

  • TTL (time to live): a cada elemento cacheado se le da una vida util, normalmente definida por cabeceras de cache HTTP como Cache-Control. Cuando el TTL expira, el edge trata el elemento como caducado y vuelve a comprobar el origen antes de servirlo de nuevo.
  • Invalidacion (purga): cuando despliegas un cambio y no puedes esperar al TTL, le dices a la CDN que descarte archivos concretos de la cache, de modo que la siguiente peticion obtenga la version fresca desde el origen. Un truco comun que evita cualquier purga es el cache busting - cambiar el nombre del archivo o anadir una version como parametro, por ejemplo style.abc123.css, para que se pida una URL nueva y fresca.

Contenido estatico vs contenido dinamico

Las CDN brillan con el contenido estatico: archivos iguales para todos y que cambian poco, como imagenes, hojas de estilo, scripts y descargas. Se cachean limpiamente y pueden servirse desde el edge durante mucho tiempo. El contenido dinamico - un panel personalizado, o una respuesta que depende de quien haya iniciado sesion - es mas dificil de cachear, porque la respuesta difiere en cada peticion. Las CDN modernas aun ayudan aqui con funciones como la reutilizacion de conexion y ejecutar pequenos fragmentos de logica en el edge, pero la ganancia clasica y mayor sigue siendo cachear los recursos estaticos cerca de los usuarios.

Que mas hace una CDN habitualmente

Ademas del cache, la mayoria de las CDN incluyen extras utiles. Suelen terminar el TLS (HTTPS) en el edge y aplicar compresion para que los archivos viajen mas pequenos y cifrados. Muchas tambien anaden proteccion frente a avalanchas de trafico y absorben la carga que de otro modo golpearia tu origen. Entre las CDN reales y muy usadas estan Cloudflare, Fastly y Akamai; para bibliotecas de codigo abierto, CDN publicas como jsDelivr sirven paquetes directamente desde una red edge global.

Donde encaja una CDN con tu hosting

Una CDN no reemplaza tu hosting - se coloca delante de el. Tu servidor o VPS sigue siendo el origen que guarda los archivos reales y ejecuta tu aplicacion; la CDN cachea y entrega copias de las partes cacheables. Tambien encaja de forma natural con un proxy inverso delante de tu app: el proxy enruta y termina el TLS en tu origen, mientras la CDN gestiona la capa edge global. Aun asi necesitas un hosting de origen solido debajo de todo.

FAQ

Reemplaza una CDN a mi hosting? No. Tu hosting es el origen que almacena los archivos reales y ejecuta tu app. Una CDN cachea y sirve copias de las partes estaticas cacheables desde servidores cercanos a tus visitantes. Necesitas ambos: un origen fiable mas la capa edge delante de el.

Cual es la diferencia entre un cache hit y un cache miss? Un hit significa que el servidor edge ya tiene el archivo pedido en cache y lo sirve de inmediato. Un miss significa que no lo tiene, asi que obtiene el archivo desde tu origen, lo sirve y guarda una copia para que la siguiente peticion sea un hit.

Que es el TTL? Time to live: cuanto tiempo se considera fresco un elemento cacheado, normalmente definido por cabeceras de cache HTTP. Cuando el TTL expira, el edge vuelve a comprobar el origen antes de servir el elemento de nuevo, de modo que las actualizaciones acaban llegando a todos.

Puede una CDN cachear contenido dinamico? En parte. El contenido que difiere segun el usuario es dificil de cachear directamente, pero las CDN aun lo aceleran con reutilizacion de conexion, compresion y logica en el edge. La ganancia mayor y mas simple sigue siendo cachear recursos estaticos como imagenes, CSS y JavaScript cerca de los usuarios.

Guia independiente, mantenida por la comunidad. coldwa.st es un sitio de recursos de programacion; este articulo es un texto explicativo original sobre las CDN a un nivel introductorio. Los mecanismos descritos (cache en el edge, cache hit y miss, TTL, invalidacion) son conceptos estandar de distribucion web; los productos nombrados son CDN muy conocidas citadas a modo de ilustracion.
Recomendado

El servidor de origen detras de tu CDN

Una CDN cachea copias de tu contenido, pero aun necesita un servidor de origen real que guarde los archivos fuente y ejecute tu app. Infomaniak - un proveedor suizo respetuoso con la privacidad - ofrece VPS y servidores cloud que puedes usar como ese origen, y luego pones una CDN delante para servir los recursos estaticos desde el edge.

Ver Infomaniak Cloud →

Enlace de afiliado - ayuda a mantener estas guias gratuitas.