Automatizar infraestruturas é um desafio gigante, principalmente quando falamos de arquiteturas AWS Serverless. Neste cenário, cada detalhe passa a ser importante, em decorrência da importância dos detalhes nas configurações dos recursos serverless.
Pensando nos desafios das configurações sendo realizadas de forma manual, como o alto tempo de configuração e altas chances de erro, construímos esse repositório para que você possa automatizar suas infraestruturas AWS Serverless e preocupar-se somente com seu código.
Os principais recursos que irão nos apoiar na configuração de nossa aplicação são:
-
S3:
- Armazenamento dos arquivos estáticos do frontend.
-
WAF:
- Firewall da aplicação, controlando as requisições e formatações delas no Cloudfront.
-
Codecommit:
- Controle de versionamento e features do projeto.
-
Codebuild:
- Ferramenta utilizada para download dos pacotes da aplicação, além de execução dos comandos de testes e build.
-
Codepipeline:
- Recurso AWS responsável por automatizar o processo de build e deploy, por meio do gerenciamento via esteira.
Veja a arquitetura abaixo para esclarecer as conexões entre os recursos:
Os principais recursos que irão nos apoiar na configuração de nossa aplicação são:
-
S3:
- Armazenamento dos logs da pipeline e cache do Serverless Framework.
-
DynamoDB:
- Banco de dados NoSQL, utilizado para armazenamento dos dados da API.
-
Lambda:
- Serviço responsável pela execução dos códigos das funções.
-
API Gateway:
- Camada que fornecerá o endpoint e irá gerenciar todo o roteamento das requisições para as funções Lambda e o User Pool do Cognito.
-
WAF:
- Firewall da aplicação, controlando as requisições e formatações delas do API Gateway.
-
Cognito:
- Serviço responsável por fornecer a camada de federação de usuários da aplicação.
-
Codecommit:
- Controle de versionamento e features do projeto.
-
Codebuild:
- Ferramenta utilizada para download dos pacotes da aplicação, além de execução dos comandos de testes e build.
-
Codepipeline:
- Recurso AWS responsável por automatizar o processo de build e deploy, por meio do gerenciamento via esteira.
-
Secrets Manager:
- Serviço AWS que é responsável por armazenar as chaves sensíveis da aplicação.
Veja a arquitetura abaixo para esclarecer as conexões entre os recursos:
Como você deve saber, os recursos AWS cobram por utilização e é importante trazermos essa visão de custo envolvido na arquitetura apresentada, pois esse tema pode tornar-se um fator de tomada de decisão da viabilidade técnica e de negócio da aplicação.
- Norte Virgínia: $ 6.00 / mês
O calculo foi feito pelo infracost, você pode encontrar clicando aqui
Como você deve saber, os recursos AWS cobram por utilização e é importante trazermos essa visão de custo envolvido na arquitetura apresentada, pois esse tema pode tornar-se um fator de tomada de decisão da viabilidade técnica e de negócio da aplicação.
- Norte Virgínia: $ 7.80 / mês
O calculo foi feito pelo infracost, você pode encontrar clicando aqui
Dado todo cenário de recursos e custos envolvidos, para essa aplicação, estamos utilizando o Terraform. Portanto, é necessário que você possua o Terraform instalado. Podendo executar o comando abaixo para instalar.
sudo sh scripts/install.sh
Após a instalação do Terraform e a conta AWS preparada para utilização, basta executar os comandos abaixo para iniciar o projeto.
Clonando o repositório e entrando na pasta:
git clone https://github.com/gugamainchein/iac-serverless-architecture
cd iac-serverless-architecture
Executando o projeto:
sudo sh scripts/apply.sh
- 0.1.0
- Primeira versão da aplicação
- Gustavo Mainchein - @gugamainchein – gustavomainchein@outlook.com
- Raul Soares - @r4ulrs - raulsoares@outlook.com
- Realize o fork do projeto (https://github.com/gugamainchein/iac-serverless-architecture/fork)
- Crie a nova feature em uma branch (
git checkout -b feature/bucket_acl
) - Faça o commit das suas mudanças (
git commit -am 'Just changing bucket acl'
) - Realize o push para a branch (
git push origin feature/bucket_acl
) - Crie um novo pull request