O que é CloudFront da Amazon?
O CloudFront é o serviço de CDN (Content Delivery Network) da AWS, lançado em 2008 em versão beta e implementado definitivamente em 2009.
Trata-se de uma solução de CDN que é utilizada principalmente por clientes da AWS pela comodidade de implementação e é encontrado normalmente dentro de aplicações web, como por exemplo em servidores EC2 e Buckets S3, com o intuito de entregar assets estáticos como .jpg, .png, .js, .css ou dinâmicos como .html e .json em cache para reduzir latência de entrega.
Normalmente, o CloudFront da AWS é implementado dentro de aplicações web que recebem tráfego de múltiplos países e que podem se beneficiar de uma cobertura em nível global. Além das questões de redução de latência, usuários CloudFront também se beneficiam pelo aumento de disponibilidade e escalabilidade que a CDN pode trazer, já que os elementos cacheados serão distribuídos por múltiplos pontos de distribuição, também conhecidos como edge locations.
É possível servir assets da CDN da Amazon utilizando uma hash de distribuição do próprio CloudFront, como por exemplo, http://d111111abcdef8.cloudfront.net/nome-do-asset.extensao ou configurando a solução dentro de sua aplicação, permitindo que você distribua assets pela raiz de seu domínio, via www ou através de subdomínios, por exemplo http://cdn.nome-do-dominio.com.br/nome-do-asset.extensao.
Como o CloudFront funciona:
O funcionamento do CloudFront da AWS é o mesmo da maior parte das soluções de CDN. Basicamente, a CDN faz cache dos assets de acordo com as requisições dos usuários que são roteados via DNS (Domain Name System) para o ponto de presença (POP) que pode atender melhor cada uma das requisições. Sendo assim, o usuário passa a receber assets em cache através do ponto de presença mais próximo, reduzindo latência de entrega. Eventualmente se um item não está em cache, ele será entregue diretamente pela infraestrutura de hospedagem e na próxima requisição, será distribuído através de um ponto de presença.
Para entender mais sobre o funcionamento do CloudFront, confira abaixo os response headers (x-cache) mais comuns:
x-cache: HIT from CloudFront
O response header HIT é gerado sempre que um asset é entregue diretamente pelo CloudFront.
x-cache: MISS from CloudFront
O response header MISS quer dizer que o CloudFront ainda não tem o conteúdo salvo em seu edge, logo será necessário consultar o servidor de origem.
Após entregar o conteúdo com MISS, o CloudFront faz o cache desse asset. Um MISS deve virar um HIT na próxima requisição.
x-cache: BYPASS from CloudFront
Sempre que o response header BYPASS for apresentado quer dizer que o CloudFront não fará cache desse asset e a entrega será sempre feita diretamente pela origem.
Quais os pontos de presença do CloudFront?
Atualmente o CloudFront possui mais de 200 pontos de presença em todo o mundo, mas sua presença no Brasil ainda é tímida. Por aqui a empresa conta com pontos de distribuição apenas em São Paulo e Rio de Janeiro.
Caso você queira descobrir qual ponto de distribuição está servindo um determinado asset no CloudFront, é possível analisar o response header x-amz-cf-pop que apresenta o nome do edge location que distribuiu o conteúdo. Para conteúdos distribuídos por pops do Brasil, os códigos encontrados são:
- GIG51-C2 – Rio de Janeiro
- GRU1-C1 – São Paulo
- GRU50-C1 – São Paulo
Quais as vantagens de usar CloudFront:
Disponibilidade: Conforme citamos no início deste artigo, o CloudFront pode aumentar a disponibilidade de uma aplicação, mas para isso é necessário que seja feita uma configuração de full cache, o que naturalmente exige algum esforço técnico de implementação.
Latência: É possível reduzir latência de entrega utilizando uma solução de CDN como CloudFront, porém é necessário lembrar que dentro do Brasil existem pontos de distribuição apenas no sudeste do país (São Paulo e Rio de Janeiro).
Segurança: Por padrão, a CDN lida com as requisições de uma aplicação trazendo ganhos em segurança, funcionando como um “escudo” contra ataques primários como DDoS. Além disso, é possível utilizar SSL/TLS para entrega.
Quais as desvantagens de usar CloudFront:
Custos: O CloudFront é uma solução de CDN atrativa para usuários AWS pela comodidade de integração, porém é importante entender os custos atrelados a isso. Atualmente o custo de cada GB trafegado via CloudFront é de 0,11 USD. Trata-se de um custo ancorado ao valor do dólar, o que acaba trazendo imprevisibilidade para a operação, ainda mais se considerarmos o cenário de oscilação cambial em que vivemos hoje.
Outro ponto negativo da precificação do CloudFront é que existe um abismo entre os planos de consumo. É necessário trafegar mais de 40 TB por mês para reduzir os custos de 0,11 USD por GB para 0,105 USD.
Além dos custos por tráfego, o CloudFront também realiza cobranças por requisições (ou solicitações HTTP/HTTPS), sendo 0,022 USD a cada 10.000 requisições. Ainda que sua aplicação seja bem construída e otimizada para economizar banda, você será cobrado por todas as requisições entregues pelo CloudFront.
Capilaridade de entrega no Brasil: É inegável que a AWS possui um portfólio com serviços de qualidade, mas sua presença com o CloudFront no Brasil é bastante tímida já que a empresa conta com pontos de distribuição apenas no Rio de Janeiro e São Paulo. Vivemos em um país com dimensões continentais e com grandes desafios de conectividade, principalmente em regiões mais afastadas do eixo RJ/SP, sendo assim a aderência do CloudFront para aplicações dentro do país é baixa.
Configuração complexa: É possível fazer regras com bastante granularidade dentro do Amazon CloudFront, mas para isso existe uma curva de aprendizagem longa. Vários usuários AWS relatam ter dificuldade em encontrar diversas informações e opções dentro do painel e o reflexo disso acaba sendo a implementação de configurações simples com apenas cache de assets estáticos e por muitas vezes com baixa eficiência de cache.
GoCache é uma alternativa viável em comparação ao CloudFront?
Sim. Ainda mais quando a maior parte do tráfego está concentrado no Brasil.
É natural duvidar que uma solução brasileira tenha desempenho comparável com a solução de CDN da Amazon, mas graças a nossa capilaridade de entrega, certamente a GoCache pode ser uma solução mais aderente ao seu negócio. Você pode ver abaixo um gráfico extraído da ferramenta de performance PerfOps comparando a entrega do CloudFront x GoCache:
Também é possível fazer comparações de latência por múltiplas origens utilizando a ferramenta de testes da ISP Tools que conta com mais de 100 provedores em todas as regiões do Brasil através dos links abaixo:
Consulta de resultados AWS:
http://www.isptools.com.br/ping#548!0!aws.amazon.com
Consulta de resultados GoCache:
http://www.isptools.com.br/ping#287!0!www.gocache.com.br
E caso queira entender um pouco mais sobre as vantagens de utilizar os serviços da GoCache como alternativa ao CloudFront, recomendamos a leitura dos artigos: