Dimensionamento no back-end
Em uma configuração muito simples, uma entrada DNS vai para um IP que pertence a um servidor. Todo mundo em todo o mundo vai para essa única máquina. Com tráfego suficiente, é demais para lidar muito antes de você atingir o tamanho do YouTube. Em um cenário simples, adicionamos um balanceador de carga. A tarefa do balanceador de carga é redirecionar o tráfego para vários servidores de back-end enquanto aparece como um servidor.
Com tantos dados quanto o YouTube, seria demais esperar que todos os servidores pudessem veicular todos os vídeos; portanto, temos outra camada de indireção a acrescentar: sharding . Em um exemplo artificial, um servidor é responsável por tudo que começa com "A", outro possui "B" e assim por diante.
Aproximando a borda
Eventualmente, porém, a largura de banda se torna intensa e você está movendo MUITOS dados para uma sala. Então, agora que somos super populares, saímos da sala. As duas tecnologias importantes aqui são redes de distribuição de conteúdo e Anycasting .
Onde tenho esses grandes arquivos estáticos sendo solicitados em todo o mundo, paro de apontar links diretos para meus servidores de hospedagem. O que eu faço é colocar um link para o meu servidor CDN. Quando alguém pede para ver um vídeo, ele solicita ao meu servidor CDN. A CDN é responsável por já ter o vídeo, solicitar uma cópia do servidor de hospedagem ou me redirecionar. Isso varia de acordo com a arquitetura da rede.
Como esse CDN é útil? Bem, um IP pode realmente pertencer a muitos servidores que estão em muitos lugares em todo o mundo. Quando sua solicitação sai do computador e vai para o ISP, o roteador deles mapeia o melhor caminho (mais curto, mais rápido, menos custo ... qualquer que seja a métrica) para esse IP. Geralmente, para uma CDN, ela estará na ou mais próxima à sua rede de nível 1 .
Então, solicitei um vídeo do YouTube. A máquina em que foi armazenada é pelo menos iad09s12.v12.lscache8.c.youtube.com
e tc.v19.cache5.c.youtube.com
. Aqueles aparecem na fonte da minha página da Web que estou vendo e foram fornecidos por alguma forma de servidor de indexação. Agora, no Maine, achei o servidor tc19 em Miama, Flórida. De Washington, achei o servidor tc19 em San Jose, Califórnia.