Uma das principais vantagens de uma CDN é sua capacidade de distribuir conteúdo com rapidez e eficiência. As otimizações de desempenho de uma CDN podem ser divididas em três categorias. Explore o Guia de CDNs.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
O que é Anycast?
O que é um servidor de origem?
Tempo de ida e volta (RTT)
Tempo de vida (TTL)
Confiabilidade da CDN
O que é um data center de CDN?
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
Praticamente todo mundo na internet já experimentou as vantagens de uma rede de distribuição de conteúdo (CDN). A maioria das empresas de tecnologia, incluindo o Google, a Apple e a Microsoft, usam CDNs para reduzir a latência do carregamento de conteúdo de páginas web.
De modo geral, uma CDN posiciona servidores nos pontos de troca de tráfego entre redes diferentes. Esses pontos de troca de tráfego na internet (IXPs) são os principais locais onde provedores de internet diferentes se conectam entre si para fornecer um acesso mútuo aos recursos de suas diferentes redes. Além dos IXPs, uma CDN posiciona servidores em data centers localizados ao redor do mundo em áreas de tráfego intenso e localizações estratégicas, para poder movimentar o tráfego com a maior rapidez possível.
Uma das principais vantagens de uma CDN é sua capacidade de distribuir conteúdo com rapidez e eficiência. As otimizações de desempenho de uma CDN podem ser divididas em três categorias:
Para entender as vantagens de usar uma CDN, vamos explorar como ocorre uma transferência normal de dados entre o cliente e o servidor sem uma CDN implementada.
Vamos imaginar que alguém em Nova York precisa acessar um site hospedado em um servidor em Singapura. A distância física entre esses dois locais é substancial, da ordem de 15.300 km.
Se o servidor que hospeda o conteúdo de um site (o servidor de origem) estiver localizado em Singapura, cada solicitação para cada ativo da página web precisará viajar de Nova York a Singapura e voltar a Nova York. É como pegar um voo internacional com diversas conexões pelo caminho: cada solicitação precisa viajar por meio de uma série de roteadores ao longo da distância física entre o ponto A e o ponto B.
Se quiser ver um exemplo real de quantas conexões (saltos) diferentes são necessárias para um computador chegar a um determinado serviço de web partindo do seu local atual, explore a ferramenta traceroute usando um computador desktop.
Como a solicitação de Nova York a Singapura precisa passar por cada um dos roteadores localizados ao longo do caminho, a quantidade de tempo (latência) aumenta tanto de acordo com a distância total quanto com o tempo necessário para cada roteador processar a solicitação. Após processar a solicitação e responder ao cliente que a efetuou, o servidor de origem envia as informações de volta por meio de uma sequência semelhante de roteadores antes que elas retornem a Nova York. O tempo total dessa viagem é conhecido em telecomunicações como RTT, ou “tempo de ida e volta”. Por enquanto vamos ignorar a largura de banda disponível e o possível congestionamento da rede e vamos examinar um exemplo de causa de latência.
Para fins de ilustração, digamos o seguinte:
Vamos ver aproximadamente quanto tempo essa página web levará para carregar:
Nesse exemplo simples, o tempo total de trânsito para essa página carregar é de cerca de 3.000 ms.
Como você pode ver, cada vez que uma solicitação é realizada e uma resposta é enviada, todo o caminho entre o cliente em Nova York e o servidor de origem em Singapura precisa ser percorrido. À medida que os sites se tornam maiores e exigem um número maior de ativos, a latência entre o ponto A e o ponto B continua a aumentar.
Vamos revisitar o exemplo de um conteúdo hospedado em Singapura distribuído para um cliente da web em Nova York, mas desta vez o site em Singapura está usando uma CDN que tem um servidor em Atlanta contendo uma cópia em cache do site estático:
Vamos ver aproximadamente quanto tempo essa página web levará para carregar usando a CDN:
O tempo total de trânsito para essa página carregar é de cerca de 1.100 ms.
Nesse exemplo, a redução da distância entre o cliente e o conteúdo cria uma redução de 1.900 ms na latência para o conteúdo estático, representando uma redução de quase 2 segundos no tempo de carregamento.
Devido à redução da distância total que todo o tráfego necessário precisa atravessar, cada usuário do site estará economizando uma quantidade de tempo de carregamento. Considerando-se que os usuários começam a sair do site (rejeição) muito rapidamente à medida que os tempos de espera aumentam, essa redução resulta tanto em uma melhor experiência do usuário quanto em um maior tempo gasto pelo usuário na página.
Como mencionamos anteriormente, quando um cliente solicita um arquivo ao servidor de origem a solicitação de modo geral precisa fazer uma viagem de ida e volta para esse servidor. Uma CDN reduz a latência ao extrair os arquivos de conteúdo estático do servidor de origem para a rede distribuída da CDN em um processo chamado armazenamento em cache. Algumas CDNs têm recursos avançados que permitem também um armazenamento em cache seletivo do conteúdo dinâmico. Após os dados terem sido armazenados em cache, a CDN distribui o conteúdo para o cliente a partir do data center CDN mais próximo.
Após o handshake TCP ter sido efetuado, a máquina cliente envia uma solicitação HTTP à rede da CDN. Se o conteúdo ainda não tiver sido armazenado em cache, a CDN primeiro baixará o conteúdo do servidor de origem fazendo uma solicitação extra entre o servidor de origem e o servidor de borda da CDN.
Um armazenamento em cache típico de CDN ocorre em quatro etapas:
A importância da proximidade entre uma CDN e o cliente se manifesta após a solicitação inicial para o servidor de origem já ter sido feita. Após os dados do servidor de origem terem sido armazenados no cache da rede da CDN, as solicitações subsequentes do cliente só precisarão ir até o servidor de borda mais próximo. Isso significa que, se o servidor de borda mais próximo estiver mais próximo do que o servidor de origem, a latência poderá ser reduzida e o conteúdo poderá ser distribuído muito mais rápido.
É importante ressaltar que o tempo necessário para baixar ativos e processar solicitações e respostas não está sendo incluído no momento; até agora, calculamos apenas o tempo de trânsito necessário para transferir informações entre esses dois locais. Outras causas de latência importantes que iremos explorar incluem a redução de dados, a velocidade do disco rígido e o congestionamento de rede.
Para reduzir os tempos de carregamento da página, as CDNs diminuem as quantidades totais de dados transferidos entre os servidores de cache da CDN e o cliente. Tanto a latência quanto a largura de banda necessária são reduzidas quando a quantidade total de dados transferidos diminui. O resultado é que a página carrega mais rápido e os custos de largura de banda são reduzidos. Essa redução envolve dois componentes essenciais:
Minificação: minificação é o processo pelo qual o tamanho dos blocos de código é reduzido por meio da remoção de todos os componentes que ajudam os humanos a entenderem o que está acontecendo. Embora um engenheiro precise separar as ideias com nomes de variáveis, espaços e comentários sensatos que tornem os blocos de código legíveis e passíveis de manutenção, os computadores podem executar esse código com sucesso após esses caracteres terem sido removidos.
Veja abaixo o mesmo bloco de código antes e depois da minificação:
Antes da minificação: oito linhas de código
Após a minificação: reduzido a uma única linha de código
Agora que o trecho de código foi reduzido de oito para uma única linha, o tamanho total do arquivo também foi reduzido. Isso significa menos tempo para transferir o arquivo, o que reduz a latência e ajuda a carregar o conteúdo mais rapidamente.
Compactação de arquivos: a compactação de arquivos é um componente essencial para a redução da latência e do consumo de largura de banda necessário para transferir dados pela internet. O GZip é um método de compactação comum que é considerado uma boa prática quando se trata de transferir páginas web. Muitos provedores de CDN têm o GZip habilitado por padrão. Qual é a ordem de grandeza de economia em uma compactação do GZip? De modo geral, a redução dos arquivos compactados é de cerca de 50% a 70% do tamanho inicial do arquivo.
No que diz respeito às otimizações de hardware da CDN, o uso de discos rígidos de estado sólido (SSD) em vez de unidades de disco rígido tradicionais (HDD) proporciona uma vantagem substancial: as unidades de estado sólido podem abrir arquivos até 30% mais rápido do que a unidade de disco rígido tradicional e são mais resilientes e mais confiáveis.
Como ocorre com um toca-discos, uma unidade de disco rígido tradicional consiste em um disco de metal circular giratório com um revestimento magnético que armazena dados. A cabeça de leitura/gravação em um dos braços acessa a informação quando o disco gira embaixo dela. O processo é mecânico e afetado pela rapidez com que o disco gira. Com o advento das unidades de estado sólido, o uso do modelo mais antigo de discos rígidos passou a ser menos comum, embora ainda sejam produzidos atualmente e estejam em ampla circulação em vários sistemas de computador.
Uma unidade de estado sólido (SSD) também é uma forma de armazenamento duradoura, mas tem muito mais semelhança com um pen drive USB ou com os cartões de memória que costumam ser encontrados em dispositivos como câmeras digitais, já que não existem partes móveis. Se um disco rígido normal estiver girando e o sistema sofrer um empurrão, o disco rígido poderá pular, resultando em erros de leitura/gravação e em um possível tempo de inatividade. Outra vantagem importante do SSD é o acesso a arquivos fragmentados. Fragmentação de arquivos é uma situação em que partes de um arquivo estão em locais diferentes do disco, resultando em um acesso mais lento no caso das unidades de disco rígido. Como um SSD consegue acessar locais de memória que não são contíguos de forma eficiente, a fragmentação não constitui uma ameaça ao desempenho.
Nas primeiros CDNs, os dados eram armazenados em discos rígidos. Agora, todo o armazenamento em cache de alguns serviços de CDN do lado da borda pode ocorrer em unidades de estado sólido. A desvantagem dos SSDs é seu preço: um SSD pode custar até 5 vezes mais do que a mídia tradicional. Por essa razão alguns serviços de CDN com frequência evitam o uso de SSDs e optam pela tecnologia mais antiga. A CDN da Cloudflare utiliza exclusivamente SSDs.