Como vimos há alguns artigos atrás, uma CDN (ou Content Delivery Network) é umas das melhores formas de optimizar o desempenho do nosso site.
A grande vantagem de uma CDN é simples: servir os conteúdos de uma forma rápida e fiável, seja para um visitante de Portugal ou de Singapura. Uma CDN disponibiliza os dados a partir de vários data centers espalhados pelo mundo, chegando a informação mais depressa a qualquer utilizador.
Os grandes sites colocam os seus principais conteúdos (sejam eles texto, imagens, scripts, vídeos, podcasts ou até aplicações) em CDNs não só para melhor servir o utilizador (e obter melhor ranking no Google), mas também para diminuir o tráfego e tempo de acesso ao site. Muitas vezes, tal acção também é responsável pela redução nos custos de hosting.
Ao contrário do que se possa pensar, este tipo de serviço é tremendamente barato e, na maior parte das ofertas, só se paga o que realmente se utiliza – o que significa que pequenos negócios pagam uma conta diferente das grandes empresas ao final do mês.
A Amazon CloudFront
Há imensas empresas no mercado, mas as 3 CDNs mais populares são a Amazon CloudFront, a MaxCDN e a Cloudflare.
Acredito que todas pratiquem preços e funcionalidades similares. Devido à sua popularidade (afinal de contas, até o Dropbox a utiliza!), optei pela Amazon CloudFront e posso dizer que estou muito satisfeito com a escolha.
Quando nos inscrevemos, não temos que começar logo a pagar. A Amazon oferece o AWS Free Usage Tier, uma espécie de promoção de 12 meses, onde podemos testar os serviços de borla se a utilização for razoável.
A AWS engloba vários serviços, mas no caso da CloudFront, temos direito a 50 GB de transferências de dados e 2,000,000 de pedidos HTTP e HTTPS por mês.
No que toca a preços, estes mudam com frequência, à medida que o custo de armazenamento baixa. Ou seja mudam… para melhor.
Como referi, a despesa mensal dependerá do tráfego e da localização onde o acesso aos conteúdos foi feito, mas estamos a falar de menos de 25 cêntimos por GB transferido (no pior cenário).
Os preços podem ser consultados aqui. O login e o pagamento pode ser feito com a nossa informação habitual da Amazon.
Como se pode ver, não há grandes razões para não experimentar. A grande barreira à entrada é, na verdade, o conhecimento técnico que é necessário ter para a configurar. Mas é para isso que estou aqui hoje a escrever este artigo!
Configurando a Amazon CloudFront
Para configurarmos a CDN, primeiro temos que utilizar o serviço Amazon S3.
O S3 é basicamente o serviço de cloud storage da Amazon, como o Dropbox ou a Meo Cloud, mas bem menos sexy e intuitivo.
Só depois de criarmos um bucket (que é um pouco como uma pasta do FTP, apesar de ter algumas diferenças) é que podemos criar uma CDN para ele.
Passo #1: Entrar na Amazon S3 e criar um bucket
Depois de fazermos login, teremos de optar pelo serviço Amazon S3, que estará dentro de Storage & Content Delivery.
Aqui, será necessário criar um bucket. Já tenho aqui um criado para este blog, pelo que estou aqui vou criar um novo (até porque estou em vias de começar um podcast e a CDN será útil para o efeito).
Basta clicar no botão azul Create a Bucket, dar um nome e escolher a região mais próxima do nosso target principal – neste caso Irlanda, visto no meu caso ser predominantemente para Portugal.
Depois, podemos clicar em Create, ignorando o Set up logging.
Passo #2: Alterar as permissões
O S3 não torna os conteúdos acessíveis publicamente de origem. Teremos de mudar as permissões para que tal aconteça.
Para tal, basta seleccionarmos o bucket que acabámos de criar e, à direita, clicar em Permissions-> Edit bucket policy.
Este é o código que temos de inserir – a partir daí, qualquer ficheiro transferido para dentro do bucket ficará público.
NOTA: será necessário alterar xxx123
pelo nome do nosso bucket.
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::xxx123/*"
}
]
}
Depois basta clicar em Save.
Passo #3: Criar uma distribuição no CloudFront
Agora estamos em condições de passar para a CloudFront. Para tal, acedemos ao menu do topo da página e clicamos em CloudFront.
Dentro do CloudFront, teremos de clicar em Create Distribution.
Aí, optaremos pela opção Web e clicamos em Get Started.
O menu seguinte é algo intimidante, mas na verdade tudo o que temos de fazer é preencher o primeiro campo: Origin Domain Name com o bucket que criámos no passo #1.
O resto será preenchido automaticamente e não precisamos de efectuar qualquer alteração. Depois, basta fazer scroll até ao final da página e clicar em Create Distribution.
NOTA: Os ficheiros que lá colocaremos ficarão num endereço do género domínio.cloudfront.net
. Mas podemos criar um CNAME e utilizar o nosso próprio domínio (como no caso deste blog, onde todas as imagens estão em cdn.brunobrito.pt
em vez de domínio.cloudfront.net
).
Se pretendermos esta alteração, devemos colocar um visto na nossa recém-criada distribution e clicar em Distribution Settings e logo de seguida em Edit, na tab General.
Aí acrescentamos o CNAME desejado (algo do género cdn.omeudomínio.com
, por exemplo) em Alternate Domain Names (CNAMEs). Depois, confirmamos a nossa alteração clicando no botão azul Yes, Edit.
Passo #4: Aguardar que a distribuição fique activa
Depois de completarmos os 3 passos anteriores, poderemos ter de aguardar um pouco até que tudo fique devidamente activado. Quando estiver Deployed, tudo estará OK.
No final, deveremos ter algo semelhante à imagem em baixo.
Passo #5: Adicionar o CNAME no nosso hosting (opcional)
Se no passo #3 optámos por criar um CNAME, será necessário adicioná-lo também no nosso hosting.
Cada painel de controlo é diferente e em alguns serviços será mesmo necessário entrar em contacto com a empresa para que tal aconteça.
No meu caso, recorri a um hosting partilhado que tenho na Dreamhost e pude configurá-lo sozinho.
No Dreamhost, tive de entrar no meu painel de controlo e ir a Domains-> Manage Domains. Escolhi o meu domínio e cliquei em DNS.
Depois, bastou criar o CNAME com o mesmo nome em Name e colocar o domínio da Amazon que termina em cloudfront.net
em Value .
Depois de um clique em Add Record Now! e de aguardar algum tempo, tudo ficou a funcionar devidamente.
Transferindo ficheiros para a Amazon S3
Apesar de podermos transferir ficheiros na página da Amazon S3, tal é longe de ideal. Felizmente, existem alternativas.
Uma delas é o Cyberduck, uma aplicação disponível tanto para Windows como macOS. Neste artigo, vou-te apresentar outras 2 que foram, mais tarde, descontinuadas: o AirFile (para macOS) e o S3 Fox Organizer, um plug-in para Firefox.
Ambos funcionam de forma muito similar a um programa FTP. Para configurar estes programas, vamos precisar da Access Key e da Secret Key para a nossa conta S3.
Podemos obtê-las dentro da painel de controlo da Amazon AWS se clicarmos no nosso nome, no canto superior direito, e clicarmos em Security Credentials.
Aí, teremos de clicar em Access Keys e criar uma nova, se ainda não tivermos uma. Convém também guardá-la num local seguro, visto que a Amazon deixou de permitir a recuperação das Access Keys desde Abril de 2014.
Assim, podemos facilmente transferir imagens com o S3Fox para o nosso blog… como fiz para este post!
NOTA: Se depois da criação da CDN surgir o erro “Error connecting! – Temporary Redirect”, teremos de esperar um pouco mais. Na maioria das vezes, este caso acontece devido á conta ser nova e ainda não estar devidamente propagada.
E está feito. Parabéns, acabaste de configurar a tua primeira CDN!