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.