One place for hosting & domains

      Использование CDN для ускорения загрузки статичного контента


      Введение

      Современные веб-сайты и приложения часто должны предоставлять большое количество статичного контента конечным пользователям. Это могут быть изображения, таблицы стилей, файлы JavaScript и видео. По мере роста количества и размера таких статичных активов, значительно увеличивается объем трафика, а также время загрузки страницы, что ухудшает опыт просмотра сайта или приложения для ваших пользователей и снижает количество свободных ресурсов сервера.

      Чтобы заметно сократить время загрузки страницы, улучшить производительность и снизить объем трафика и расходы на инфраструктуру, вы можете реализовать CDN, или сеть доставки контента (content delivery network), чтобы кешировать подобные активы на распределенных в разных географических точках серверах.

      В этом руководстве вы найдете достаточно общее описание сетей доставки контента и принципов их работы, а также преимущества, которые они могут предоставить вашим веб-приложениям.

      Что такое CDN?

      Сеть доставки контента — это географически распределенная группа серверов, оптимизированная для доставки статичного контента конечным пользователям. Подобный статичный контент может представлять собой практически любой тип данных, но, как правило, CDN используются для предоставления веб-страниц и связанных с ними файлов, трансляции видео и аудио и больших пакетов программного обеспечения.

      Схема доставки контента без использования CDN

      CDN включает несколько точек входа в сеть (PoP) в различных местах, каждая из которых включает несколько пограничных серверов, которые кешируют активы из вашего источника или хост-сервера. При посещении пользователем веб-сайта и запросе статичных активов, таких как изображения или файлы JavaScript, эти запросы перенаправляются CDN на ближайший пограничный сервер, откуда и предоставляется контент. Если у данного пограничного сервера нет кешированных активов или срок действия подобных активов истек, CDN будет выполнять выборку и кешировать последнюю версию из любого другого ближайшего пограничного сервера CDN или ваших серверов источника. Если у пограничного сервера CDN есть запись в кеше для ваших активов (что происходит в большинстве случаев, если ваш веб-сайт принимает среднее количество трафика), он будет возвращать конечному пользователю копию из кеша.

      Схема сети доставки контента (CDN)

      Это позволяет географически разрозненным пользователям минимизировать количество действий, необходимых для получения статичного контента, получая этот контент напрямую из кеша ближайшего пограничного сервера. В результате значительно сокращается количество задержек в доступе и утерянных пакетов, достигается увеличение скорости загрузки страницы и резко уменьшается нагрузка на вашу инфраструктуру источника.

      Поставщики CDN часто предлагают дополнительные функции, например, смягчение последствий DDoS-атак и ограничение скорости, инструменты аналитики пользователей, а также инструменты оптимизации для трансляций или мобильного трафика за дополнительную плату.

      Как работает CDN?

      Когда пользователь посещает ваш веб-сайт, сначала он получает ответ от сервера DNS, который содержит IP-адрес вашего веб-сервера хоста. Затем браузер пользователя запрашивает контент веб-страницы, который часто включает целый ряд статичных файлов, таких как страницы HTML, таблицы стилей CSS, код JavaScript и изображения.

      После развертывания CDN и переноса этих статичных активов на сервера CDN либо путем ручной их выгрузки, либо путем автоматической выгрузки (оба механизма описываются в следующем разделе), вы должны будете указывать вашему веб-серверу на необходимость перезаписи ссылок на статичный контент, чтобы эти ссылки указывали на файлы, которые содержатся в CDN. Если вы используете CMS, например WordPress, подобная перезапись ссылки может быть выполнена с помощью стороннего плагина, например CDN Enabler.

      Многие CDN обеспечивают поддержку для настраиваемых доменов, позволяя вам создавать запись CNAME в вашем домене, указывающую на конечную точку CDN. Когда CDN получает запрос пользователя в этой конечной точке (которая расположена на пограничном сервере, находящемся гораздо ближе к пользователю, чем ваши серверы бекэнда), он перенаправляет запросы на ближайшую к пользователю точку входа (PoP). Эта точка входа часто включает один или несколько пограничных серверов CDN, которые расположены в точке обмена интернет-трафиком (IxP), то есть, по сути, в центре обработки данных, используемом интернет-провайдерами для соединения своих сетей. Внутренний распределитель нагрузки CDN перенаправляет запрос на пограничный сервер, находящийся в этой точке входа, который затем предоставляет контент пользователю.

      Механизмы кеширования, применяемые разными поставщиками CDN, различаются, но обычно они работают следующим образом:

      1. Когда CDN получает первый запрос статичного актива, например изображения в формате PNG, сеть не располагает кешированной версией актива и должна получить копию этого актива либо от ближайшего пограничного сервера CDN, либо на самом сервере источника. Это так называемое отсутствие затребованных файлов в кеше обычно можно обнаружить, изучив заголовок HTTP-ответа, которые содержит запись X-Cache: MISS. Этот первоначальный запрос может быть медленнее, чем будущие запросы, поскольку после выполнения этого запроса данный актив будет храниться на пограничном сервере.
      2. Будущие запросы этого актива (удачные обращения к кешу), направляемые к данному расположению пограничного сервера, будут теперь обслуживаться из кеша до истечения срока действия актива (обычно он задается в заголовке HTTP). Эти ответы будут намного быстрее, чем первоначальный запрос, что значительно сокращает время задержки и сокращает количество веб-трафика в сети CDN. Вы можете убедиться, что ответ был отправлен из кеша CDN, изучив заголовок HTTP-ответа, который должен сейчас содержать запись X-Cache: HIT.

      Дополнительные данные о том, как работает и реализуется конкретная CDN, приведены в документации поставщика CDN.

      В следующем разделе мы добавим два популярных типа CDN: push и pull CDN.

      Push- и pull-зоны

      Большинство поставщиков CDN предоставляет два способа кэширования ваших данных: pull-зоны и push-зоны.

      Pull-зоны подразумевают ввод адреса сервера источника, после чего CDN автоматически получает и кеширует все статичные ресурсы на вашем сайте. Pull-зоны, как правило, используются для предоставления часто обновляемых веб-активов небольшого и среднего размера, таких как файлы HTML, CSS и JavaScript. После предоставления CDN адреса сервера источника следующим шагом обычно является переписка ссылок на статичные активы, чтобы они указывали на URL-адрес, предоставляемый CDN. С этого момента и далее CDN будет обрабатывать входящие запросы активов от ваших пользователей и обслуживать контент из распределенных по географическому принципу кешей и вашего источника, если это уместно.

      Чтобы использовать Push-зону, вы должны загрузить ваши данные в указанный блок или место хранения, которое после этого CDN отправляет в кеш на распределенный парк пограничных серверов. Push-зоны, как правило, используются для крупных и редко изменяемых файлов, например архивов, пакетов программного обеспечения, PDF-файлов, видео и аудио.

      Преимущества использования CDN

      Почти любой сайт может воспользоваться преимуществами, предоставляемыми CDN, но обычно основными причинами внедрения такой сети являются возможность снижения объема трафика из серверов источника на серверы CDN, а также сокращение времени задержки для географически распределенных пользователей.

      Мы обсудим эти преимущества, а также некоторые другие основные выгоды от использования CDN ниже.

      Снижение нагрузки на источник

      Если вы практически достигли пиковой пропускной способности на ваших серверах, разгрузка статичных активов, таких как изображения, видео, файлы CSS и JavaScript, позволит значительно снизить нагрузку на ваши серверы. Сети доставки контента предназначены и оптимизированы для обслуживания статичного контента, а запросы клиента для этого контента будут перенаправляться на пограничные серверы CDN и обслуживаться ими. Это дает дополнительное преимущество при сокращении нагрузки на серверы источника, поскольку они будут гораздо реже обслуживать эти данные.

      Снижение времени задержки для улучшенного пользовательского опыта

      Если ваши пользователи географически распределены, а необычно большая часть трафика приходит из удаленного географического района, система CDN может уменьшать время задержки, выполняя кеширование статичных активов на пограничных серверах, расположенных ближе к вашим пользователям. Уменьшая расстояние между пользователями и статическим контентом, вы можете быстрее предоставлять контент пользователям и улучшать опыт взаимодействия, повышая скорость загрузки страницы.

      Эти преимущества особенно важны для веб-сайтов, обслуживающих главным образом потребляющий множество трафика видеоконтент, где большое время задержки и низкая скорость загрузки оказывают прямое влияние на пользовательский опыт и уровень вовлечения при работе с контентом.

      Управление пиковыми нагрузками для трафика и предотвращение остановки работы

      CDN позволяет обрабатывать пиковые нагрузки для трафика и справляться с резким ростом трафика, отправляя распределяющие нагрузку запросы в распределенную сеть пограничных серверов. Загружая и кешируя статичный контент в сети доставки, вы можете обслуживать большее количество пользователей одновременно, используя текущую инфраструктуру.

      Для веб-сайтов, использующих один сервер источника, такие пики трафика часто могут перегружать систему, что может становиться причиной незапланированных отключений и перерывов в работе сайта. Перенос трафика на доступную сеть с избыточными ресурсами, предназначенную для обработки различных уровней веб-трафика, может увеличить доступность ваших активов и контента.

      Снижение затрат

      Предоставление статичного контента, как правило, составляет большую часть вашего трафика, перенос этих активов в сеть доставки контента может значительно сократить месячные расходы на инфраструктуру. Помимо сокращения затрат на обслуживание трафика, CDN может снижать расходы на организацию работы сервера с помощью снижения нагрузки на серверы источника, что позволит увеличить масштаб вашей существующей инфраструктуры. Наконец, некоторые поставщики CDN предлагают месячные тарифы с фиксированной ценой, что позволяет перейти от непрогнозируемых затрат на трафик к стабильной и предсказуемой регулярной сумме.

      Повышение безопасности

      Еще одним распространенным вариантом использования CDN является смягчение последствий DDoS-атак. Многие поставщики CDN предоставляют возможность мониторинга и фильтрации запросов для пограничных серверов. Подобные службы проводят анализ веб-трафика на подозрительные элементы, блокируя трафик злоумышленников, одновременно позволяя добросовестным пользователям использовать сайт. Поставщики CDN, как правило, предоставляют различные службы для смягчения последствий DDoS-атак, от общей защиты на уровне инфраструктуры (слои 3 и 4 OSI) до более продвинутых служб и ограничения скорости.

      Кроме того, большинство CDN позволяют в полной мере настроить SSL, чтобы вы могли шифровать трафик между CDN и конечным пользователем, а также трафик между CDN и серверами источника, используя предоставляемые CDN или пользовательские SSL-сертификаты.

      Выбор лучшего решения

      Если ограничением вашей системы является нагрузка на ЦП на сервере источника, а не трафик, CDN может оказаться не самым подходящим решением. В данном случае локальное кеширование с помощью таких популярных средств кеширования, как NGINX или Varnish, может значительно снизить нагрузку с помощью предоставления активов из системной памяти.

      Помимо развертывания CDN, такие дополнительные меры оптимизации, как, например, уменьшение размера и сжатие файлов JavaScript и CSS или активация сжатия HTTP-запросов, могут также оказывать значительное влияние на время загрузки страницы и объем трафика.

      PageSpeed Insights​​​ от Google — это отличный инструмент для оценки скорости загрузки страницы и ее оптимизации. Еще одним полезным инструментом, который предоставляет каскадную разбивку скорости запросов и ответов, а также меры оптимизации, является Pingdom.

      Заключение

      Сеть доставки контента может служить быстрым и эффективным решением для масштабирования и повышения доступности веб-сайтов. Кешируя статичные активы в географически распределенной сети оптимизированных серверов, вы можете значительно сократить время, затрачиваемое на загрузку страницы, а также продолжительность задержек для конечных пользователей. Также CDN позволяет значительно сократить количество трафика, получая запросы пользователей и отправляя необходимые данные из кеша на пограничном сервере, сокращая объем передаваемых данных и затраты на инфраструктуру.

      Наличие плагинов и поддержки большинства фреймворков, например, WordPress, Drupal, Django и Ruby on Rails, а также таких дополнительных функций, как смягчение последствий DDoS-атак, полноценные SSL-сертификаты, мониторинг пользователей и сжатие активов, делает CDN полезным инструментом для обеспечения безопасности и оптимизации веб-сайтов с высоким трафиком.



      Source link

      Usar una CDN para acelerar la entrega de contenido


      Introducción

      Las aplicaciones y los sitios web modernos deben a menudo proporcionar un volumen considerable de contenido estático a los usuarios finales. Este contenido incluye imágenes, hojas de estilos, JavaScript y video. A medida que aumentan la cantidad y el tamaño de estos recursos estáticos, lo mismo sucede con el uso del ancho de banda y los tiempos de carga de la página. Esto genera perjuicios en la experiencia de navegación de los usuarios y reduce la capacidad disponible en sus servidores.

      Para reducir drásticamente los tiempos de carga de la página, mejorar el rendimiento y recortar sus costos de ancho de banda e infraestructura, puede implementar una CDN, o red de entrega de contenido, para almacenar en caché estos recursos en un conjunto de servidores distribuidos geográficamente.

      En este tutorial, ofrecemos una descripción de alto nivel de las CDN, su funcionamiento y los beneficios que ofrecen para sus aplicaciones web.

      ¿Qué es una CDN?

      Una red de entrega de contenido es un grupo de servidores distribuidos geográficamente y optimizados para proporcionar contenido estático a los usuarios finales. Este contenido estático corresponder a casi cualquier tipo de datos, pero las CDN se utilizan sobre todo para entregar páginas web y sus archivos relacionados, y transmitir vídeo y audio además de grandes paquetes de software.

      Diagrama de entrega de contenido sin una CDN

      Una CDN consta de varios puntos de presencia (PoP) en varias ubicaciones, y cada uno de ellos consta de numerosos servidores perimetrales que almacenan en caché recursos de su origen o servidor host. Cuando un usuario visita su sitio web y solicita recursos estáticos, como imágenes o archivos de JavaScript, la CDN redirecciona sus solicitudes al servidor perimetral más cercano, desde el cual se proporciona el contenido. Si los recursos no están almacenados en caché en el servidor perimetral, o si los recursos almacenados en caché caducaron, la CDN buscará y almacenará en caché la versión más reciente desde otro servidor perimetral de CDN cercano o desde sus servidores de origen. Si la CDN perimetral no tiene una entrada almacenada en caché para sus recursos (lo cual sucede en la mayoría de los casos si su sitio web recibe una cantidad moderada de tráfico), mostrará la copia en caché al usuario final.

      Diagrama de la red de entrega de contenido (CDN)

      Esto permite que los usuarios dispersos geográficamente reduzcan al mínimo el número de saltos necesarios para recibir contenido estático y buscar el contenido directamente en la caché de un servidor perimetral cercano. Como resultado, se reducen considerablemente las latencias y la pérdida de paquetes, se acelera la carga de páginas y disminuye de forma drástica la carga para su infraestructura de origen.

      Por un costo adicional, los proveedores de CDN a menudo ofrecen funciones adicionales, como la mitigación de DDoS y limitación de velocidad, los análisis de usuarios y las optimizaciones para casos de uso de transmisión o plataformas móviles.

      ¿Cómo funciona una CDN?

      Cuando un usuario visita su sitio web, primero recibe una respuesta de un servidor DNS que contiene la dirección IP de su servidor web host. Su navegador luego solicita el contenido de la página web, que a menudo consiste en una variedad de archivos estáticos, como páginas HTML, hojas de estilos CSS, código JavaScript e imágenes.

      Una vez que implementa una CDN y descarga estos recursos estáticos en servidores CDN, ya sea “forzándolos” manualmente o haciendo que la CDN “extraiga” los recursos automáticamente (ambos mecanismos se explican en la sección siguiente), indicará a su servidor web que reescriba los enlaces al contenido estático de modo que apunten a los archivos alojados por la CDN. Si está usa un CMS como WordPress, esta reescritura puede implementarse usando un complemento externo, como CDN Enabler.

      Muchas CDN ofrecen soporte para dominios personalizados, lo que le permite crear un registro CNAME en su dominio apuntando a un extremo de la CDN. Una vez que la CDN recibe una solicitud de usuario en este extremo (ubicado en el servidor perimetral, mucho más cerca del usuario que sus servidores de backend), dirige la solicitud al punto de presencia (PoP) ubicado más cerca del usuario. Este PoP a menudo consta de uno o más servidores perimetrales de CDN, localizados de forma conjunta en un punto de intercambio de Internet (IxP), que es básicamente un centro de datos que los proveedores de servicios de Internet (ISP) utilizan para interconectar sus redes. El equilibrador de carga interna de la CDN dirige la solicitud a un servidor perimetral ubicado en este PoP, que luego proporciona el contenido al usuario.

      Los mecanismos de almacenamiento en caché varían según el proveedor de la CDN, pero generalmente funcionan de la siguiente manera:

      1. Cuando la CDN recibe una primera solicitud de un recurso estático, como una imagen PNG, no dispone del archivo en caché y debe obtener una copia del recurso desde un servidor edge CDN cercano o desde el servidor de origen. Esto se conoce como “miss.” de la memoria caché y normalmente se puede detectar inspeccionando el encabezado de la respuesta HTTP, que contiene X-Cache: MISS. Esta solicitud inicial será más lenta que las solicitudes futura,debido a que, tras completarla, el recurso quedará almacenado en la memoria caché del servidor perimetral.
      2. Las solicitudes futuras de este recurso (“aciertos” de caché) dirigidas a esta ubicación perimetral ahora se proporcionarán desde la memoria caché hasta su vencimiento (normalmente configurado en los encabezados HTTP). Estas respuestas serán considerablemente más rápidas que la solicitud inicial, lo que reducirá de forma notable las latencias para los usuarios y descargará tráfico web a la red CDN. Puede verificar que la respuesta se proporcionó desde la caché de la CDN inspeccionando el encabezado de la respuesta HTTP, que ahora debería contener X-Cache: HIT.

      Para obtener más información sobre cómo funciona y cómo se implementó una CDN específica, consulte la documentación su proveedor de CDN.

      En la siguiente sección, se presentarán los dos tipos populares de CDN: push y pull.

      Zonas de incorporación vs. zonas de obtención

      La mayoría de los proveedores de CDN ofrecen dos alternativas para almacenar sus datos en caché: las zonas de obtención y las de incorporación.

      En el caso de las zonas de obtención se debe introducir la dirección de su servidor de origen y permitir que la CDN busque y almacene en caché de forma automática todos los recursos estáticos disponibles en su sitio. Estas zonas normalmente se utilizan para proporcionar recursos web que se actualizan con frecuencia y tienen tamaños entre reducidos y medianos, como los HTML, CSS y los de Java Script. Una vez que se proporciona a la CDN la dirección de su servidor de origen, el siguiente paso es normalmente reescribir los enlaces a los recursos estáticos, de modo que apunten a la URL proporcionada por la CDN. A partir de ese momento, la CDN gestionará las solicitudes de recursos entrantes de sus usuarios y proporcionará contenido desde sus cachés distribuidas geográficamente y desde su origen, según corresponda.

      Para usar una zona de incorporación, se suben los datos a una ubicación de almacenamiento o un depósito designados que luego la CDN introduce en memorias caché de su flota de servidores perimetrales distribuidos. Las zonas push se usan normalmente para archivos más grandes que apenas cambian, como los que se encuentran en ficheros, paquetes de software, PDF, videos y audio.

      Beneficios del uso de una CDN

      Casi cualquier sitio puede aprovechar los beneficios obtenidos al implementar una CDN, pero generalmente el motivo principal por el cual se implementa tiene que ver con la descarga ancho de banda de sus servidores de origen a los servidores de la CDN y la reducción de la latencia para los usuarios distribuidos geográficamente.

      A continuación, repasaremos estas y otras ventajas principales del uso de una CDN.

      Generar descarga

      Si está cerca de utilizar la capacidad de ancho de banda de sus servidores, la descarga de recursos estáticos como imágenes, videos, CSS y archivos de JavaScript reducirá drásticamente el uso de ancho de banda por parte de sus servidores. Las redes de entrega de contenido se diseñan y optimizan para proporcionar contenido estático, y las solicitudes de clientes para este contenido se dirigirán a servidores perimetrales de CDN y se proporcionarán en ellos. Esto tiene el beneficio adicional de reducir la carga en sus servidores de origen, ya que proporcionan estos datos a una frecuencia mucho más baja.

      Reducir la latencia para mejorar la experiencia del usuario

      Si su base de usuarios está dispersa geográficamente y una parte de su tráfico que no es poco representativa proviene de una zona geográfica distante, una CDN puede disminuir la latencia almacenando en caché los recursos estáticos en servidores perimetrales más cercanos a sus usuarios. Al reducir la distancia entre sus usuarios y el contenido estático, puede entregar contenido de forma más rápida a sus usuarios y mejorar su experiencia aumentando las velocidades de carga de la página.

      Estos beneficios se acentúan en el caso de los sitios web que proporcionan principalmente contenido de video que exige mucho ancho de banda, en los cuales las altas latencias y los tiempos de carga prolongados tienen un impacto más directo sobre la experiencia del usuario y el compromiso con el contenido.

      Gestionar picos de tráfico y evitar tiempo de inactividad

      Las CDN le permiten gestionar grandes picos y aumentos de tráfico al equilibrar la carga de las solicitudes en una red grande y distribuida de servidores perimetrales. Al descargar y almacenar contenido estático en una red de entrega, puede acomodar un número mayor de usuarios simultáneos con su infraestructura existente.

      Para los sitios web que usen un servidor de origen único, estos grandes picos de tráfico a menudo pueden sobrecargar el sistema, y producir desconexiones y tiempo de inactividad no planificados. El cambio del tráfico a una infraestructura de CDN altamente disponible y redundante, diseñada para gestionar niveles variables de tráfico web, puede aumentar la disponibilidad de sus recursos y contenido.

      Reducir costos

      Debido a que el aprovisionamiento de contenido estático normalmente ocupa la mayor parte del uso de su ancho de banda, la descarga de estos recursos a una red de entrega de contenido puede reducir notablemente sus costos mensuales de infraestructura. Además de reducir los costos de ancho de banda, una CDN puede disminuir los cargos de servidores mediante la reducción de la carga en los servidores de origen, lo cual permite la expansión de su infraestructura existente. Por último, algunos proveedores de CDN ofrecen facturación mensual fija, lo que le permite transformar su consumo de ancho de banda mensual variable en un gasto recurrente estable y predecible.

      Aumentar la seguridad

      Las CDN también se usan comúnmente para mitigar ataques de DDoS. Muchos proveedores de CDN incluyen funciones para controlar y filtrar solicitudes a servidores perimetrales. Estos servicios analizan el tráfico web para detectar patrones sospechosos y bloquean el tráfico de ataques malintencionados mientras permiten el tráfico de los usuarios de confianza. Los proveedores de CDN suelen ofrecer varios servicios de mitigación de DDoS, desde la protección contra ataques comunes a nivel de la infraestructura (capas 3 y 4 de la OSI) hasta servicios de mitigación y limitación de índices más avanzados.

      Además, la mayoría de las CDN le permiten configurar SSL completo, con lo cual puede cifrar el tráfico entre la CDN y el usuario final, así como el tráfico entre la CDN y sus servidores de origen, usando certificados proporcionados por la CDN o SSL personalizados.

      Elegir la mejor solución

      Si su obstáculo es la carga sobre la CPU en el servidor de origen, y no el ancho de banda, es posible que una CDN no sea la solución más apropiada. En este caso, el almacenamiento en cachés locales mediante cachés populares como NGINX o Varnish puede reducir considerablemente la carga proporcionando recursos desde la memoria del sistema.

      Antes de implementar una CDN, los pasos de optimización adicionales (como los de minificar y comprimir archivos de JavaScript y CSS, y permitir la compresión de la solicitud HTTP del servidor web) pueden tener un impacto considerable en los tiempos de carga de la página y el uso del ancho de banda.

      Una herramienta útil para medir la velocidad de carga de su página y mejorarla es PageSpeed Insights, de Google. Otra herramienta útil que proporciona un desglose de los tiempos de respuesta y las optimizaciones sugeridas es Pingdom.

      Conclusión

      Una red de entrega de contenido puede ser una solución rápida y eficaz para mejorar la escalabilidad y disponibilidad de sus sitios web. Al almacenar en caché los recursos estáticos en una red distribuida de servidores optimizados, puede reducir enormemente los tiempos de carga de la página y las latencias para los usuarios finales. Además, las CDN le permiten reducir considerablemente el uso de ancho de banda absorbiendo las solicitudes de los usuarios y respondiendo desde la memoria caché perimetral, lo que disminuye sus costos de ancho de banda e infraestructura.

      Gracias a complementos y compatibilidad con plataformas externas para los principales marcos, como WordPress, Drupal, Django y Ruby on Rails, además de funciones adicionales como la mitigación de DDoS, SSL completo, la monitorización de usuarios y la compresión de recursos, las CDN pueden ser una herramienta muy útil para proteger y optimizar sitios web con un alto nivel de tráfico.



      Source link

      Usando uma CDN para Acelerar a Entrega de Conteúdo Estático


      Introdução

      Websites e aplicações modernas geralmente entregam uma quantidade significativa de conteúdo estático para os usuários finais. Este conteúdo inclui imagens, folhas de estilo, JavaScript, e vídeo. À medida que esses recursos estáticos aumentam em número e tamanho, o uso da largura de banda aumenta e o tempo de carregamento da página aumenta, deteriorando a experiência de navegação dos usuários e reduzindo a capacidade disponível dos servidores.

      Para reduzir drasticamente o tempo de carregamento de página, aumentar a performance e reduzir seus custos com largura de banda e infraestrutura, você pode implementar uma CDN, ou rede de entrega de conteúdo para armazenar em cache esses recursos em um conjunto de servidores distribuídos geograficamente.

      Neste tutorial, vamos fornecer uma visão geral de alto nível de CDNs e como elas funcionam, bem como os benefícios que elas podem trazer para suas aplicações web.

      O que é uma CDN?

      Content delivery network ou rede de entrega de conteúdo é um grupo de servidores geograficamente distribuídos otimizados para entregar conteúdo estático aos usuários finais. Esse conteúdo estático pode ser praticamente qualquer tipo de dados, mas as CDNs são mais comumente usadas para entregar páginas web e seus arquivos relacionados, streaming de vídeo e áudio e grandes pacotes de software.

      Uma CDN consiste em múltiplos pontos de presença (PoPs) em várias localidades, cada qual consistindo de vários servidores de borda que armazenam em cache recursos de sua origem, ou servidor de hospedagem. Quando um usuário visita seu website e solicita recursos estáticos como iamgens ou arquivos de JavaScript, suas solicitações são encaminhadas pela CDN para o servidor de borda mais próximo, a partir do qual o conteúdo é servido. Se o servidor de borda não tem os recursos em cache ou o cache de recursos expirou, a CDN irá buscar e armazenar em cache a versão mais recente de outro servidor de borda da CDN mais próximo ou de seus servidores de origem. Se a borda da CDN tiver uma entrada de cache para seus recursos (o que ocorre na maior parte do tempo se seu site receber uma quantidade moderada de tráfego), ela retornará a cópia em cache para o usuário final.

      Isso permite que usuários geograficamente dispersos minimizem o número de saltos necessários para receber o conteúdo estático, buscando o conteúdo diretamente do cache de uma borda próxima. O resultado é latência e perda de pacotes significativamente reduzidos, tempos de carregamento de página mais rápidos e uma carga drasticamente reduzida na sua infraestrutura de origem.

      Os provedores de CDN oferecem recursos adicionais como mitigação de DDoS e limitação de taxa, análise de usuários e otimizações para casos de uso móvel ou de streaming com custo adicional.

      Como uma CDN funciona?

      Quando um usuário visita seu website, ele primeiro recebe uma resposta de um servidor de DNS contendo o endereço IP do host do seu servidor web. Seu navegador então solicita o conteúdo da página web, que geralmente consite de uma variedade de arquivos estáticos, como páginas HTML, folhas de estilo CSS, código JavaScript e imagens.

      Uma vez lançada a CDN e descarregados esses recursos estáticos em sevidores da CDN, “empurrando-os” manualmente ou fazendo com que a CDN “puxe” os recursos automaticamente (ambos os mecanismos são cobertos na próxima seção), você então instrui seu webserver a reescrever os links para conteúdo estático, de modo que esses links agora apontem para arquivos hospedados pela CDN. Se você estiver usando um CMS como o WordPress, essa reescrita de link pode ser implementada usando um plugin de terceiros como o CDN Enabler.

      Muitas CDNs fornecem suporte para domínios personalizados, permitindo que você crie um registro CNAME em seu domínio apontando para um endpoint da CDN. Depois que a CDN recebe uma solicitação do usuário nesse endpoint (localizado na borda, muito mais perto do usuário do que seus servidores de back-end), ela então encaminha a solicitação para o Ponto de Presença (PoP) localizado mais próximo do usuário. Este PoP geralmente consiste de um ou mais servidores de borda da CDN colocados em um ponto de troca de Internet (IxP), essencialmente um datacenter que os Provedores de Serviço de Internet (ISPs) utilizam para interconectar suas redes. O balanceador de carga interno da CDN então encaminha a solicitação para um servidor de borda localizado neste PoP, que então serve o conteúdo para o usuário.

      Os mecanismos de cache variam entre os provedores de CDN, mas geralmente funcionam da seguinte maneira:

      1. Quando a CDN recebe uma primeira solicitação para um recurso estático, como uma imagem PNG, ele não tem o recurso em cache e deve buscar uma cópia do recurso de um servidor de borda de CDN próximo ou do próprio servidor de origem. Isso é conhecido como cache “miss” e geralmente pode ser detectado inspecionando o cabeçalho de resposta HTTP, contendo X-Cache: MISS. Essa solicitação inicial será mais lenta que as solicitações futuras porque, depois de concluir essa solicitação, o recurso terá sido armazenado em cache na borda.

      2. As solicitações futuras para esse recurso (“hits” do cache), encaminhadas para esse local de borda, agora serão atendidas a partir do cache, até a expiração (normalmente definida através de cabeçalhos HTTP). Essas respostas serão significativamente mais rápidas do que a solicitação inicial, reduzindo drasticamente as latências para os usuários e transferindo o tráfego web para a rede da CDN. Você pode verificar se a resposta foi atendida a partir de um cache CDN, inspecionando o cabeçalho de resposta HTTP, que agora deve conter X-Cache: HIT.

      Para saber mais sobre como uma CDN específica funciona e como foi implementada, consulte a documentação do seu provedor de CDN.

      Na próxima seção, vamos introduzir os dois tipos populares de CDNs: As CDNs push e pull

      Zonas Push versus Zonas Pull

      A maioria dos provedores de CDN oferecem duas maneiras de armazenar seus dados em cache: zonas pull e zonas push.

      Zonas Pull envolvem a entrada do endereço do seu servidor de origem, e deixar a CDN buscar e armazenar em cache automaticamente todos os recursos estáticos disponíveis em seu site. Zonas Pull são comumente usadas para fornecer recursos web de pequeno a médio porte frequentemente atualizados, como arquivos HTML, CSS e arquivos JavaScript. Depois de fornecer à CDN o endereço do servidor de origem, a próxima etapa é geralmente reconfigurar links para recursos estáticos, de forma que eles agora apontem para o URL fornecido pela CDN. A partir desse ponto, o CDN manipulará as solicitações de recursos de entrada dos usuários e fornecerá conteúdo de seus caches geograficamente distribuídos e sua origem, conforme apropriado.

      Para utilizar uma Zona Push, você faz o upload de seus dados para um bucket ou local de armazenamento designado, que a CDN então envia para caches em sua frota distribuída de servidores de borda. As zonas Push são normalmente usadas para arquivos maiores, atualizados com pouca frequência, como arquivamentos, pacotes de software, PDFs, vídeo e arquivos de áudio.

      Benefícios do Uso de uma CDN

      Quase qualquer site pode colher os benefícios fornecidos pela implementação de uma CDN, mas geralmente as principais razões para implementá-la são descarregar a largura de banda de seus servidores de origem nos servidores CDN e reduzir a latência para usuários distribuídos geograficamente.

      Vamos passar por estas e várias outras grandes vantagens oferecidas pelo uso de uma CDN logo abaixo.

      Descarregamento da Origem

      Se você estiver se aproximando da capacidade de largura de banda em seus servidores, o descarregamento de recursos estáticos como imagens, vídeos, arquivos CSS e JavaScript reduzirá drasticamente o uso da largura de banda dos servidores. Redes de entrega de conteúdo são projetadas e otimizadas para servir conteúdo estático, e as solicitações de clientes para esse conteúdo serão encaminhadas e servidas por servidores CDN de borda. Isso traz o benefício adicional de reduzir a carga em seus servidores de origem, pois eles servem esses dados com uma frequência muito menor.

      Latência Mais Baixa para uma Melhor Experiência do Usuário

      Se sua base de usuários estiver geograficamente dispersa e uma parte não trivial de seu tráfego vier de uma área geográfica distante, uma CDN poderá diminuir a latência ao colocar em cache os recursos estáticos em servidores de borda mais próximos dos seus usuários. Ao reduzir a distância entre os usuários e o conteúdo estático, você pode fornecer conteúdo para seus usuários com mais rapidez e melhorar a experiência aumentando as velocidades de carregamento de páginas.

      Esses benefícios são compostos para websites que atendem principalmente a conteúdo de vídeo com uso intensivo de largura de banda, em que altas latências e lentidão no tempo de carregamento afetam diretamente a experiência do usuário e o engajamento de conteúdo.

      Gerenciar Picos de Tráfego e Evitar Tempo de Inatividade

      As CDNs permitem lidar com grandes picos e rajadas de tráfego através do balanceamento da carga de solicitações em uma grande rede distribuída de servidores de borda. Ao descarregar e armazenar em cache o conteúdo estático em uma rede de entrega, você pode acomodar um número maior de usuários simultâneos com sua infraestrutura atual.

      Para sites que usam um único servidor de origem, esses grandes picos de tráfego podem sobrecarregar o sistema, causando interrupções e tempo de inatividade não planejados. A transferência do tráfego para uma infraestrutura de CDN altamente disponível e redundante, projetada para lidar com níveis variáveis de tráfego web, pode aumentar a disponibilidade de seus recursos e do seu conteúdo.

      Reduzir Custos

      Como a veiculação de conteúdo estático geralmente ocupa a maior parte do uso da largura de banda, o descarregamento desses recursos em uma rede de distribuição de conteúdo pode reduzir drasticamente os gastos mensais com infraestrutura. Além de reduzir os custos de largura de banda, uma CDN pode reduzir os custos de servidor através da redução da carga nos servidores de origem, permitindo escalar a infraestrutura existente. Por fim, alguns provedores de CDN oferecem faturamento mensal com preço fixo, permitindo que você transforme seu uso de largura de banda mensal variável em um gasto recorrente estável e previsível.

      Aumentar a Segurança

      Outro caso de uso comum para CDNs é a mitigação de ataques de DDoS. Muitos provedores de CDN incluem recursos para monitorar e filtrar solicitações para servidores de borda. Esses serviços analisam o tráfego web em busca de padrões suspeitos, bloqueando o tráfego de ataque mal-intencionado e, ao mesmo tempo, permitindo o tráfego de usuários confiáveis. Os provedores de CDN geralmente oferecem uma variedade de serviços de mitigação de DDoS, desde proteção contra ataques comuns no nível de infra-estrutura (camadas OSI 3 e 4), até serviços de mitigação mais avançados e limitação de taxa.

      Além disso, a maioria das CDNs permite configurar o SSL completo, para que você possa criptografar o tráfego entre a CDN e o usuário final, bem como o tráfego entre a CDN e seus servidores de origem, usando certificados SSL personalizados ou fornecidos pela própria CDN.

      Escolhendo a Melhor Solução

      Se o seu gargalo for a carga da CPU no servidor de origem e não a largura de banda, uma CDN pode não ser a solução mais apropriada. Nesse caso, o cache local usando caches populares, como NGINX ou Varnish, pode reduzir significativamente a carga servindo os recursos a partir da memória do sistema.

      Antes de lançar uma CDN, etapas adicionais de otimização — como minimizar e compactar arquivos JavaScript e CSS e ativar a compactação de solicitação HTTP do servidor Web — podem também ter um impacto significativo em tempos de carregamento de páginas e uso de largura de banda.

      Uma ferramenta útil para avaliar a velocidade de carregamento de página e melhorá-la é o PageSpeed Insights do Google. Outra ferramenta útil que fornece um detalhamento em cascata de solicitações e tempos de resposta, bem como otimizações sugeridas é o Pingdom.

      Conclusão

      Uma rede de entrega de conteúdo pode ser uma solução rápida e eficaz para melhorar a escalabilidade e disponibilidade de seus websites. Ao armazenar em cache os recursos estáticos em uma rede geograficamente distribuída de servidores otimizados, você pode reduzir muito os tempos de carregamento de página e as latências para os usuários finais. Além disso, as CDNs permitem que você reduza significativamente o uso de largura de banda, absorvendo as solicitações dos usuários e respondendo a partir do cache na borda, reduzindo assim seus custos de largura de banda e infra-estrutura.

      Com plugins e suporte de terceiros para os principais frameworks como WordPress, Drupal, Django e Ruby on Rails, além de recursos adicionais como mitigação de DDoS, SSL completo, monitoramento de usuários e compactação de recursos, as CDNs podem ser uma ferramenta de impacto para proteger e otimizar websites de alto tráfego.

      Por Hanif Jetha



      Source link