CDN performance

Uno de los principales beneficios de una CDN es su capacidad de entregar contenido de forma rápida y eficiente. Las optimizaciones de rendimiento de la CDN pueden dividirse en tres categorías. Explora la guía de CDN.

Objetivos de aprendizaje

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

  • Entender las diferentes maneras en que una CDN mejora los tiempos de carga
  • Comparar las diferencias entre usar y no usar una CDN
  • Conocer los aspectos básicos del almacenamiento en caché de CDN
  • Saber cómo una CDN reduce el tamaño de los archivos

Copiar enlace del artículo

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

Prácticamente todo el mundo en Internet conoce las ventajas de las redes de distribución de contenidos (CDN). La mayoría de las empresas tecnológicas, incluidas Google, Apple y Microsoft, utilizan una CDN para reducir la latencia en la carga del contenido de páginas web.

Por lo general, una CDN colocará servidores en los puntos de intercambio entre diferentes redes. Estos puntos de intercambio de Internet (IXP) son las ubicaciones principales donde los diferentes proveedores de Internet se conectan entre sí para que cada uno de ellos tenga acceso al tráfico que se origina en sus diferentes redes. Además de los IXP, una CDN colocará servidores en centros de datos situados por todo el mundo, en zonas de tráfico elevado y ubicaciones estratégicas para agilizar el tráfico lo más rápido posible.

Uno de los principales beneficios de una CDN es su capacidad de entregar contenido de forma rápida y eficiente. Las optimizaciones de rendimiento de una CDN pueden dividirse en tres categorías:

  1. Reducción de la distancia: reduce la distancia física entre el cliente y los datos solicitados.
  2. Optimización de hardware/software: mejora el rendimiento de la infraestructura del lado del servidor utilizando dispositivos de estado sólido y un equilibrio de carga eficiente.
  3. Reducción de la transferencia de datos: emplea técnicas para reducir el tamaño de los archivos para que acelerar las cargas iniciales de la página.

Para entender las ventajas de utilizar una CDN, analizaremos cómo es 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 alojado en un servidor de Singapur. La separación física entre estas ubicaciones es sustancial, con una distancia de aproximadamente 15.320 kilómetros.

Distancia sin una CDN

Si el servidor que aloja el contenido del sitio web (servidor de origen) se encuentra en Singapur, cada solicitud de cada activo de la página web debe viajar de Nueva York a Singapur y volver de nuevo. Al igual que sucede con un vuelo internacional con muchas conexiones, cada solicitud debe atravesar una serie de enrutadores a lo largo del recorrido desde el punto A al punto B.

Si quieres ver un ejemplo real de cuántas conexiones diferentes (saltos) realiza tu equipo para llegar a un servicio web determinado desde tu ubicación actual, echa un vistazo a traceroute en un ordenador de sobremesa.

Mejoras de tiempo de tránsito con 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.

A título ilustrativo, supongamos:

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

Veamos aproximadamente cuánto tardará en cargarse la 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 de la página web viaja desde 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 con todos los activos adicionales necesarios.
  • 250 ms: cada uno de los 5 activos es solicitado por el cliente en Nueva York.
  • 1.500 ms: los cinco activos se entregan de forma asíncrona al cliente desde el servidor de origen en Singapur.

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

Como puedes ver, cada vez que se realiza una solicitud y se envía una respuesta, se recorre toda la ruta entre el cliente de Nueva York y el origen en Singapur. A medida que aumenta el contenido de los sitios web y necesitan un mayor número de activos, se incrementa la latencia entre el punto A y el B.

Repasemos el ejemplo de contenido alojado en Singapur servido a un cliente web en Nueva York, pero ahora el sitio de Singapur utiliza 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.
  • Establecer una conexión TCP/IP añadirá 3 instancias de 50 ms de latencia.
  • La página web requiere 5 activos únicos, que consisten en imágenes, archivos JavaScript y la propia página web.

Veamos aproximadamente cuánto tardará en cargarse la página web usando la CDN:

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

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

Distancia 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 con una CDN

Al reducir la distancia total que todo el tráfico necesario debe recorrer, cada usuario del sitio web ahorra una cantidad de tiempo de carga. Teniendo en cuenta que los usuarios comienzan a abandonar el sitio (rebote) muy rápido cuando aumentan los tiempos de espera, esta mejora ofrece una experiencia del usuario superior y un mayor tiempo de permanencia en la página.

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

Como ya hemos mencionado, normalmente cuando un cliente solicita un archivo desde un servidor de origen, la solicitud debe transmitirse a ese servidor y volver de nuevo. Una CDN mejora la latencia gracias a la extracción de archivos de contenido estático del servidor de origen en la red distribuida de la CDN, en un proceso llamado almacenamiento en caché. Algunas CDN también cuentan con funciones avanzadas que permiten el almacenamiento en caché selectivo 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 CDN más cercano.

Solicitud sin caché de CDN
Solicitud con caché de CDN

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

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

  1. Cuando el usuario solicita una página web, la solicitud del usuario se dirige al servidor en el perímetro más cercano a la CDN.
  2. A continuación, el servidor en el perímetro solicita al servidor de origen el contenido solicitado por el usuario.
  3. El origen responde a la solicitud del servidor en el perímetro.
  4. Por último, este 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 haya realizado la solicitud inicial al servidor de origen. Una vez que los datos del servidor de origen se han almacenado en la memoria caché de la red de la CDN, las solicitudes posteriores del cliente solo tienen que ir hasta el servidor en el perímetro más cercano. Así, si el servidor en el perímetro más cercano está a menor distancia que el servidor de origen, la latencia se reduce y el contenido se sirve mucho más rápido.

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

Es importante tener en cuenta que no hemos incluido la cantidad de tiempo necesario para descargar activos y procesar solicitudes y respuestas. Hasta ahora solo se ha calculado 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 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 la cantidad total de transferencia de datos entre los servidores de caché de la CDN y el cliente. Tanto la latencia como el ancho de banda necesario se reducen cuando la cantidad total de datos transferidos disminuye. Todo ello reduce el tiempo de carga de página y los costes de ancho de banda. En esta reducción intervienen dos componentes clave:

Minificación: es el proceso por el cual los bloques de código se reducen en tamaño mediante la eliminación de todos los componentes que permiten a los humanos entender la situación. Mientras que un ingeniero necesita separar las ideas en nombres de variables adecuados, espacios y comentarios para que los bloques de código sean legibles y fáciles de mantener, los ordenadores pueden ejecutar código correctamente 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 solo una línea de código

Minificación de CDN

Ahora que el fragmento de código se ha reducido de ocho líneas a una sola línea, el tamaño total del archivo también es menor. De esta manera, se tardará menos tiempo en transferir el archivo, lo que reduce la latencia y permite 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 de ancho de banda necesarios para transferir datos a través de Internet. GZip es un método común de compresión y se considera la mejor práctica a la hora de transferir páginas web. Muchos proveedores de CDN tienen GZip habilitado de forma predeterminada. ¿Qué conseguimos con la compresión GZip? Los archivos comprimidos se reducen normalmente entre un 50 % y un 70 % con respecto a su tamaño inicial.

¿Qué hardware puede usar una CDN para mejorar la velocidad?

En lo que respecta a las optimizaciones de hardware de las CDN, un beneficio sustancial proviene del uso de dispositivos de estado sólido (SSD) frente a los discos duros tradicionales (HDD). Los SSD pueden abrir archivos hasta un 30 % más rápido que los discos duros tradicionales y son más resistentes y fiables.

De forma similar a un reproductor de discos, una unidad de disco duro tradicional consiste en un disco de metal 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 este. Es un proceso mecánico que depende de la velocidad con la que gira el disco. Con la llegada de los SSD, se ha reducido el uso del antiguo modelo de discos duros, aunque todavía se fabrican y están en 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 discos duros. Ahora, con algunos servicios de CDN, todo el almacenamiento en caché en el perímetro puede realizarse en dispositivos SSD. El inconveniente que tienen es el gasto. Un SSD puede ser hasta 5 veces más caro que los soportes tradicionales. Por eso, algunos servicios de CDN suelen evitar su uso y optan por la tecnología más antigua. La CDN de Cloudflare utiliza exclusivamente SSD.