CDN performance

Un beneficio fundamental de una CDN es su capacidad de entregar contenido de forma rápida y eficiente. Las optimizaciones de rendimiento de una CDN se pueden dividir en tres categorías. Explora la guía de CDN.

Metas de aprendizaje

Después de leer este artículo podrás:

  • Entender las formas en que una CDN mejora los tiempos de carga
  • Comparar las diferencias entre usar y no usar una CDN
  • Explorar los conceptos básicos del almacenamiento en caché de CDN
  • Aprender cómo una CDN reduce el tamaño de los archivos

Copiar el enlace del artículo

¿Cómo mejora una CDN los tiempos de carga?

Prácticamente, todos en Internet han experimentado los beneficios de una Red de distribución de contenido (CDN). La mayoría de las empresas de tecnología, incluidas las empresas como Google, Apple y Microsoft, utilizan una CDN para reducir la latencia en la carga de contenido de la página web.

Por lo general, una CDN colocará servidores en los puntos de intercambio entre las diferentes redes. Estos puntos de intercambio de Internet (IXP) son las ubicaciones principales en las que los diferentes proveedores de Internet se vinculan para proporcionar acceso mutuo a los recursos disponibles en sus diferentes redes. Además de los IXP, una CDN colocará servidores en centros de datos en ubicaciones de todo el mundo en áreas de alto tráfico y ubicaciones estratégicas para poder movilizar el tráfico lo más rápido posible.

Un beneficio primario de una CDN es su capacidad de entregar contenido de forma rápida y eficiente. Las optimizaciones de rendimiento de una CDN se pueden dividir en tres categorías:

  1. Reducción de distancia: reduce la distancia física entre un cliente y los datos solicitados
  2. Optimizaciones de hardware/software: mejora el rendimiento de la infraestructura del lado del servidor, utilizando, por ejemplo, unidades de estado sólido y un equilibrio de carga eficiente.
  3. Transferencia de datos reducida: emplea técnicas para reducir el tamaño de los archivos de modo que las cargas iniciales de la página se produzcan rápidamente

Para comprender los beneficios de usar una CDN, exploremos cómo se ve una transferencia de datos cliente/servidor normal sin una CDN.

¿Cuál es la diferencia en los tiempos de carga con y sin una CDN?

Imaginemos que alguien en Nueva York necesita acceder a un sitio web que está alojado en un servidor en Singapur. La separación física entre estas ubicaciones es sustancial, con una distancia física de aproximadamente 9.520 millas (15.320 kilómetros).

Distancia sin una CDN

Si un servidor que aloja el contenido del sitio web (servidor de origen) se encuentra en Singapur, cada solicitud para cada activo de la página web debe viajar de Nueva York a Singapur y viceversa. Al igual que tomar un vuelo internacional con muchas conexiones, cada solicitud debe viajar a través de una serie de enrutadores a lo largo de su viaje, desde el punto A al punto B.

Si deseas ver un ejemplo real de cuántas conexiones diferentes (saltos) necesita tu computadora para llegar a un servicio web en particular desde tu ubicación actual, explora traceroute en una computadora de escritorio.

Mejoras en el tiempo de tránsito de una CDN

Because the request from New York to Singapore needs to pass through each of the router locations along the way, the amount of time (latency) is increased both by the total distance and the time it takes each router to process the request. Once the origin server processes the request and responds to the client making the request, it then sends information back through a similar sequence of routers before it returns to New York. The measurement of this total round trip is referred to in telecommunications as RTT for “round trip time.” Ignoring for the moment available bandwidth and potential network congestion, let’s walk through an example of the latency factors.

Para fines ilustrativos, digamos:

  • Una solicitud tarda 250 ms en ir de Nueva York a Singapur.
  • El establecimiento de una conexión TCP/IP agregará 3 instancias de 250 ms de latencia.
  • La página web requiere 5 activos únicos, que consisten en imágenes, archivos JavaScript y la misma página web.

Veamos un aproximado de cuánto tiempo tardará en cargarse esta página web:

  • 750 ms: la conexión TCP/IP se realiza entre el cliente en Nueva York y el servidor de origen en Singapur.
  • 250 ms: la solicitud HTTP para la página web viaja de Nueva York a Singapur.
  • 250 ms: el solicitante en Nueva York recibe una respuesta del servidor de origen en Singapur con un código de estado 200 y la página web, incluidos todos los activos adicionales necesarios.
  • 250 ms: cada uno de los 5 activos son solicitados por el cliente en Nueva York.
  • 1.500 ms: los cinco activos se entregan al cliente de forma asincrónica desde el servidor de origen en Singapur.

En este sencillo ejemplo, el tiempo total de tránsito para que se cargue esta página web es de aproximadamente 3.000 ms.

Como puedes ver, cada vez que se realiza una solicitud y se envía una respuesta, se atraviesa la ruta completa entre el cliente en Nueva York y el origen en Singapur. A medida que los sitios web se vuelven más grandes y requieren una mayor cantidad de activos, la latencia entre el punto A y el punto B sigue aumentando.

Repasemos el ejemplo de contenido alojado en Singapur servido a un cliente web en Nueva York, pero ahora el sitio de Singapur está usando una CDN con un servidor en Atlanta que contiene una copia almacenada en caché del sitio web estático:

  • Una solicitud tarda 50 ms en ir de Nueva York a Atlanta.
  • El establecimiento de una conexión TCP/IP agregará 3 instancias de 50 ms de latencia.
  • La página web requiere 5 activos únicos, que consisten en imágenes, archivos JavaScript y la misma página web.

Veamos un aproximado de cuánto tiempo tardará en cargarse esta página web al usar la CDN:

  • 150 ms: la conexión TCP/IP se realiza entre el cliente en Nueva York y el servidor de origen en Atlanta.
  • 50 ms: la solicitud HTTP GET para la página web viaja desde el cliente al servidor en el perímetro.
  • 50 ms: el cliente recibe una respuesta de la caché del servidor en el perímetro y la página web incluye una lista de todos los activos adicionales que aún se requieren.
  • 50 ms: cada uno de los 5 activos son solicitados por el cliente.
  • 800 ms: los cinco activos se entregan de forma asíncrona al cliente desde el servidor del perímetro.

El tiempo de tránsito total para que se cargue esta página web es de aproximadamente 1.100 ms.

Distancia de CDN optimizada

En este ejemplo, la reducción de la distancia entre el cliente y el contenido crea una mejora de 1.900 ms en la latencia del contenido estático, lo que reduce casi 2 segundos el tiempo de carga.

Mejora de la latencia de CDN

Al reducir la distancia total que debe atravesar todo el tráfico necesario, cada uno de los usuarios del sitio web está ahorrando una cantidad de tiempo de carga. Debido a que los usuarios comienzan a abandonar el sitio (rebotar) muy rápidamente a medida que aumentan los tiempos de espera, esta mejora representa no solo una mejor experiencia del usuario sino también un mayor tiempo de uso en la página.

¿Cómo carga contenido una CDN? ¿Qué es el almacenamiento en caché?

Como se mencionó anteriormente, normalmente cuando un cliente solicita un archivo de un servidor de origen, la solicitud debe ir ida y vuelta a ese servidor y viceversa. Una CDN mejora la latencia al extraer archivos de contenido estático del servidor de origen a la red CDN distribuida en un proceso denominado almacenamiento en caché. Algunas CDN tendrán funciones avanzadas que también permitirán el almacenamiento selectivo en caché de contenido dinámico. Una vez que los datos se almacenan en caché, la CDN envía el contenido al cliente desde el centro de datos de CDN más cercano.

Solicitud sin almacenamiento en caché de CDN
Solicitud con almacenamiento en caché de CDN

Después de que se ha realizado un protocolo de enlace de TCP, el equipo cliente realiza una solicitud HTTP a la red de CDN. Si el contenido aún no se ha almacenado en caché, la CDN primero descargará el contenido del origen mediante una solicitud adicional entre el servidor de origen y el servidor de perímetro de la CDN.

Estos son los 4 pasos durante un almacenamiento en caché de CDN típico:

  1. Cuando el usuario solicita una página web, la solicitud del usuario se enruta al servidor en el perímetro más cercano de la CDN.
  2. Luego, el servidor de perímetro realiza una solicitud al servidor de origen del contenido solicitado por el usuario.
  3. El origen responde a la solicitud del servidor de perímetro.
  4. Finalmente, el servidor de perímetro responde al cliente.
Solicitud de almacenamiento en caché de CDN

El valor de la proximidad de una CDN al cliente se produce después de que se ha realizado la solicitud inicial al servidor de origen. Una vez que los datos se han almacenado en caché desde el servidor de origen en la red de CDN, cada solicitud posterior del cliente solo necesita llegar hasta el servidor en el perímetro más cercano. Esto significa que si el servidor en el perímetro más cercano está más cerca que el servidor de origen, la latencia se puede reducir y el contenido se puede proporcionar mucho más rápido.

Respuesta de los servidores de caché de la CDN en el perímetro

Es importante tener en cuenta que actualmente no se incluye la cantidad de tiempo necesaria para descargar activos y procesar las solicitudes y respuestas. Hasta ahora, solo se está calculando el tiempo de tránsito necesario para transferir información entre estas dos ubicaciones. Otros factores de latencia importantes que exploraremos son la reducción de los datos, la velocidad del disco duro y la congestión de la red.

¿Cómo reduce una CDN el tamaño de los archivos para aumentar la velocidad?

Para mejorar los tiempos de carga de la página, las CDN reducen las cantidades totales de transferencia de los datos entre los servidores de caché de la CDN y el cliente. Tanto la latencia como el ancho de banda requerido se reducen cuando se reduce la cantidad total de datos transferidos. El resultado son cargas de página más rápidas y costos de ancho de banda más bajos. Dos componentes clave entran en esta reducción:

Minificación: es el proceso a través del cual los bloques de código se reducen en tamaño al eliminar todos los componentes que ayudan a los humanos a comprender lo que está sucediendo. Mientras que un ingeniero necesita separar ideas en nombres de variables sensibles, espacios y comentarios para hacer que los bloques de código sean legibles y fáciles de mantener, las computadoras pueden ejecutar código con éxito sin esos caracteres.

Este es el mismo bloque de código antes y después de la minificación:

Antes de la minificación, vemos ocho líneas de código

CDN sin minificación

Después de la minificación, vemos una sola línea de código

Minificación de CDN

Ahora que el fragmento de código se redujo de ocho líneas a una sola línea, también se ha reducido el tamaño total del archivo. Es decir, lleva menos tiempo transferir el archivo, lo que reduce la latencia y ayuda a cargar el contenido más rápido.

Compresión de archivos: la compresión de archivos es un componente integral para reducir la latencia y el consumo del ancho de banda necesarios al transferir datos a través de Internet. GZip es un método de compresión común y se considera la mejor práctica cuando se transfieren páginas web. Muchos proveedores de CDN tienen GZip habilitado por defecto. ¿Qué tan importante son los ahorros de la compresión GZip? Por lo general, los archivos comprimidos se reducirán entre un 50 % y un 70 % del tamaño inicial del archivo.

¿Qué hardware puede usar una CDN para mejorar las velocidades?

En cuanto a las optimizaciones de hardware de CDN, se obtiene un beneficio sustancial del uso de dispositivos de estado sólido (SSD) en comparación con las unidades de disco duro tradicionales (HDD). Los SSD pueden abrir archivos hasta un 30 % más rápido que la unidad de disco duro tradicional y son más resistentes y confiables.

De forma similar a un reproductor de discos, una unidad de disco duro tradicional consiste en un disco metálico circular giratorio con un revestimiento magnético que almacena los datos. Un cabezal de lectura/escritura en un brazo accede a la información cuando el disco gira debajo de él. Es un proceso mecánico que depende de la velocidad con la que gira el disco. Con la llegada de los SSD, el uso del modelo anterior de unidades de disco duro es poco común, aunque todavía se producen hoy en día y tienen una amplia circulación en muchos sistemas informáticos.

A solid-state drive (SSD) is also a form of persistent storage, but functions much more similarly to USB thumb drives or the memory cards commonly found in devices like digital cameras; there are no moving parts. If a regular hard disk is spinning and the system is jostled, the HDD may skip, resulting in read/write errors and potential downtime. Another important SSD benefit is in accessing fragmented files. File fragmentation is a situation where parts of a file are in different locations across the disk, resulting in slower access for HDD drives. Because a SSD can access non-contiguous memory locations efficiently, fragmentation is not a threat to performance.

En las primeras CDN, los datos se almacenaban en unidades de disco duro. Ahora, con algunos servicios de CDN, todo el almacenamiento en caché del lado del perímetro puede ocurrir en dispositivos SSD. La desventaja de los SSD es el gasto. Un SSD puede ser hasta 5 veces más costoso que los medios tradicionales. Por esta razón, algunos servicios CDN a menudo evitarán su uso y optarán por tecnología más antigua. La CDN de Cloudflare utiliza exclusivamente los SSD.