
Números e fatos (em vez de introdução)
- Em 2010, o tamanho médio da página da web era de 481 kB. Em 2019 - já em 1936,7 kB ( estatísticas detalhadas ). Nos últimos três anos, o valor desse indicador aumentou 314,7%. Estudos mostram que a tendência para aumentar o tamanho das páginas da web continua .
- Atualmente, os serviços de streaming de áudio e vídeo estão ganhando popularidade. Em abril de 2019, o número de assinantes do popular serviço Spotify era de 217 milhões.
- Segundo pesquisas, 25% dos usuários deixam uma página da Web se ela carregar por mais de 4 segundos. 74% dos usuários que baixam um site de um dispositivo móvel preferem não esperar se o download demorar mais de 5 segundos. 46% dos usuários se recusam a lidar com um serviço da Web, se estiver lento.
O que os fatos acima testemunham?
O fato de a Internet estar se tornando cada vez mais conteúdo "pesado" a cada ano.
E também que, no mundo moderno, um grande papel é desempenhado pela velocidade dos sites e serviços. Se a velocidade for muito baixa - isso é repleto de perda de público e, em muitos casos -, também lucro. Uma maneira confiável de resolver esse problema é usar as redes de entrega de conteúdo (CDNs).
A Selectel oferece
serviço CDN desde 2014, e estudamos em detalhes o lado técnico da questão. Neste artigo, falaremos sobre o dispositivo e os recursos da CDN moderna.
Termos-chave
Antes de iniciar uma discussão substantiva sobre os recursos da CDN, vamos definir a terminologia básica.
CDN (Content Delivery Network) é uma infraestrutura de rede distribuída geograficamente que fornece entrega rápida de conteúdo aos usuários de serviços e sites da web. Os servidores incluídos na CDN estão localizados geograficamente de forma a reduzir o tempo de resposta dos usuários do site / serviço.
Origem (origem) - o servidor no qual os arquivos ou dados de origem distribuídos pela CDN estão armazenados.
PoP (ponto de presença) - um servidor de cache dentro da CDN, localizado em um local geográfico específico. O termo borda também é usado para se referir a esses servidores.
Conteúdo dinâmico - conteúdo gerado no servidor no momento do recebimento da solicitação (modificado pelo usuário ou baixado do banco de dados).
Conteúdo estático - conteúdo armazenado no servidor de forma inalterada (por exemplo, arquivos binários, arquivos de áudio e vídeo, JS e CSS).
Um pouco de história e teoria
O forte aumento da Internet em meados dos anos 90 levou à situação em que os servidores começaram a suportar a carga. Com os servidores da época (que às vezes eram mais fracos em especificações técnicas do que o laptop moderno mais produtivo), tive que fazer vários truques: google, por exemplo, "cache hierárquico" e superestrada da informação - agora essas frases são usadas apenas em artigos sobre a história das tecnologias da Internet . Para entender como a tecnologia de distribuição de conteúdo se desenvolveu, vamos fazer uma pequena digressão teórica.
Nota: a distribuição de conteúdo estático e dinâmico está associada a diferentes tipos de carga do servidor. No caso de conteúdo dinâmico, cuja geração está associada a chamadas ao banco de dados, a velocidade do processador e a quantidade de RAM são importantes.
Para a distribuição de conteúdo estático, que na maioria dos casos é muito "pesado" e precisa ser baixado muito rapidamente, a velocidade da rede é importante primeiro. O significado de soluções técnicas para acelerar a distribuição de estática é o seguinte: fornecer escala horizontal sem sincronização bidirecional complexa com o servidor principal.
Para reduzir a carga, os proprietários de serviços web no final dos anos 90 começaram a distribuir estática e dinâmica de diferentes servidores. Grandes projetos da web com um grande público espalhado pelo mundo começaram a hospedar servidores estáticos em diferentes localizações geográficas.
Então, no final dos anos 90, começaram a surgir empresas nas quais a organização da distribuição de estática se tornou uma das principais áreas de negócios. Em 1998, o estudante do MIT Daniel Levine e o professor de matemática Thomson Leighton fundaram a Akamai. Agora, é um dos maiores (se não o maior) provedor de CDN do mundo.
Já em 2004, mais de 3.000 empresas usavam CDNs; o custo total da entrega de conteúdo era de até US $ 20 milhões por mês.
O número de CDNs em todo o mundo está em constante crescimento: serviços relevantes são fornecidos por grandes empresas internacionais (por exemplo, Akamai, Amazon, Cloudflare) e por numerosos fornecedores regionais (
revisões detalhadas ).
A CDN não é usada apenas para distribuir estática no sentido estrito da palavra: a distribuição de conteúdo em vários servidores ao redor do mundo ajuda a garantir a disponibilidade nos horários de pico.
Nos últimos 10 a 12 anos, outro tipo de conteúdo se espalhou pela Internet - streaming (vários serviços de streaming de áudio e vídeo, que hoje são muito populares e têm um milhão, se não o bilionésimo de público-alvo). Hoje, a distribuição é outro caso de uso comum para CDN.
Considere os princípios de operação e os recursos do uso da CDN em mais detalhes.

Como funciona a CDN?
Imagine um serviço da web usado por pessoas em toda a Rússia. Os principais servidores estão localizados em São Petersburgo e os usuários em várias localizações geográficas: digamos, em Krasnodar (2 604,2 km de São Petersburgo), Novosibirsk (3 826,1 km), Irkutsk (5 661, 7 km) ou Vladivostok (9 602, 4 km). Quanto mais o usuário estiver do servidor original, mais longa será a resposta "original". No início do Runet, no início dos anos 2000, os moradores de Yuzhno-Sakhalinsk ou Petropavlovsk-Kamchatsky podiam esperar que uma página da web inteira fosse carregada por 5 ou 10 minutos.
Ao usar a CDN, tudo acontece de maneira diferente: um usuário da Vladivostok é redirecionado para o servidor de cache geograficamente mais próximo como parte da CDN, o que torna a entrega de conteúdo estático muito mais rápida.

Para acelerar a distribuição da dinâmica ao usar a CDN, outros mecanismos são usados: o provedor da CDN reduz a rota da rede devido à sua rede.
Outro cenário interessante para o uso da CDN é o chamado streaming ao vivo: os internautas de todo o mundo podem assistir ou ouvir a transmissão dos locais dos eventos em um navegador (e às vezes em um aplicativo especial). É organizado da seguinte maneira: um ou vários servidores de origem recebem um fluxo de transmissão da câmera, que é imediatamente retransmitido para os pontos de presença. Servidores de origem não distribuem conteúdo para clientes. As CDNs de streaming também incluem balanceadores de carga que redirecionam solicitações para os servidores de borda menos carregados no momento.
Como a distribuição de conteúdo é organizada?
Como regra, para configurar a distribuição de conteúdo estático via CDN, você deve executar as seguintes etapas:
Etapa 1: mova as estatísticas do site para um domínio separado, por exemplo, static.example.com - isso será a origem.
Etapa 2: para trabalhar com a CDN, crie um domínio no formato cdn.example.com.
Etapa 3: Conecte o CDN do provedor. Para se conectar, o proprietário do serviço da web deve informar ao provedor o seguinte:
o domínio do qual será usada a estática - static.example.com;
o domínio do qual a distribuição será é cdn.example.com.
Etapa 4: no seu registrador DNS, configure um registro CNAME em cdn.example.com no domínio do provedor de CDN, que o provedor de CDN aloca quando conectado.
Por exemplo, na CDN Selectel, esse domínio tem o formato 85e77c09-bc03-43bf-b8f3-9492ae33390f.selcdn.net, em que 85e72c09-bc03-43bf-b8f3-9492ae33390f é gerado automaticamente.
Etapa 5: em seu site, altere o domínio das estatísticas que você planeja distribuir via CDN para cdn.example.com.
O usuário digita na barra do navegador o endereço
www.example.com , do qual ele recebe uma página HTML. Além disso, todo o conteúdo estático, por exemplo, imagens gráficas, é carregado a partir da CDN (a partir do endereço cdn.example.com).
O conteúdo estático destinado à distribuição é frequentemente colocado em armazenamentos de objetos (
escrevemos sobre isso há seis anos ). Existem muitos plugins e extensões para CMS populares (Wordpress, Joomla, Drupal, 1C Bitrix e outros), com os quais você pode configurar a integração com serviços de armazenamento em nuvem e distribuição de estática via CDN.
Após conectar a CDN, o serviço da web funcionará no mesmo servidor original. As partes em cache do site serão carregadas nos servidores da rede CDN. O sistema encontra o servidor mais próximo do usuário e carrega as estatísticas do site dele o mais rápido possível.
Vamos prestar atenção a um ponto importante: os servidores incluídos na CDN não são semelhantes aos servidores de arquivos nos quais o conteúdo está hospedado para download posterior. As CDNs não são usadas para armazenar conteúdo, mas para armazenar em cache com base em algoritmos específicos.
Como a CDN entende onde está o servidor de cache mais próximo?
Como regra, duas tecnologias populares são usadas para carregar o conteúdo da CDN: GeoDNS e AnyCast.
Usando o GeoDNS, você pode vincular vários endereços IP a um único nome de domínio. Dependendo da localização geográfica (determinada pelo endereço IP do qual a solicitação veio), o usuário é redirecionado para o servidor mais próximo. Você pode ler sobre os recursos do GeoDNS
neste artigo (em inglês).
Ao usar a tecnologia Anycast, os endereços são comuns, mas o roteamento ocorre para "seus" servidores na região. Ao acessar o endereço
www.example.com, o usuário é redirecionado para o ponto de presença mais próximo. O provedor do usuário recebe vários anúncios de redes diferentes que têm um ponto de presença e o roteador do provedor seleciona o mais próximo deles. A resposta também é retornada ao longo do caminho mais curto.
Como o conteúdo é armazenado em cache?
O mais comum é o esquema de
primeiro acesso : o tempo máximo para download é gasto pelo usuário que acessa o servidor original primeiro. Todos os usuários subsequentes receberão dados armazenados em cache no ponto de presença mais próximo.
A geografia é muito importante aqui: por exemplo, depois que um usuário do Rio de Janeiro telefona, os dados serão armazenados em cache em um servidor localizado no Brasil, o que não resolverá os problemas com a velocidade de acesso de usuários de Paris ou Londres.
Para superar as limitações impostas por esse esquema, são usadas tecnologias de extração regional: servidores vizinhos incluídos na CDN obtêm conteúdo um do outro e não acessam o servidor original.
Na maioria das CDNs, o usuário que envia a solicitação de conteúdo estático é redirecionado para o ponto de presença mais próximo e recebe uma versão em cache desse conteúdo. Se o ponto de presença mais próximo não conseguir encontrar os arquivos, uma pesquisa começará nos pontos de presença vizinhos, de onde a resposta do usuário será redirecionada. No Akamai CDN, esse procedimento é chamado de distribuição em camadas (você pode traduzi-lo para o russo como "distribuição em vários níveis").
Para que são usadas as CDNs?
Na maioria das vezes, a CDN é usada para reduzir o tempo de resposta do conteúdo em cache, o que, como mencionamos acima, reduz o fluxo de visitantes devido ao carregamento lento do recurso e, assim, reduz possíveis perdas financeiras. A CDN também ajuda a reduzir o risco de perder o acesso ao conteúdo devido a uma queda no servidor principal. O conteúdo estará disponível o tempo todo enquanto você restaura o servidor principal.
O uso da CDN reduz significativamente a carga no servidor principal, o que ajuda a resolver o problema dos picos de carga. A CDN moderna é capaz de sobreviver a cargas muito grandes. No final de 2018, a Akamai
anunciou um volume recorde de tráfego CDN transmitido : 72 Tb / s.
Atualmente, as CDNs também são usadas ativamente para distribuir conteúdo de streaming.
O que é importante lembrar ao trabalhar com a CDN?
Como qualquer tecnologia, a CDN possui vários recursos.
O primeiro problema que os serviços Web baseados em CDN podem encontrar é a latência do cache. A seguinte situação é bastante provável: no servidor principal, o arquivo foi alterado, mas nos servidores de cache, ele permanecerá inalterado. Isso é especialmente importante quando o conteúdo atualizado com frequência é distribuído via CDN (fotos da cena, novas versões de software etc.)
Para garantir a entrega de conteúdo "novo" nas CDNs modernas, existe uma função de limpeza de cache, ou seja, remoção de conteúdo do pool de cache. Além disso, os proprietários de sites e serviços podem gerenciar as próprias configurações usando os cabeçalhos do validador (consulte nossas recomendações sobre este tópico em um
artigo publicado anteriormente).
Outra dificuldade está associada ao bloqueio: se por um motivo ou outro serviços que são seus "vizinhos" pelo provedor IP CDN estiverem bloqueados, seu site poderá estar bloqueado com você. Mas esse problema pode ser resolvido: mediante solicitação, os provedores de CDN podem alterar seu endereço IP.
Quem precisa de uma CDN?
A CDN é principalmente necessária para projetos com um grande público em diferentes regiões ou países. Tudo está claro aqui: reduzindo atrasos, distribuição rápida de conteúdo e aumentando o nível de conveniência e, como resultado, usuários mais satisfeitos.
A CDN também pode ser útil para desenvolvedores de aplicativos móveis: de acordo com as estatísticas, os usuários geralmente se recusam a continuar trabalhando com o aplicativo devido a problemas de velocidade. Recentemente, surgiram soluções técnicas especiais focadas na distribuição de conteúdo para dispositivos móveis. Eles são chamados de CDNs móveis. Os serviços correspondentes são oferecidos por muitos grandes provedores de CDN - por exemplo, Akamai ou Amazon.
Necessita de CDN e projetos focados na distribuição de jogos, conteúdo multimídia e streaming (como mencionado acima).
O que procurar ao escolher um provedor de CDN (em vez de uma conclusão)
O número de usuários do seu serviço da web está crescendo, o público está se expandindo e você está pensando em conectar uma CDN para otimizar e acelerar a distribuição de estática e reduzir a carga nos servidores principais.
O que devo procurar ao escolher um provedor de CDN?
Em primeiro lugar, o
número de pontos de presença . Isto é especialmente verdade para projetos com um amplo público internacional. Será útil descobrir informações sobre pontos de presença nas regiões mais interessantes para você e compará-las com o público potencial do site.
Em segundo lugar, é a
presença de juntas com operadoras de telecomunicações . Esse também é um fator importante do qual depende a velocidade e a eficiência da CDN. Por exemplo, um provedor de CDN com pontos de presença em 100 cidades, mas com um pequeno número de conexões, pode ter um atraso maior que um provedor com pontos de presença localizado em 5 cidades, mas há muito mais conexões com operadoras.
Infelizmente, na maioria dos casos, os provedores de CDN não publicam essas informações; portanto, você só pode verificar tudo testando.
Em terceiro lugar, a
disponibilidade de serviços e funções adicionais . Muitos provedores de CDN fornecem serviços como análise de estatísticas de consumo, gerenciamento de políticas de cache, gerenciamento de cabeçalhos HTTP, pré-carregamento de conteúdo muito "pesado" (de 200 MB ou mais) e limpeza completa e seletiva do cache.
Além disso, ao escolher um provedor de CDN, é necessário verificar se ele suporta as tecnologias e protocolos necessários (certificados HTTP / 2, IPv6, SSL e outros).