Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • V Vou Imigrar Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • Vou Imigrar
  • Vou Imigrar Wiki
  • Wiki
  • arquitetura

Last edited by Arthur Kunzler Jun 18, 2022
Page history

arquitetura

Home Escopo Gerência Processo Mockups Configuração Arquitetura DataBase Infra Referências

Arquitetura do Sistema

Descrição

Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend, além dos dados relativos ao deploy.

Sumário

  • Arquitetura do Sistema
    • Descrição
    • Sumário
    • Arquitetura Geral da Aplicação
    • Deploy
      • Recipes API
      • Diagrama de Deploy
    • Backend
      • Definições de Tecnologias
      • Módulos do Sistema
      • Diagrama de Fluxo
    • Frontend
      • Definições de Tecnologias
      • Módulos do Sistema
      • Diagramas de Componentes
      • Diagrama do Sistema

Arquitetura Geral da Aplicação

  • Backend: aplicação SpringBoot que contém os serviços que espelham as regras de negócio
  • Frontend: aplicação React com Javascript que representa a interface de usuário.

arqVouImitgrar.drawio

Deploy

Diagrama de Deploy

arqVouImigrar.drawio

Backend

Definições de Tecnologias

É uma RESTful API construída utilizando Spring, que é um dos frameworks Java mais populares do mercado. Executando em um container Docker dentro de uma EC2 da AWS, o banco de dados está hospedado na mesma plataforma, porém executando em um container separado. Para a documentação e teste dos endpoints da aplicação, foi utilizado o Swagger, uma ferramenta de documentação e testes que utiliza JSON. Referente a estrutura, utilizamos o Layers Pattern (padrão camadas). Contendo três camadas:

  • Presentation layer: responsável por fornecer os endpoints da aplicação. Possui o controller, Data Transfer Objects (DTOs) e entidades.
  • Business logic layer: possui toda lógica do sistema, como cálculos, transformações de dados e processamento de dados, neste caso está presente no pacote services.
  • Data access layer: responsável pela comunicação com o banco de dados, criando, buscando, atualizando e deletando dados do banco. Neste caso temos esta camada no pacote repository.

Módulos do Sistema

  • config: contém as configurações de cors e do Swagger.
  • controller: é o ponto de entrada do backend, onde ficam definidos os endpoints da aplicação.
  • entity: camada que contém entidades que espelham o banco de dados.
  • dto: possui os objetos utilizados para transportar dados entre as camadas.
  • enums: possui as enumerações utilizadas nos dtos ou entidades.
  • message: centraliza todas as mensagens que são devolvidas para o frontend.
  • repository: é responsável por fazer toda comunicação com o banco de dados.
  • security: define configurações de acesso aos endpoints e controla login e autenticação de usuários cadastrados.
  • service: camada que contém as regras de negócio.
  • util: possui classes que tem métodos que são utilizados em diversas serviçõs, como por exemplo o Validations.java que contém validações de campos de um objeto. Nessa camada também ficam as exceptions personalizadas e os handlers dessas exceptions.

Frontend

Definições de Tecnologias

Desenvolvido com a biblioteca React utilizando Javascript, utiliza Progressive Web Application (PWA) para termos a experiência de uso muito próxima da oferecida pelos mobile apps em smartphones. Armazenado no Amazon S3 como um website estático e utiliza um padrão de múltiplas camadas.

Módulos do Sistema

  • assets: armazena os conteúdos estáticos, como as imagens e logo usados na aplicação.
  • components: contém os elementos utilizados nas páginas e podem ser reaproveitados e utilizados em várias.
  • config: possui as configurações gerais da aplicação, como a configuração de tema do Chakra.
  • pages: contém as páginas da aplicação, que normalmente são compostas por diversos componentes.
  • store: contém as funções responsáveis por fazer a comunicação com o backend e armazenamento dos dados através do Redux.
  • utils: contém funções utilizadas em diversos componentes para fazer validação, como por exemplo o formato do e-mail.
Clone repository
  • Infraestrutura
  • Instalação
  • Mockups
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • arquitetura
  • banco_dados
  • codigo
  • configuracao
  • escopo
  • estudos
  • gerencia
  • Home
  • processo