¿Qué es un CDN y cómo funciona?



Cifras y hechos (en lugar de introducción)


  • En 2010, el tamaño promedio de la página web fue de 481 kB. En 2019, ya 1936.7 kB ( estadísticas detalladas ). En los últimos tres años, el valor de este indicador ha aumentado en un 314,7%. Los estudios muestran que la tendencia a aumentar el tamaño de las páginas web continúa .
  • Los servicios de transmisión de audio y video actualmente están ganando popularidad. A partir de abril de 2019, el número de suscriptores al popular servicio de Spotify era de 217 millones.
  • Según las encuestas, el 25% de los usuarios abandonan una página web si se carga durante más de 4 segundos. El 74% de los usuarios que descargan un sitio desde un dispositivo móvil prefieren no esperar si la descarga demora más de 5 segundos. El 46% de los usuarios se niega a tratar con un servicio web si es lento.


¿Qué testifican los hechos anteriores?

El hecho de que Internet se está volviendo cada vez más contenido "pesado" cada año.
Y también que en el mundo moderno la velocidad de los sitios web y los servicios juega un papel muy importante. Si la velocidad es demasiado baja, esto está plagado de pérdida de audiencia y, en muchos casos, también de ganancias. Una forma confiable de resolver este problema es usar Content Delivery Networks (CDN).

Selectel ha estado ofreciendo el servicio CDN desde 2014, y hemos estudiado en detalle el aspecto técnico del problema. En este artículo hablaremos sobre el dispositivo y las características de la CDN moderna.

Términos clave


Antes de comenzar una discusión sustantiva sobre las características de CDN, definamos la terminología básica.

CDN (Content Delivery Network) es una infraestructura de red distribuida geográficamente que proporciona una entrega rápida de contenido a los usuarios de servicios y sitios web. Los servidores incluidos en el CDN están ubicados geográficamente de tal manera que el tiempo de respuesta para los usuarios del sitio / servicio sea mínimo.

Origen (origen) : el servidor en el que se almacenan los archivos de origen o los datos distribuidos a través de la CDN.

PoP (punto de presencia) : un servidor de almacenamiento en caché dentro de la CDN, ubicado en una ubicación geográfica específica. El término borde también se usa para referirse a dichos servidores.

Contenido dinámico : contenido generado en el servidor al momento de recibir la solicitud (ya sea modificado por el usuario o descargado de la base de datos).

Contenido estático : contenido almacenado en el servidor sin cambios (por ejemplo, archivos binarios, archivos de audio y video, JS y CSS).

Un poco de historia y teoría.


El fuerte aumento de Internet a mediados de la década de 1990 llevó a la situación en la que los servidores comenzaron a soportar la carga. Con los servidores de esa época (que a veces eran más débiles en especificaciones técnicas que la computadora portátil moderna más productiva), tuve que recurrir a diferentes trucos: google, por ejemplo, "almacenamiento en caché jerárquico" y la autopista de la información, ahora estas frases se usan solo en artículos sobre la historia de las tecnologías de Internet . Para comprender cómo se desarrolló la tecnología de distribución de contenido, hagamos una pequeña digresión teórica.

Nota: la distribución de contenido estático y dinámico está asociada con diferentes tipos de carga del servidor. En el caso del contenido dinámico, cuya generación está asociada con llamadas a la base de datos, la velocidad del procesador y la cantidad de RAM son importantes.

Para la distribución de contenido estático, que en la mayoría de los casos es muy "pesado" y que debe descargarse muy rápidamente, la velocidad de la red es importante primero. El significado de las soluciones técnicas para acelerar la distribución de estadísticas estáticas es el siguiente: proporcionar escala horizontal sin una sincronización bidireccional compleja con el servidor principal.

Para reducir la carga, los propietarios de servicios web a fines de la década de 1990 comenzaron a distribuir estadísticas y dinámicas desde diferentes servidores. Grandes proyectos web con una gran audiencia dispersa por todo el mundo comenzaron a alojar servidores estáticos en diferentes ubicaciones geográficas.

Luego, a fines de la década de 1990, comenzaron a aparecer empresas en las que la organización de la distribución de estadísticas se convirtió en una de las principales áreas de negocio. En 1998, el estudiante del MIT Daniel Levine y el profesor de matemáticas Thomson Leighton fundaron Akamai. Ahora es uno de los proveedores de CDN más grandes (si no el más grande) del mundo.

Ya en 2004, más de 3,000 compañías usaron CDN; El costo total de la entrega de contenido fue de hasta $ 20 millones por mes.

El número de CDN en todo el mundo está en constante crecimiento: los servicios relevantes son proporcionados por grandes compañías internacionales (por ejemplo, Akamai, Amazon, Cloudflare) y numerosos proveedores regionales ( revisiones detalladas ).

CDN no solo se utiliza para distribuir estadísticas en el sentido estricto de la palabra: la distribución de contenido en múltiples servidores de todo el mundo ayuda a garantizar la disponibilidad durante las horas pico.

En los últimos 10-12 años, otro tipo de contenido se ha generalizado en Internet: la transmisión (numerosos servicios de transmisión de audio y video, que hoy son muy populares y tienen una audiencia de millones, si no la billonésima). La distribución actual es otro caso de uso común para CDN.

Considere los principios de funcionamiento y las características del uso de CDN con más detalle.



¿Cómo funciona CDN?


Imagine un servicio web utilizado por personas en toda Rusia. Los servidores principales se encuentran en San Petersburgo, y los usuarios se encuentran en varias ubicaciones geográficas: por ejemplo, en Krasnodar (2 604,2 km de San Petersburgo), Novosibirsk (3826,1 km), Irkutsk (5 661, 7 km) o Vladivostok (9 602, 4 km). Cuanto más lejos esté el usuario del servidor original, mayor será la respuesta "original". En los albores del Runet, a principios de la década de 2000, los residentes de Yuzhno-Sakhalinsk o Petropavlovsk-Kamchatsky podían esperar a que una página web completa se cargara completamente durante 5 o incluso 10 minutos.

Cuando se usa CDN, todo sucede de manera diferente: un usuario de Vladivostok es redirigido al servidor de almacenamiento en caché geográficamente más cercano como parte de CDN, lo que hace que la entrega de contenido estático sea mucho más rápido.



Para acelerar la distribución de la dinámica cuando se usa CDN, se utilizan otros mecanismos: el proveedor de CDN reduce la ruta de red debido a su red.

Otro escenario interesante para usar CDN es la llamada transmisión en vivo: los usuarios de Internet de todo el mundo pueden ver o escuchar la transmisión desde los lugares de los eventos en un navegador (y a veces en una aplicación especial). Se organiza de esta manera: uno o varios servidores de origen reciben un flujo de transmisión desde la cámara, que se transmite inmediatamente a los puntos de presencia. Los servidores de origen no distribuyen contenido a los clientes. Las CDN de transmisión también incluyen equilibradores de carga que redirigen las solicitudes a los servidores perimetrales menos cargados en este momento.

¿Cómo se organiza la distribución de contenido?


Como regla general, para configurar la distribución de contenido estático a través de CDN, debe realizar los siguientes pasos:

Paso 1: Mueva las estadísticas del sitio a un dominio separado, por ejemplo, static.example.com, este será el origen.

Paso 2: para trabajar a través de CDN, cree un dominio con el formato cdn.example.com.

Paso 3: conecte el CDN del proveedor. Para conectarse, el propietario del servicio web debe informar al proveedor lo siguiente:
el dominio del que tomará estática - static.example.com;
el dominio desde el que se distribuirá la distribución es cdn.example.com.

Paso 4: en su registrador DNS, configure un registro CNAME de cdn.example.com en el dominio del proveedor de CDN, que el proveedor de CDN asigna cuando está conectado.
Por ejemplo, en CDN Selectel, dicho dominio tiene la forma 85e77c09-bc03-43bf-b8f3-9492ae33390f.selcdn.net, donde 85e72c09-bc03-43bf-b8f3-9492ae33390f se genera automáticamente.

Paso 5: en su sitio, cambie el dominio de las estadísticas que planea distribuir a través de CDN a cdn.example.com.

El usuario escribe en la barra del navegador la dirección www.example.com , desde la cual recibe una página HTML. Además, todo el contenido estático, por ejemplo, imágenes gráficas, se carga desde el CDN (desde la dirección cdn.example.com).

El contenido estático destinado a la distribución a menudo se coloca en almacenes de objetos ( escribimos sobre esto hace seis años ). Existen muchos complementos y extensiones para CMS populares (Wordpress, Joomla, Drupal, 1C Bitrix y otros), con los que puede configurar la integración con los servicios de almacenamiento en la nube y la distribución de estadísticas a través de CDN.

Después de conectar el CDN, el servicio web funcionará en el mismo servidor original. Las partes en caché del sitio se cargarán en los servidores de la red CDN. El sistema encuentra el servidor más cercano para el usuario y carga las estadísticas del sitio lo más rápido posible.

Prestemos atención a un punto importante: los servidores incluidos en el CDN no son similares a los servidores de archivos en los que se aloja el contenido para su posterior descarga. Las CDN no se utilizan para almacenar contenido, sino para el almacenamiento en caché basado en algoritmos específicos.

¿Cómo entiende el CDN dónde está el servidor de almacenamiento en caché más cercano?


Como regla general, se utilizan dos tecnologías populares para cargar contenido desde CDN: GeoDNS y AnyCast.

Con GeoDNS, puede vincular varias direcciones IP a un solo nombre de dominio. Dependiendo de la ubicación geográfica (determinada por la dirección IP de donde vino la solicitud), el usuario es redirigido al servidor más cercano. Puede leer sobre las características de GeoDNS en este artículo (en inglés).

Cuando se usa la tecnología Anycast, las direcciones son comunes, pero el enrutamiento ocurre a "sus" servidores dentro de la región. Al acceder a la dirección www.example.com, el usuario es redirigido al punto de presencia más cercano. El proveedor del usuario recibe varios anuncios de diferentes redes que tienen un punto de presencia, y el enrutador del proveedor selecciona el más cercano. La respuesta también se devuelve a lo largo de la ruta más corta.

¿Cómo se almacena en caché el contenido?


El más común es el esquema de primer acceso : el usuario que accede primero al servidor original dedica la mayor cantidad de tiempo a la descarga. Todos los usuarios posteriores recibirán datos almacenados en caché en su punto de presencia más cercano.

La geografía es muy importante aquí: por ejemplo, después de que un usuario de Río de Janeiro llama, los datos se almacenarán en caché en un servidor ubicado en Brasil, que no resolverá los problemas de velocidad de acceso para usuarios de París o Londres.

Para superar las limitaciones impuestas por este esquema, se utilizan tecnologías de extracción regional: los servidores vecinos incluidos en el CDN toman contenido entre sí y no acceden al servidor original.

En la mayoría de las CDN, el usuario que envía la solicitud de contenido estático es redirigido al punto de presencia más cercano y recibe una versión en caché de este contenido. Si el punto de presencia más cercano no puede encontrar los archivos, comenzará una búsqueda en los puntos de presencia vecinos, desde donde se redirigirá la respuesta del usuario. En Akamai CDN, este procedimiento se denomina distribución por niveles (puede traducirlo al ruso como "distribución multinivel").

¿Para qué se usan los CDN?


Muy a menudo, CDN se usa para reducir el tiempo de respuesta del contenido en caché, lo que, como mencionamos anteriormente, reduce la salida de visitantes debido a la carga lenta del recurso y, por lo tanto, reduce las posibles pérdidas financieras. CDN también ayuda a reducir el riesgo de perder el acceso al contenido debido a una caída en el servidor primario. El contenido estará disponible todo el tiempo mientras restaura el servidor principal.

El uso de CDN reduce significativamente la carga en el servidor principal, lo que ayuda a resolver el problema de las cargas máximas. La CDN moderna puede sobrevivir a cargas muy grandes. A finales de 2018, Akamai anunció un volumen récord de tráfico CDN transmitido : 72 Tb / s.

Hoy en día, los CDN también se utilizan activamente para distribuir contenido de transmisión.

¿Qué es importante recordar al trabajar con CDN?


Como cualquier tecnología, CDN tiene una serie de características.

El primer problema que pueden encontrar los servicios web basados ​​en CDN es la latencia de caché. La siguiente situación es bastante probable: en el servidor principal, el archivo se modificó, pero en los servidores de almacenamiento en caché permanecerá sin cambios. Esto es especialmente importante cuando el contenido actualizado con frecuencia se distribuye a través de CDN (fotos de la escena, nuevas versiones de software, etc.)

Para garantizar la entrega de contenido "nuevo" en los CDN modernos, existe una función de limpieza de caché, es decir, la eliminación de contenido del grupo de caché. Además, los propietarios de sitios y servicios pueden administrar la configuración ellos mismos utilizando los encabezados del validador (consulte nuestras recomendaciones sobre este tema en un artículo publicado anteriormente).

Otra dificultad está asociada con el bloqueo: si por un motivo u otro los servicios que son sus "vecinos" por el proveedor de IP CDN están bloqueados, su sitio puede ser bloqueado con usted. Pero este problema puede resolverse: a pedido, los proveedores de CDN pueden cambiar su dirección IP.

¿Quién necesita un CDN?


CDN se necesita principalmente para proyectos con una gran audiencia en diferentes regiones o países. Aquí todo está claro: reducir los retrasos, la distribución rápida de contenido y aumentar el nivel de conveniencia y, como resultado, usuarios más satisfechos.

CDN también puede ser útil para los desarrolladores de aplicaciones móviles: según las estadísticas, los usuarios a menudo se niegan a seguir trabajando con la aplicación debido a problemas de velocidad. Recientemente, han aparecido soluciones técnicas especiales que se centran en la distribución de contenido a dispositivos móviles. Se llaman CDN móviles. Muchos proveedores grandes de CDN ofrecen los servicios correspondientes, por ejemplo, Akamai o Amazon.

Necesita CDN y proyectos centrados en la distribución de juegos, contenido multimedia y transmisión (como se mencionó anteriormente).

Qué buscar al elegir un proveedor de CDN (en lugar de una conclusión)


El número de usuarios de su servicio web está creciendo, la audiencia se está expandiendo y está pensando en conectar un CDN para optimizar y acelerar la distribución de estadísticas y reducir la carga en los servidores principales.

¿Qué debo buscar al elegir un proveedor de CDN?

En primer lugar, el número de puntos de presencia . Esto es especialmente cierto para proyectos con una amplia audiencia internacional. Será útil encontrar información sobre puntos de presencia en las regiones más interesantes para usted y compararlos con la audiencia potencial del sitio.

En segundo lugar, es la presencia de uniones con operadores de telecomunicaciones . Este es también un factor importante del que depende la velocidad y la eficiencia de la CDN. Por ejemplo, un proveedor de CDN con puntos de presencia en 100 ciudades, pero con un pequeño número de conexiones, puede tener un retraso más largo que un proveedor con puntos de presencia ubicados en 5 ciudades, pero hay muchas más conexiones con los operadores.

Desafortunadamente, en la mayoría de los casos, los proveedores de CDN no publican dicha información, por lo que solo puede verificar todo mediante pruebas.

En tercer lugar, la disponibilidad de servicios y funciones adicionales . Muchos proveedores de CDN proporcionan servicios tales como el análisis de estadísticas de consumo, la gestión de políticas de almacenamiento en caché, la gestión de encabezados HTTP, la carga previa de contenido muy "pesado" (de 200 MB o más) y la eliminación completa y selectiva de la memoria caché.

Además, al elegir un proveedor de CDN, debe verificar si es compatible con las tecnologías y protocolos que necesita (HTTP / 2, IPv6, certificados SSL y otros).

Source: https://habr.com/ru/post/463915/


All Articles