Hospendando seu Blog Na AWS por Centavos

O Primeiro Post

A ideia deste primeiro post é começar a demonstrar como montei este blog, para que possa servir como um tutorial para quem quiser começar o seu próprio.

O processo pode ser dividido em 3 partes: criação, versionamento, e hospedagem. Creio que para os dois primeiros já existe bastante material, então resolvi escrever detalhadamente somente sobre a hospedagem que foi a parte que não encontrei muita coisa em português.

Criação

Para criação do blog utilizei o gerador de sites estáticos Jekyll. O Jekyll é uma ferramenta que facilita a construção de sites estáticos como por exemplo blog. Seu objetivo é fazer com que o usuário se preocupe quase que exclusivamente com o texto, uma vez que ele já tenha criado seu template.

O Willian Justen escreveu um ótimo post demonstrando desde a instalação até a criação das páginas utilizando Jekyll.

Versionamento

É muito importante que tenhamos um controle sobre as modificações do blog. Para isso utilizei Git + Github para fazer o versionamento dos arquivos. Além disso utilizar o Github possibilita que outras pessoas possam contribuir com o blog.

O Fernando Daciuk tem diversos posts sobre Git e Github no seu blog.

Hospedagem

Para hospedagem vou demonstrar alguns serviços da AWS (Amazon Web Services). A AWS oferece uma enorme gama de serviços utilizando o paradigma de Cloud Computing. A principal característica destes serviços é o modelo pay-as-you-go, onde você só é cobrado pelo tempo que utilizar o serviço, sem contratos.

Irá ser necessário criar uma conta na AWS. Isso pode ser feito aqui. Ao criar a conta você poderá utilizar diversos serviços gratuitamente durante 1 ano. Com exceção do Route53, os demais serviços apresentados a seguir se enquadram no nível gratuito.

Os serviços que utilizei para hospedar o blog foram:

S3 Simple Storage Service - Armazenamento de arquivos estáticos

CloudFront - Serviço de entrega de conteúdo (CDN)

Route53 - Domínio e DNS

Armazenando Seus Arquivos No S3

O Simple Storage Service, mais conhecido por S3 é o serviço de armazenamento de arquivos da AWS. É aqui que vamos colocar o conteúdo do blog. Qualquer questão relativa a backup dos arquivos é providenciada pela AWS. Você só precisa se preocupar em fazer o upload dos arquivos.

No console principal, selecione o S3:

console aws

Clique no botão Create Bucket. O bucket é o lugar onde irão ficar armazenados seus objetos no S3. Após, preencha o nome do bucket com o domínio do seu blog. Escolha a região US Standard pois é a mais barata e clique em Create.

Criando um bucket

Faça upload do conteúdo do seu blog dentro do bucket. Se você já leu o post sobre Jekyll faça upload do conteúdo da pasta _site.

Upload de arquivos no bucket

Selecione o bucket criado e vá na aba Properties e na opção Permissions. Clique no botão Edit bucket policy

Permissões do bucket

Adicione o seguinte código:

{
	"Version": "2008-10-17",
	"Statement": [
		{
			"Sid": "Allow Public Access to All Objects",
			"Effect": "Allow",
			"Principal": {
				"AWS": "*"
			},
			"Action": "s3:GetObject",
			"Resource": "arn:aws:s3:::www.meublog.com/*"
		}
	]
}

Agora no menu Static Web Hosting selecione a opção Enable website hosting e informe sua página inicial e a página de erro.

Ativando página estática no bucket

Ao ativar esta opção o S3 já lhe fornece uma URL para o seu bucket. Se você acessá-la já deverá visualizar a página inicial do seu blog.

URL Bucket S3

Mas não queremos está URL feia certo? Vamos trabalhar nisso então.

Entregando o Conteúdo Do Seu Blog Rapidamente Com CloudFront

Ao criarmos o bucket no S3 selecionamos a região US Standard. Isso significa que nossos arquivos estão sendo hospedados nos Estados Unidos. Sempre que um leitor de seu blog acessá-lo de fora dos EUA ele vai ter um tempo de carregamento da página maior, em virtude da latência.

Mas como podemos entregar o conteúdo do nosso blog de forma otimizada para qualquer lugar do mundo? É neste ponto que entra o CloudFront. Este serviço funciona como um CDN - Content Delivery Network. Ele se encarrega de armazenar uma cópia de seus arquivos em diversos lugares do mundo.

Assim se alguém acessar o seu blog do Brasil, os arquivos serão recuperados dos servidores da AWS localizados no Brasil, reduzindo a latência e entregando uma melhor experiência para o leitor.

O primeiro passo para termos estas vantagens em nosso blog é selecionar a opção CloudFront no console principal, clicar em Create Distribution e selecionar a opção Web. Em Origin Domain Name selecione o bucket criado no S3. As demais opções não precisam ser alteradas.

Criando distribuição no CloudFront

No campo Alternate Domain Names coloque o domínio do seu blog das duas formas que são mostradas na imagem. Também adicione o objeto raiz da sua distribuição, que será o mesmo que você selecionou no S3, nesse caso o index.html. As demais opções podem permanecer com os valores padrão.

Criando distribuição no CloudFront

Agora se irmos no menu lateral Distributions e selecionarmos a distribuição recém criada, poderemos verificar que ela tem um Domain Name. Essa url irá devolver também a página inicial do blog, mas agora utilizando o serviço CloudFront. Mas ainda temos uma URL pouco amigável. Chegou a hora de comprarmos nosso próprio domínio.

Obtendo Uma URL Amigável Com Route53

Agora que já temos nossos arquivos hospedados e sendo entregues da melhor forma possível, precisamos ter uma URL amigável para que nosso blog seja encontrado facilmente pelos leitores. O primeiro passo é adquirir um domínio, que será o endereço de seu blog na web. Selecione o Route53 no console principal, Registered Domains, Register Domain. Escolha o nome do seu domínio e a extensão final da URL. Domínios .com custam $12, mas não se assuste com esse valor ele é anual.

Registrando um domínio no Route53

Clicando no botão check o sistema irá verificar se o domínio escolhido está disponível. Se positivo clique em continue até finalizar a compra.

Agora que temos nosso domínio precisamos fazer as configurações de DNS para quando o leitor digitar o endereço do nosso blog ele seja redirecionado para a nossa distribuição do CloudFront.

Ainda no Route53 clique na opção Hosted Zones, e depois em Create Hosted Zone. Em Domain Name coloque o endereço do seu blog e clique em Create.

Hosted Zone no Route53

Com a Hosted Zone selecionada clique em Go to Record Sets. Clique em Create Record Set. Marque a opção Alias como Yes, e selecione sua distribuição do CloudFront no campo Alias Target.

Records Sets no Route53

Faça o mesmo procedimento novamente, mas agora preenchendo o campo Name com www. Seus Records Sets devem estar parecidos com estes.

Records Sets no Route53

Pronto

Agora basta esperar a propagação do DNS, que pode levar até 24 horas e depois começar a escrever em seu blog. Mesmo após passar o período do free trial da AWS o custo de hospedagem do blog será muito baixo. Tirando o domínio que tem um custo um pouco mais elevado, você irá gastar menos de $1 por mês.

Se interessou pelos serviços da AWS? Fique atento que virão mais posts sobre o assunto em breve. Até mais.