Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Wiki Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1
    • Issues 1
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Veiculos Via Montadora
  • WikiWiki
  • Wiki
  • Arquitetura

Last edited by gabriel.stundner Jun 21, 2023
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Arquitetura

Home Sprints Requisitos Arquitetura Processos Configuração Mockups Banco de Dados Instalação Gerência de Projeto Horários Disponiveis

Arquitetura

Esta seção é dedicada a apresentar a arquitetura definida para o projeto. Ela está dividida em 3 partes:

  • Frontend
  • Backend
  • Infraestrutura

Frontend

Repositório: https://tools.ages.pucrs.br/veiculos-via-montadora/frontend

Trabalho em andamento...

Backend

Repositório: https://tools.ages.pucrs.br/veiculos-via-montadora/backend

Trabalho em andamento...

Infraestrutura

Repositório: https://tools.ages.pucrs.br/veiculos-via-montadora/infrastructure

Nessa seção, será apresentada uma visão geral da infraestrutura do projeto.

Diagrama de Deploy

O diagrama a seguir apresenta a arquitetura em alto nível e o processo de deploy da infraestrutura do projeto Veículos Via Montadora:

Diagram Arquitetura

Orçamento AWS

Essa seção apresenta o orçamento da infraestrutura na AWS. O orçamento foi feito utilizando a ferramenta AWS Pricing Calculator e busca estimar o custo financeiro para manter a infraestrutura do projeto pelo pelo período de 1 semestre, sendo este a duração do projeto e da disciplina da AGES.


  • AWS Lambda: A função Lambda responsável por executar o código do backend da aplicação será invocada a cada requisição HTTP feita ao backend. Tratando-se de uma API, a função Lambda é cobrada por quantidade de requisições HTTP feitas, mas para gerar um custo realmente significativo, seria necessário um volume de requisições muito grande, na faixa dos milhões de requests. Por esse motivo, considerando que no máximo algumas milhares de requisições serão feitas ao backend, o custo da função Lambda será desprezível.

    Custo Mensal: ~ R$ 0,00 - Custo Semestral: ~ R$ 0,00


  • AWS API Gateway: O AWS API Gateway é um serviço que permite a criação de APIs RESTful. Ele funcionará como um intermédio entre o frontend e o backend da aplicação, fazendo a comunicação entre eles. O AWS API Gateway é também cobrado pela quantidade de requisições HTTP feitas, e, pelo mesmo motivo do função Lambda, o custo será desprezível.

    Custo Mensal: ~ R$ 0,00 - Custo Semestral: ~ R$ 0,00


  • AWS S3: O AWS S3 é um serviço de armazenamento de objetos na nuvem. Ele será utilizado para armazenar o arquivo responsável por guardar o estado do Terraform, o qual será utilizado para provisionar a infraestrutura da aplicação. O custo para armazenar o arquivo será desprezível, visto que o arquivo possui apenas alguns bytes. No entanto, existe a possibilidade de usarmos o AWS S3 para armazenar os PDFs manipulados pelo sistema, os quais são arquivos maiores. Considerando que precisaremos de 10Gb de armazenamento para os arquivos e que a quantidade de dados trafegados será de 100Gb mensais, o custo será de US$ 0.50 por mês, o que representa R$ 2,58.

    Custo Mensal: ~ R$ 2,58 - Custo Semestral: ~ R$ 15,48


  • AWS DynamoDB: O AWS DynamoDB é um serviço de banco de dados NoSQL. Ele será utilizado para armazenar o state lock do Terraform, impedindo com que o Terraform seja executado simultaneamente por mais de uma pessoa. Para isso é criada uma tabela de apenas uma linha, que será utilizada para guardar o lock. O custo para armazenar a tabela será desprezível. A opção On-Demand foi escolhida para o DynamoDB ao invés da opção Provisioned pois a opção On-Demand não possui custo fixo, sendo cobrado apenas pelo uso do serviço. A opção Provisioned possui um custo fixo mensal, o que não é interessante para o projeto, visto que o DynamoDB será utilizado apenas para guardar o state lock do Terraform.

    Custo Mensal: ~ R$ 0,00 - Custo Semestral: ~ R$ 0,00


  • AWS ECR: O AWS ECR é um serviço de armazenamento de imagens Docker. Ele será utilizado para armazenar as imagens Docker do frontend e do backend da aplicação. Se considerarmos que precisaremos de 5Gb de armazenamento para as imagens, o custo mensal será de US$ 0.50, o que representa R$ 2,58.

    Custo Mensal: ~ R$ 2,58 - Custo Semestral: ~ R$ 15,48


  • AWS EC2: O AWS EC2 é um serviço de computação em nuvem. Ele será utilizado para hospedar o frontend, o banco de dados e os runners do GitLab. Utilizando um tamanho de instância t3.small e ativando a opção de instância sob demanda, a qual gera custos por horas de uso, o custo mensal total será de US$ 15.18, ou R$ 78,48, levando em consideração que a instância ficará ativa 24 horas por dia, 7 dias por semana.

    Custo Mensal: ~ R$ 78,48 - Custo Semestral: ~ R$ 470,88


Resumo Geral: Para manter a infraestrutura do projeto por 1 semestre, esse será o custo financeiro estimado a cada mês e ao final do semestre:

  • Custo Mensal: ~ R$ 83,56
  • Custo Semestral: ~ R$ 501,36

Permissões AWS Terraform

Para que o Terraform possa provisionar a infraestrutura da aplicação na AWS via pipelines, é necessário que ele tenha permissões para executar as ações necessárias. Caso o Terraform fosse assumir uma role na AWS, foi identificado que pelo menos as seguintes permissões seriam necessárias:

  • AWSLambda_FullAccess
  • AmazonEC2FullAccess
  • AmazonDynamoDBFullAccess
  • AmazonAPIGatewayAdministrator
  • AmazonS3FullAccess
  • AmazonElasticContainerRegistryPublicFullAccess
  • AmazonVPCFullAccess
Clone repository
  • Arquitetura
  • Horarios
  • Instalacao
  • Mockups
  • Processos
  • Requisitos
  • Requisitos_old
  • Sprints
  • banco_dados
  • gerencia
  • Home
  • squads