Logo JG
João Gabriel DevOps & Cloud
Voltar aos projetos
Projeto Nº 01

Portfólio

Este próprio site: um portfólio estático com estética de desenho animado dos anos 40, hospedado na AWS com S3 e CloudFront.

  • HTML
  • Tailwind CSS
  • AWS S3
  • CloudFront
  • ACM
  • Route 53

Contexto

Faz tempo que eu queria ter um site pessoal e um portfólio, mas a ideia nunca saía do papel. Quando tentei, os primeiros esboços não me agradavam e eu acabava desistindo, sem saber direito como dar personalidade à interface. Dessa vez decidi não parar até chegar a um conceito que me agradasse, e usar ferramentas de inteligência artificial como parceiras de brainstorming fez toda a diferença.

Eu gosto muito de assistir a desenhos animados antigos, principalmente pelo cuidado com que cada detalhe era feito, e foi daí que veio a estética do site. Juntei isso ao tema de nuvens, que brinca com o cloud computing, e o resultado me deixou muito contente.

Decisões e raciocínio

Eu não queria simplesmente colocar o site no ar da forma mais rápida, então descartei opções de hospedagem facilitada, como PaaS. Como tenho interesse em infraestrutura e queria que o projeto também servisse de estudo, escolhi a AWS como base e montei cada parte por conta própria.

Documentação dos passos

1. Domínio

Primeiro, registrei o domínio jgsouza.com.br no Registro.br e, em seguida, comecei a montar a infraestrutura do meu portfólio na AWS.

2. Armazenamento no S3

Criei um bucket no S3 para armazenar os arquivos do site (o HTML e os assets) e o mantive com o acesso público bloqueado, de modo que somente o CloudFront, que serve o site aos visitantes, consiga ler seu conteúdo. O CloudFront é uma CDN (rede de distribuição de conteúdo): ele entrega os arquivos a partir de servidores próximos ao visitante, que assim nunca se comunica diretamente com o S3.

3. Certificado HTTPS no ACM

Depois, solicitei no AWS Certificate Manager (ACM) um certificado público SSL/TLS para www.jgsouza.com.br e jgsouza.com.br. Ele é o que habilita o HTTPS, criptografando a conexão entre o visitante e o site. A validação foi feita por DNS: criei no Registro.br, em modo avançado, os dois registros CNAME fornecidos pelo ACM, que comprovam que o domínio é meu.

4. Distribuição no CloudFront

Com o certificado emitido, criei uma distribuição no CloudFront, que une as peças: usa o bucket como origem, com acesso privado por meio de uma política que só autoriza essa distribuição, e utiliza o certificado e o domínio escolhidos.

5. DNS e a migração para o Route 53

Inicialmente, apontei o www para o endereço gerado pelo CloudFront (xxxx.cloudfront.net) com um CNAME no Registro.br, mas o domínio raiz (jgsouza.com.br) não funcionava, porque o DNS não permite CNAME nesse nível.

Para resolver, migrei o DNS para o Amazon Route 53: criei uma hosted zone, recriei nela os registros de validação do ACM e configurei registros do tipo alias, que apontam tanto a raiz quanto o www para a distribuição. Por fim, troquei os servidores DNS no Registro.br pelos do Route 53, e agora os dois endereços abrem o portfólio por HTTPS.

O que aprendi

Antes deste projeto, eu nunca tinha trabalhado com a maior parte dos serviços que precisei usar, como ACM, CloudFront e Route 53. Montar o portfólio do zero foi uma ótima oportunidade de entender como essas peças se conectam, do armazenamento dos arquivos até a entrega por HTTPS no meu próprio domínio.