Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • 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
    • 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
  • Amparo
  • wiki
  • Wiki
  • arquitetura

Last edited by Joao Pedro Hallberg R. Martins Jul 05, 2024
Page history
This is an old version of this page. You can view the most recent version or browse the history.

arquitetura

Home Escopo e Cronograma Processo Design/Mockups Configuração Arquitetura Código BD Qualidade Utilização

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

Descrição

  • Tecnologias
    • Spring Boot
    • ReactJs
    • Firebase
    • GitLab
    • Docker
    • Comunicação entre as tecnologias utilizadas
  • Modelo Arquitetural
    • Definições do modelo
    • Fluxograma
  • Estrutura de Arquivos do Backend
  • Estrutura de Arquivos do Frontend
  • Diagrama comunicação entre pacotes
  • Diagrama de deploy

Tecnologias

Spring Boot (Backend)

Spring Boot é uma microestrutura de código aberto mantida por uma empresa chamada Pivotal. Ele fornece aos desenvolvedores Java uma plataforma para começar a usar um aplicativo Spring de nível de produção configurável automaticamente. Com ele, os desenvolvedores podem começar rapidamente sem perder tempo na preparação e configuração de seu aplicativo Spring. No contexto do projeto Amparo foi escolhido como a tecnologia a ser usada para o desenvolvimento do backend.

PostgreSQL (Banco de Dados)

O PostgreSQL é um sistema de banco de dados relacional orientado a objetos poderoso e de código aberto, com mais de 30 anos de desenvolvimento ativo, que tem uma alta confiabilidade, robustez de recursos e desempenho. No contexto do projeto Amparo é a tecnologia escolhida para o banco de dados da aplicação.

Docker (Conteinerização)

Docker é um conjunto de produtos de plataforma como serviço (PaaS) que usam virtualização de nível de sistema operacional para entregar software em pacotes chamados contêineres. No contexto do projeto Amparo foi escolhido é ferramenta de conteinerização do artefatos que irão ser executados em maquinas EC2 no AWS.

React.js (Frontend)

O React (também denominado React.js ou ReactJS) é uma biblioteca front-end JavaScript de código aberto com foco em criar interfaces de usuário em páginas web. No contexto do projeto Amparo foi escolhido como a tecnologia a ser usada para o desenvolvimento do frontend.

GitLab

O GitLab é um gerenciador de repositório de software baseado em git, com suporte a Wiki, gerenciamento de tarefas e CI/CD. GitLab é similar ao GitHub, mas o GitLab permite que os desenvolvedores armazenem o código em seus próprios servidores, ao invés de servidores de terceiros.

Comunicação entre as tecnologias utilizadas

Modelo Arquitetural REST

Para o escopo deste projeto foi desenvolvido uma API REST. REST API é uma interface de programação de aplicativo (API ou API da web) que está em conformidade com as restrições do estilo de arquitetura REST e permite a interação com serviços da web, REST significa transferência de estado representacional. A aplicação em React serve como nosso cliente rest, responsavél por lidar com a requisições a serviço REST. O Serviço REST é a api desenvolvida com o Spring Boot onde são definidos os endpoints para a realização das requisições pelo cliente.

Definições do Modelo Arquitetural REST

  • Arquitetura cliente-servidor: A interface do usuário do site / aplicativo deve ser separada da solicitação / armazenamento de dados, para que cada parte possa ser dimensionada individualmente.

  • Statelessness: a comunicação deve ter no contexto do cliente armazenado no servidor. Isso significa que cada solicitação ao servidor deve ser feita com todos os dados necessários e nenhuma suposição deve ser feita se o servidor possui dados de solicitações anteriores.

  • Sistema em camadas: o cliente não deve saber se está se comunicando diretamente com o servidor ou com algum intermediário. Esses servidores intermediários (sejam proxy ou balanceadores de carga) permitem escalabilidade e segurança do servidor subjacente.

Fluxograma em alto nível de chamadas de uma API REST

Estrutura de Arquivos do Backend

Estrutura de Arquivos do Backend

alpha-backend/
└── src/
    ├── main/
    │   ├── java/
    │   │   └── br.com.alpha.api/
    │   │       ├── api/
    │   │       │   ├── controller/
    │   │       │   │   └── ExampleController.ja
    │   │       │   └── ExampleApi.java
    │   │       ├── config/
    │   │       │   └── ExampleConfig.java
    │   │       ├── dto/
    │   │       │   └── ExampleDto.java
    │   │       ├── exception/
    │   │       │   └── ExampleException.java
    │   │       ├── handler/
    │   │       │   └── ExampleHandler.java
    │   │       ├── mapper/
    │   │       │   └── ExampleMapper.java
    │   │       ├── model/
    │   │       │   ├── entity/
    │   │       │   │   └── ExampleEntity.ja
    │   │       │   └── enumeration/
    │   │       │       └── enum.java
    │   │       ├── repository/
    │   │       │   └── ExampleRepository.java
    │   │       ├── service/
    │   │       │   ├──  ExampleService.java
    │   │       │   └── impl/
    │   │       │       └── ExampleServiceImpl.java
    │   │       ├── validator/
    │   │       │   ├── ExampleValidator.java
    │   │       │   └── 
    │   └── resources
    │       └── application.yml
    └── test/

Explicativo dos diretórios do backend

web: Impelementação dos endpoints da aplicação, no direitorio controller estão os contratos do endpoints que possuem as anotações do swagger para documentação da api no código.

config: Arquivos anotados com anotação @Configuration, para indicar as classes que serão usadas para configurações e definições de beans.

dto: Classes java para comunicação rest entre a backend e o front, com a finalidade de não expor as classes de domínios.

exception: Classes customizadas para lançamento de exceção.

handler: Classe responsável por lidar e formatar as exceções lançadas no backened para melhor entendimento do erro no frontend.

model: Classes que descrevem o nosso modelo de domínio, sendo a representação visual de classes conceituais ou objetos do mundo real em um domínio de interesse, também representam as entidades da modelagem do banco de dados.

Repository: Interface JPA para comunicação com o banco de dados.

service: Classes responsáveis pela lógica de negócio.

validator: Classes com o intuito de validar os dados das requisições que vem do cliente.

resources: Recursos e configurações de propriedades da aplicação.

Frontend

Definições de Tecnologias

TBD

Módulos do Sistema

TBD

Diagramas de Componentes

TBD

Diagrama do Sistema

TBD

Diagrama de Deploy

Clone repository
  • arquitetura
  • banco_dados
  • codigo
  • configuracao
  • design_mockups
  • escopo
  • Home
  • processo
  • qualidade
  • utilizacao