Skip to content

Infraestrutura, como código, para arquiteturas Serverless de aplicações front-end e back-end

Notifications You must be signed in to change notification settings

gugamainchein/iac-serverless-architecture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IaC Serverless Architecture

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.

Arquitetura do projeto - Frontend

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:

Arquitetura AWS

Arquitetura do projeto - Backend

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:

Arquitetura AWS

Custo envolvido - Frontend

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

Custo envolvido - Backend

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

Instalação

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

Histórico de mudanças

  • 0.1.0
    • Primeira versão da aplicação

Sobre os criadores

Faça sua contribuição

  1. Realize o fork do projeto (https://github.com/gugamainchein/iac-serverless-architecture/fork)
  2. Crie a nova feature em uma branch (git checkout -b feature/bucket_acl)
  3. Faça o commit das suas mudanças (git commit -am 'Just changing bucket acl')
  4. Realize o push para a branch (git push origin feature/bucket_acl)
  5. Crie um novo pull request

About

Infraestrutura, como código, para arquiteturas Serverless de aplicações front-end e back-end

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published