Conhecendo um pouco da história do CDN com artigo do wikipedia:

“Content Delivery Network (CDN ou Rede de Fornecimento de Conteúdo) é um termo criado em fins da década de 1990 para descrever um sistema de computadores interligados em rede através da Internet, que cooperam de modo transparente para fornecer conteúdo (particularmente grandes conteúdos de mídia) a usuários finais.”

Fonte: http://pt.wikipedia.org/wiki/Content_Delivery_Network

Quando se fala de servidor de mídia, estamos falando de imagens, vídeos, músicas, arquivos comprimidos, flash, até Javascript e CSS. Repare que o conteúdo de um CDN normalmente são arquivos estáticos, que podem facilmente ser replicados, vamos falar mais disso logo, logo.

Porque usar um CDN?

No Brasil, essa não é uma resposta particularmente complexa, normalmente esse artifício melhora o desempenho do seu site. Existem CDN’s conhecidos como da Google, Microsoft, Amazon, que são comum quando se trata de frameworks em Javascript, conhecidas como jQuery, ExtJS e outras.

Se quando você instalou jQuery no seu site copiou este código abaixo, você é um usuário de CDN, e está usando o da Google para seu jQuery, o que é recomendado pelos desenvolvedores do jquery.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

Devo usar um CDN já existente?

Quando se utiliza o CDN, o client que está acessando seu site irá baixar o arquivo de um servidor diferente do seu, o que implica em algumas vantagens e desvantagens:

Vantagens:

  • Download feito em paralelo;
  • O navegador pode já ter o arquivo em cache (se o usuário esteve em outro site que utiliza o mesmo CDN);
  • Não irá consumir o trafego do seu servidor;
  • CDN’s como do Google, Microsoft e Amazon, costumam ter ótima latência e taxa de transferência;
  • CDN’s grandes tem menos chance de ser infectados com malwares;

Desvantagens:

  • Você não tem controle sobre o conteúdo do arquivo quando referencia um servidor remoto;
  • Se o CDN tirar o arquivo do ar ou estiver indisponível (manutenção), isso vai impactar no seu site;
  • Usar um CDN não confiável poderá tornar seu site perigoso para os usuários que visitam;

E isso nos leva a próxima pergunta…

Porque criar um CDN próprio?

Então voltamos ao caso “Brasil” onde temos servidores caros. Sim, normalmente taxa de transferência  espaço de armazenamento, limites mensal de trafego entre outros, todos são caros.

Um exemplo são as VPS, vamos comparar alguns países, com disponibilidade de recursos bem simples, como 1GB ram, 50GB storage e 1 núcleo de 2ghz:

País Taxa Limite mensal Custo Latência*
Brasil 2mbps ilimitado R$ 80.00 ~20ms
Brasil 10mbps ilimitado** R$ 300.00 ~20ms
EUA 100mbps 2000GB R$ 15.00 ~170ms
EUA 100mbps 3000GB R$ 60.00 ~160ms
EUA 100mbps ilimitado R$ 120.00 ~160ms
Europa 100mbps ilimitado R$ 60.00 ~230ms

Fonte:

* Latência deve variar dependendo da região onde você estiver do Brasil.

** Ilimitado no Brasil sempre vem com poréns, se você fizer uso muito alto da banda, irá ter problemas.

E não estou levando consideração encargos com IP’s extra, backups e outros que no Brasil costuma chegar a ser 10 vezes mais caro que nos outros países.

Criando seu próprio CDN, você pode balancear esse cálculo sem perder desempenho. Por exemplo, pode ter 2mbps no Brasil para o seu site, e os arquivos dinâmicos, porém arquivos estáticos com mais de 150KB, pode hospedá-los em um CDN no exterior, desta maneira o site irá carregar rápido e quando usuário tentar baixar uma imagem de alta definição, ou um arquivo compactado, vídeo, audio, ou um Flash pesado, estes estarão em um servidor que vai levar um pouco mais de tempo para iniciar a entrega, mas assim que começar o download, além de poder ser mais rápido, não aplicará grandes encargos financeiros na hospedagem.

Usabilidade

Uma das coisas que torna mais lento o carregamento de um site, é o início do carregamento, isso é, quando usuário digita o endereço do site, e a página demora a aparecer pela primeira vez.

Depois que ela carregou o browser vai começar a carregar os conteúdos linkados a página, sejam CSS, JS, imagens. Se a página demorar para carregar, e seus arquivos dependentes também, a usabilidade estará comprometida e se torna irritante a navegação.

Porém se a página carregou rápido, arquivos como css, js e pequenas imagens (iconização por exemplo) ficaram disponíveis de imediato, quando o browser estiver baixando outras imagens maiores, vídeos, músicas e conteúdos extras, isso não será tão perceptível ao usuário, ainda mais, que tendo a página inicial carregada, várias desses conteúdos maiores irão carregar em paralelo.

Servidor de alta latência

Um exemplo é, se você tem um site em um servidor que tem 200ms de latência, em teoria é que seu site carregue no mínimo em 400ms (estamos retirando ai o tempo de processamento do html, js e outros que afetam o browser), mas normalmente será uma vez para carregar o arquivo principal e uma segunda vez para carregar os arquivos linkados, se no CSS houver link para imagens então estas irão levar 600ms até serem carregadas.

Bom, meio segundo para carregar uma página seria razoável  mas não estamos contando os tempos anexos de processamento. E se você clicar em 3 links para navegar nessa página, você vai ficar frustrado, pois vai ver que é um tempo extremamente alto em dias que 10ms no carregamento faz diferença na experiencia do usuário.

Servidor de baixa latência

No mundo ideal você teria 20ms para carregar seus arquivos, o que resultaria em 40ms para página e 60ms com as imagens, mas como vimos, no Brasil isso é caro, o que pode acontecer é que quando for carregar suas imagens, poucos clientes consumam toda banda do seu site e de 20ms ele passe para mais de 1000ms, uma vez que vai ter que balancear a entrega dos arquivos.

Servidores de baixa e alta latência distribuindos

Quando hospedamos o site no Brasil e fazermos um CDN no exterior, vamos supor que no brasil a entrega seja de 20ms e no exterior de 200ms, colocando apenas as imagens referenciadas no CSS no CDN.

O site irá carregar em 40ms, nesse ponto o usuário já pode interagir com links e navegar, as imagens vão levar mais 200ms para chegar, mas vamos esperar até o final, temos um site que carregou por completo em cerca de 240ms.

Vantagens e desvantagens, qual custo?

CDN é uma solução de baixo custo, mantendo desempenho em quase 3 vezes mais rápido que hospedando seu site completamente no exterior. Apesar de ser 4 vezes mais lento que hospedar totalmente no Brasil, você tem uma economia de 4 à 10 vezes no valor da hospedagem, tendo como adicional uma banda de trafego até 10 vezes maior.

Análise de trafego aplicada

Para analise de arquivos HAR foi usada ferramenta Har Viewer 2.0.15

Agradecimentos

Agradeço ao Gian Carlos Salvati (Grupos Internet), que contribuiu com a indicação do Volume Drive, servidor utilizado para CDN da mesma. Ao Sérgio Surkamp, pelas idéias e ajuda na correção do texto. E não menos importante, a Renata Laurente, que fez a revisão ortográfica.

Próxima matéria pretendo explicar como montar e configurar um servidor de CDN simples, para uma infra-estrutura de pequeno porte, mas que quer honrar com velocidade de entrega dos seu(s) site(s).