☁️ Serviços da AWS que vão te salvar em uma entrevista de system design (Part 2/4)
Tags: braziliandevs, aws, architecture, interview
Published: 2023-11-21 20:29:00

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](https://dev.to/vanessatelles/servicos-da-aws-que-vao-te-salvar-em-uma-entrevista-de-system-design-part-14-29jh).

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.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pr7as3meifeeybn37srq.png)

- 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.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m8icar0wlpnqosr5wrr9.png)

- 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).


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwnzebo9mh8fquy85ocg.png)

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.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1f23nem34drtl14h7le0.png)

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!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/420hbv7yxmxnlds96zip.gif)

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 😁