Parte 2 da série de recursos da AWS que me ajudaram e provavelmente vão te ajudar durante uma entrevista de System Design.
A primeira postagem você pode encontrar clicando aqui.
Lembrando novamente que aqui é apresentado um pequeno resumo com palavras chaves em uma linguagem informal sobre cada recurso para que você possa ler e refrescar a memória minutos antes da entrevista, portanto para que seja efetivo é necessário que anteriormente haja uma leitura mais aprofundada desses recursos.
Dessa vez trouxe três serviços que se encaixam no inicio do pipeline de qualquer aplicação web.
- Route 53
- Serviço de DNS (Domain Name System).
- Realiza a conexão, tradução, do nome para o endereço IP.
- CloudFront
- Serviço de CDN (Content delivery Network).
- Basicamente é uma rede de servidores distribuídos globalmente.
- Distribui o conteúdo através de uma área geográfica.
- Visando distribuir o conteúdo de forma eficiente e escalável.
- AWS Cognito
- Serviços para a autenticação e autorização dos usuários.
- Faz o controle de acesso.
- Suporte para autenticação federada (Google, Facebook, Apple, etc).
Por experiência própria é mais fácil entender esse tipo de coisa com exemplos de aplicação reais então criei uma arquitetura bem simples tentando utilizar os recursos dessa postagem e os da Parte 1.
A imagem acima é a representação de uma arquitetura básica para hospedar páginas web estáticas na AWS. Nesse exemplo apenas usuários autorizados podem acessar a página e a cada acesso recebem uma mensagem de boas vindas.
Basicamente o que está acontecendo é o seguinte:
1. Os arquivos da página web são armazenados no bucket S3.
2. O Route 53 é utilizado para associar o endereço IP com o nome de domínio escolhido. A solicitação do usuário para se conectar a pagina web é repassada ao CloudFront que tem como responsabilidade de distribuir o conteúdo.
3. O CloudFront encaminha essa solicitação para o Cognito autenticar e autorizar o acesso.
4. Após o Cognito verificar as credenciais e liberar o acesso, uma solicitação de autorização confirmada é enviada ao CloudFront.
5. O CloudFront então encaminha a solicitação para o endpoint configurado no API Gateway.
6. O API Gateway encaminha a solicitação para a função Lambda associada ao endpoint.
7. A função Lambda processa a solicitação e retorna a resposta para o API Gateway.
8. Por sua vez o API Gateway retorna a resposta para o CloudFront que então repassa a resposta com a mensagem de boas vindas para a interface do Usuário.
9. Pronto, aplicação concluída!
Parece muita coisa, mas é bem simples 😅 Leia com calma cada passo que você vai entender. Confia!
O que vocês acharam de incluir um exemplo usando os recursos, ajudou o entendimento de alguma forma?
Quanto a arquitetura tem algo que vocês fariam de forma diferente?
Eu adoraria ouvir opiniões, sugestões e responder quaisquer dúvidas sobre o assunto! Fiquem à vontade 😁
Top comments (2)
Adorei a arquitetura, ajuda bastante no entendimento, ter algo pra ver como realizar o processo, simplesmente incrível o artigo, ansioso para a continuação.
Muito obrigado por compartilhar seu conhecimento 🦤.
Obrigada pelo feedback Raul, já estou pensando em uma aplicação interessante para a parte 3!
Para desenhar a arquitetura utilizei o excalidraw, os ícones da AWS é só baixar a biblioteca AWS Serverless Icons 😉