Criando uma arquitetura escalável na AWS utilizando Cloudfront, CloudWatch, Elastic Beanstalk, Dynamodb - parte 1
Tags: aws, tutorial, cloud, performance
Published: 2021-12-16 03:41:29

Ferramentas necessárias:
* [Conta na cloud AWS](https://aws.amazon.com/)

A [Amazon Web Services (AWS)](https://aws.amazon.com/) é a plataforma de nuvem escalável mais abrangente e amplamente adotada do mundo. A AWS oferece mais de 200 serviços totalmente caracterizados de data centers globalmente e muitas empresas tem migrado seus sistemas On Premise para a cloud da AWS e nesse post vamos abordar a criação de uma arquitetura escalável auto gerenciada pela AWS através do recurso ElasticBeanstalk para uma aplicação que tenha picos de acessos e continue mantendo sua performance.
Vou dividir este post em 4 partes para facilitar o conteúdo e abordagem dos recursos utilizados na AWS.
Antes de iniciarmos irei fazer uma breve descrição sobre os recursos que utilizaremos dentro da cloud AWS nesta primeira parte do post.
* VPC (Virtual Private Cloud) - Um VPC é uma rede virtual específica para você dentro da AWS para que você mantenha todos os seus serviços AWS. É um data center lógico na AWS e terá gateways, tabelas de rotas, listas de controle de acesso de rede (ACL), sub-redes e grupos de segurança.
* Dynamodb: Banco de dados Nosql auto gerenciado pela AWS

Para iniciarmos vamos construir uma VPC utilizando o console da nossa conta AWS, pesquise na aba superior dentro da sua conta sobre VPC e clique no recurso VPC logo abaixo
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qfpn3x4dyv08avnrn6q4.png)

Dentro do dashboard do recurso VPC clique no botão Launch VPC Wizard e chegara na tela abaixo

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

Mantenha a primeira opção selecionada e clique no botao select na parte inferior, na próxima tela deixe a configuração conforme a imagem abaixo e clique no botão Create VPC
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/492sbd1dnpurxquv07fm.png)

Dentro do dashboard do recurso VPC da AWS clique na aba `Your VPCS` e podemos visualizar nossa VPC criada
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bw3617rekrhramd6hebh.png)

Clicando na aba `subnets` podemos ver que temos uma subnet linkada a nossa VPC dentro de uma Availability Zone
![Vpc criada](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oaqcy6h0jknji9t9ters.png)

![Availability Zone](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m5ezrp7mkiar2yueyguh.png)

Vamos criar mais 5 subnets publica em 5 diferentes Availability Zone, clique no botão Create Subnet e na tela a seguir em **VPC** selecione a VPC que criamos

![define vpc](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v839oo14wtc256stw9ep.png)

Em **Subnet Settings** configure a subnet conforme imagem abaixo e clique em `Add new subnet` para configurar a próxima subnet.
Obs: Clique no botão `Add new subnet` ate configurar as 5 subnets necessárias em 5 diferentes Availability Zone (conforme as imagens abaixo) e clique em create subnet 
![settings vpc](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6o4finvifhyvhl5znxam.png)

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

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

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

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

O resultado final que devemos chegar nesta parte e nossa VPC criada e com as 6 subnets relacionadas a ela, dentro da aba subnets filtre as subnets pelo nome da nossa VPC ( vpc-bootcamp-1) e tera que obter 6 subnets com 6 diferentes Availability Zone relacionados a esta VPC conforme imagem abaixo.

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

Agora e necessário criarmos uma rota na VPC para permitir trafego de internet dentro das subnets, novamente entre no recurso VPC da conta AWS e cique na aba Route Tables

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

Nesta tela filtre as route tables com o nome da VPC que criamos (vpc-bootcamp-1) e clique na route table id em que o parametro Main esta como Yes

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

Logo abaixo ira abrir uma aba com os dados da route table, no canto direito clique em `Edit Routes` e chegara na tela abaixo

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

Clique em `Add Route` e configure a nova rota conforme a imagem abaixo clicando em Save Changes.
Obs: Em target selecione a opção Internet Gateway e após selecione o igw que aparecer como opção.

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

Para finalizar este post vamos deixar criado a tabela `users` dentro do DynamoDb em nossa conta AWS, que será utilizada pela nossa aplicação, na pagina inicial do console da AWS pesquise por DynamoDb e clique no recurso do DynamoDb.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/99ruud6sb1ebjmutbmft.png)

Na tela a seguir clique em Create Table e configure a tabela na próxima tela conforme a imagem abaixo, feito isso clique em Create

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

[Link parte 2:] (https://dev.to/2020nani/criando-uma-arquitetura-escalavel-na-aws-utilizando-cloudfront-cloudwatch-elastic-beanstalk-dynamodb-parte-2-4dem) 

Deixo aqui meus contatos:
[linkedin](https://www.linkedin.com/in/nanialmeida/)
[github](https://github.com/2020nani)