Introdução
Uma Rede de Distribuição de Conteúdo (CDN) é uma rede de servidores espalhados por todo o mundo que armazenam uma cópia dos conteúdos de um site, como imagens, vídeos e arquivos estáticos. Quando um usuário solicita o acesso a um site, a CDN redireciona a solicitação para o servidor mais próximo geograficamente do usuário, diminuindo a latência e melhorando a velocidade de carregamento. Dessa forma, mesmo que um servidor falhe, outros servidores da CDN podem continuar a fornecer o conteúdo solicitado.
Benefícios de usar uma CDN incluem melhorias na velocidade de carregamento do site, menor latência, redução no tráfego do servidor de origem e aumento da segurança do site. Empresas que possuem sites com grande volume de tráfego e conteúdo pesado podem se beneficiar muito ao usar uma CDN.
Contexto
No mundo atual, o desempenho de um site é de suma importância. É difícil reter usuários caso o seu site mostre tempo de inatividade ou lentidão durante o carregamento. Isso é aplicável a todos os negócios. Muitos sites até tiveram que fechar suas lojas, pois seus concorrentes entregavam páginas da web mais rapidamente do que eles.
Antes de entrarmos nos detalhes do que é uma Rede de Distribuição de Conteúdo (CDN), vamos revisar nossos fundamentos. Vamos entender como as páginas da web são exibidas em nossos dispositivos.
O diagrama acima apresenta uma visão geral de como um cliente solicita uma página e, finalmente, a exibe para os usuários. A seguir estão os detalhes:
- O cliente (aplicativo móvel/navegador) envia uma solicitação HTTP para o servidor web.
- O servidor processa a solicitação, realiza verificações e validações, busca dados de um banco de dados, disco rígido ou armazenamento de blob. Além disso, ele constrói uma resposta.
- O cliente lê a resposta. A resposta geralmente é uma página HTML que é devolvida ao cliente.
- Finalmente, a página HTML é exibida aos usuários.
A página HTML também pode conter imagens, gifs, vídeos, etc. Portanto, juntamente com o documento, o cliente tem a responsabilidade adicional de exibir esses dados.
O cliente também precisa de arquivos Javascript para tornar a página dinâmica. Além disso, ele requer arquivos CSS para estilizar a página da web. Na guia de rede das ferramentas do desenvolvedor, você verá as opções mostradas na imagem abaixo.
Caso você selecione JS como opção, você deve ser capaz de visualizar todas as solicitações e respostas para arquivos Javascript. O mesmo se aplica a outros tipos, como CSS, Img, Doc, etc.
Podemos classificar o conteúdo em qualquer página da web em dois tipos: estático e dinâmico.
Estático
Se o conteúdo não muda com frequência, ele se torna estático. Geralmente, imagens, arquivos Javascript e CSS não mudam com frequência.
Além disso, mesmo que esses arquivos mudem, não mostraremos dados incorretos aos usuários. Apenas a experiência do usuário ou a aparência do site mudaria em caso de aprimoramentos em algum arquivo.
Em alguns casos, esses arquivos são persistidos no sistema de arquivos no servidor. Em outras palavras, o servidor web buscará esses arquivos no disco rígido e os enviará de volta aos clientes. Muitas vezes, esses arquivos são persistidos em armazenamento de blob, como S3, Azure Blob Storage, etc.
O tamanho dos dados estáticos pode ser em KBs, MBs ou GBs. Arquivos de filmes são grandes em tamanho e consomem largura de banda significativa.
Dinâmico
Os dados que mudam com frequência são dinâmicos. Por exemplo: o número de espectadores assistindo a um vídeo no Youtube. Os comentários, curtidas ou compartilhamentos em sites de mídia social.
Geralmente, o servidor armazena os dados dinâmicos em um banco de dados. Dependendo do caso de uso, pode ser SQL ou NoSQL. Para cada solicitação, o servidor consulta esses dados e os retorna na resposta. Na maioria dos casos, JSON é usado para serialização de dados.
O tamanho dos dados dinâmicos é pequeno em comparação com os dados estáticos, como filmes, vídeos ou imagens. Está na ordem de alguns KBs. O servidor também pode armazenar esses dados em um cache externo, como Redis ou MemCached, para maior eficiência.
O que afeta o desempenho do site?
Latência
A latência é o tempo que leva para um site renderizar completamente todos os dados. Se a latência aumentar, os usuários terão que esperar mais tempo. Quanto mais os usuários tiverem que esperar, menor será a taxa de conversão.
Sites que renderizam páginas com menor latência são mais performáticos. Esses sites mostrariam a página ao usuário em poucos milissegundos.
A latência depende de vários fatores. Isso inclui o seguinte:
- Distância entre o usuário e o servidor
- Tempo de processamento do servidor
- Tempo necessário para recuperar dados do banco de dados
Disponibilidade
Se o servidor do site falhar, o cliente não poderá visualizar a página da web. O servidor também deve ser capaz de lidar com aumento de carga.
No caso do site não ser escalável, o tempo de processamento do servidor aumentaria e aumentaria a latência. Nos dias de hoje, os períodos de inatividade não são tolerados.
Uma vez que os sites são globais, espera-se que eles funcionem 24 horas por dia, 7 dias por semana, 365 dias por ano. Os usuários querem assistir a vídeos, fazer compras online, enviar mensagens aos amigos, etc., sem problemas.
O que é uma Rede de Distribuição de Conteúdo (Content Delivery Network - CDN)?
Problema:
Vamos supor que estamos iniciando um novo aplicativo de vídeo curto, como o TikTok. Construímos a primeira versão do site e o implantamos em Los Angeles, Estados Unidos. Nosso site é acessível em todo o mundo e começa a ganhar tração lentamente.
Notamos que estamos recebendo tráfego da Europa, Oriente Médio e Índia. À medida que o tráfego cresce, escalamos horizontalmente e adicionamos mais servidores. No entanto, os usuários da Índia reclamam que experimentam tempos de carregamento mais longos. Os usuários dos EUA não enfrentam o mesmo problema. Por que isso acontece?
Como visto acima, temos nosso servidor implantado em Los Angeles, EUA. Para os usuários na Índia, o pacote de rede precisa percorrer uma distância maior em comparação com os usuários nos EUA. Como a distância é maior, o tempo necessário seria proporcionalmente maior. Se o tempo necessário para buscar dados nos EUA for de 5 milissegundos, levaria 35 milissegundos (a distância é 7x) para usuários indianos.
O mesmo se aplica aos usuários na Europa também. O tempo de carregamento do site na UE seria maior do que o tempo de carregamento nos EUA. Seria próximo a 3,5x.
Além disso, os arquivos de vídeo em nossos servidores não mudarão com frequência. No caso de um vídeo se tornar viral, o mesmo arquivo de vídeo seria acessado por usuários em todo o mundo. O problema seria amplificado se o tamanho do arquivo de vídeo fosse maior, pois a largura de banda da rede se tornaria um gargalo.
Solução:
O problema acima seria resolvido se reduzíssemos a distância entre o cliente e o servidor. E como o arquivo de vídeo não muda com frequência, podemos ter um mecanismo de cache.
Com o cache, solicitaríamos o arquivo do nosso servidor uma vez e as solicitações subsequentes seriam atendidas pelo cache. Isso reduziria a carga geral no servidor.
As Redes de Distribuição de Conteúdo (CDN) aplicam essa solução e aceleram a entrega de conteúdo para os sites. Nosso servidor web principal também é chamado de servidor de origem. As CDNs consistem em um grupo de servidores distribuídos geograficamente. Esses servidores também são chamados de servidores de Pontos de Presença (POP). E os locais onde os servidores POP estão presentes são chamados de locais de borda (Edge locations).
Os servidores POP atendem ao conteúdo para os usuários que residem na mesma localização geográfica. Por exemplo: um servidor POP na Europa atenderá aos dados para usuários europeus. Usuários indianos serão atendidos por um servidor POP localizado na Índia.
Analogia
Vamos tomar um exemplo de retirar dinheiro do banco. Imagine o que teria acontecido se não houvesse caixas eletrônicos? Na ausência de caixas eletrônicos, haveria longas filas do lado de fora dos bancos. Levaria muito tempo para obter o dinheiro. Além disso, em feriados bancários, as pessoas não teriam flexibilidade para retirar dinheiro.
Caixas eletrônicos em diferentes lugares, como estações de metrô, restaurantes, aeroportos, etc., garantem que longas filas não se formem nos bancos. As pessoas podem retirar dinheiro com conveniência. Além disso, as pessoas podem ir ao caixa eletrônico mais próximo em vez de ir ao seu banco (a distância pode ser maior).
Você pode pensar nos bancos como servidores de origem e nos caixas eletrônicos como CDNs. As CDNs residem próximas à localização do usuário. Elas são distribuídas geograficamente e reduzem a carga no servidor de origem. Além disso, melhoram a disponibilidade do site lidando com o tráfego para o conteúdo estático.
O funcionamento de uma CDN
O diagrama abaixo mostra o funcionamento de alto nível do que acontece quando você carrega um site em seu navegador:
- O navegador envia uma solicitação ao DNS para pesquisa de endereço IP.
- O servidor DNS responderá com o endereço do servidor CDN mais próximo.
- O navegador enviará uma solicitação ao servidor CDN (POP) para buscar os dados.
- O servidor CDN verificará se os dados (imagem, js, css, vídeo, etc.) existem em seu cache.
- Caso os dados não existam, o servidor POP enviará uma solicitação ao servidor de origem para obter o conteúdo.
- Posteriormente, o servidor POP armazenará o conteúdo e enviará os dados de volta para o usuário.
- Os usuários da CDN também podem definir o TTL (Tempo de Vida) no conteúdo. Por exemplo: um TTL de 15 minutos no arquivo de imagem. O servidor CDN enviará os mesmos dados aos usuários até que o TTL expire.
- Assim que os servidores CDN detectarem que o conteúdo está desatualizado, eles o buscarão novamente nos servidores de origem.
Benefícios do uso de uma CDN
Desempenho do site
Os clientes recuperam os dados estáticos (imagens, vídeos, etc.) da CDN em vez do servidor de origem. Os servidores CDN estão localizados geograficamente próximos aos usuários. À medida que a distância diminui, também diminui o tempo para recuperar os dados. Isso resulta em uma melhoria significativa no tempo de carregamento do site.
Sites com tempos de carregamento mais rápidos melhoram a experiência do usuário. Os usuários são mais propensos a produtos que são eficientes e performáticos. Por exemplo: compare o Google Chrome com o Internet Explorer.
Disponibilidade
Os servidores CDN assumem grande parte da carga do site. Como os servidores CDN funcionam como caches, o servidor de origem fica protegido contra picos de tráfego. Como o servidor de origem lida com menos carga, há menos chances de ele ficar indisponível.
A disponibilidade geral do site melhora. No caso de picos de tráfego regionais, os servidores CDN nas respectivas regiões se dimensionam e lidam com o aumento da carga.
Largura de banda
O principal custo de um site é o consumo de largura de banda. Como as CDNs lidam com o tráfego, há uma enorme redução nos dados que os servidores de origem fornecem. Isso ajuda a reduzir o custo de largura de banda para os proprietários do site.
Resumo
Uma Rede de Entrega de Conteúdo (CDN) consiste em um conjunto de servidores localizados geograficamente próximos aos usuários para acelerar a entrega de conteúdo do site. Navegadores ou aplicativos móveis solicitam dados estáticos da CDN em vez do servidor de origem. As CDNs buscam os dados dos servidores de origem e os armazenam em cache. As solicitações subsequentes são atendidas a partir do servidor CDN. Os principais benefícios da CDN são a melhoria no desempenho do site, a redução nos custos de consumo de largura de banda e a melhoria na disponibilidade do site.