Configurando Pontos de Presença com o CloudFront

Configuramos nosso servidor no Norte da Virgínia e o nosso site já está rodando nele. Mas vimos que o tempo de carregamento para um usuário que acessa aqui do Brasil é mais do que o triplo em relação a outro que faz o acesso de Dulles, que é bem próximo de onde está o nosso servidor.

O nosso site é pequeno e em termos absolutos 1.6 segundos não é muito tempo. Mas temos que ter em mente que quando ele crescer e se tornar uma aplicação, aquela proporção de um para três tende a se manter ou aumentar.

Segundo o Google, 53% dos usuários abandonam um site se a página demora mais que 3 segundos para carregar, e o tempo de carregamento também é um fator de ranqueamento para SEO.

Se tivéssemos uma aplicação rodando, eu até diria que essa demora pudesse ser em parte causada por queries pouco performáticas sendo executadas em nosso banco de dados.

Como o que temos é somente um site estático, com HTML, CSS3, Javascript e as imagens estão otimizadas, com certeza um dos fatores para essa diferença é a geolocalização. O que faz todo sentido, pois quanto mais distante estiver o servidor que formos acessar, maior é o tempo para que a nossa requisição chegue até ele e maior vai ser também o tempo de resposta para recebermos o conteúdo que estamos requisitando.

CloudFront

Vamos resolver isso através do CloudFront, um serviço da Amazon que vai ser capaz de buscar os arquivos do nosso site no Servidor de Origem que está no norte da Virgínia, e fazer a distribuição para os diversos Pontos de Presença da própria Amazon espalhados pelo mundo. Assim, quando o usuário fizer o acesso, será roteado para o Ponto de Presença que estiver mais perto dele.

Criando uma Distribuição do CloudFront

No Painel de Console da Amazon, pesquisamos por CloudFront.

Pesquisa por CloudFront na área de serviços do console da AWS.

Queremos criar uma distribuição de conteúdo. Nada mais justo então do que clicar em Create Distribution.

Iniciar criação da distribuição do CloudFront.

Faremos a distribuição de um conteúdo web, então selecionamos a opção apropriada.

Selecionar método de entrega de conteúdo.

Origem dos Arquivos

Nesta etapa, fazemos as configurações de onde o CloudFront vai buscar nossos arquivos e como ele fará isso. Será da instância do nosso Servidor de Origem constante no EC2. Então vamos copiar o DNS Público dessa instância e colar no campo Origin Domain Name aqui do CloudFront. Depois pressionamos Tab e os demais campos e protocolos de comunicação são preenchidos automaticamente.

Configurações de origem da distribuição do CloudFront.

Especificações de Acesso

Na etapa seguinte, especificamos como vai ser o acesso ao nosso site por parte do usuário final através do CloudFront. Em Viewer Protocol Policy, escolhemos se o acesso vai ser via HTTP ou pela forma segura, que é o protocolo HTTPS.

Comportamento do cache padrão do CloudFront.

Ainda não implementamos a camada de segurança em cima do protocolo HTTP para garantir que a comunicação entre o cliente, que pode ser o navegador do usuário por exemplo, e o servidor onde estão os arquivos do nosso site ocorra somente de forma segura. Por isso, vou continuar permitindo acesso via HTTP e depois alteramos para a versão segura.

Caso você ainda não saiba o que é HTTP, explico sobre ele mais pra frente. Farei isso ainda nessa sequência de artigos quando abordarmos a questão de segurança.

Em Allowed HTTP Methods, escolhemos quais métodos/verbos HTTP vamos permitir que o usuário final execute ao nosso servidor. Por padrão, temos selecionados os métodos GET e HEAD porque o usuário precisa ir até o servidor e pegar o conteúdo do nosso site para poder visualizá-lo.

Você pode inclusive ver essas requisições sendo feitas ao servidor, acessando nas opções do navegador, as ferramentas do desenvolvedor. Na aba Network, em Headers, vemos os Request Methods.

Visualização de métodos http sendo executados ao servidor.

Se você tiver uma aplicação em que o usuário precise fazer login ou enviar dados em algum momento, precisa liberar o método POST. Nós vamos liberar somente o GET e o HEAD porque o nosso é um Site Estático.

Pontos de Presença

Na sequência, temos a possibilidade de especificar em quais Pontos de Presença distribuiremos nosso conteúdo.

Pontos de Presença onde o CloudFront entregará o conteúdo.

Temos a opção de fazermos somente a distribuição nos Estados Unidos, Canadá e Europa; Estados Unidos, Canadá, Europa e Ásia e a última opção que distribui o conteúdo para todos os Pontos de Presença. Como estamos no Brasil e vamos fazer um teste com esse usuário aqui em São Paulo, selecionaremos Use All Edge Locations.

Na sequência, já podemos Criar a Distribuição. Esse processo demora cerca de 20 a 30 minutos.

Distribuição do CloudFront em processo de deploy.
Ir para o topo