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 52
    • Issues 52
    • 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
  • CP - Planta
  • WikiWiki
  • Wiki
  • arquitetura

Last edited by Alexya Silva Rocha de Oliveira Oct 26, 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 Processo Design/Mockups Gerência Estudos Arquitetura Contratos BD Qualidade Configuração Instalação Instruções Utilização Analytics Infraestrutura Dicas

Arquitetura da Aplicação

Descrição

Nesta seção, detalhamos a arquitetura da aplicação, abordando as tecnologias utilizadas, o fluxo de deploy e a estrutura dos componentes. Além disso, descrevemos as metodologias de desenvolvimento adotadas, que visam garantir a qualidade e a eficiência no ciclo de vida do software.

Sumário

  • Definição das Tecnologias
    • Backend
    • Frontend
  • Diagrama de Componentes
  • Diagrama de Deploy
  • Metodologias de Desenvolvimento
    • Backend - BDD e DDD
    • Frontend - MVC

Definição das Tecnologias

Backend

  • Linguagem: JavaScript + TypeScript
  • Ambiente de execução: Node.js
  • Framework para API: Nest.js
  • Banco de dados: PostgreSQL
  • Interface de persistência: Prisma ORM
  • Documentação da API: Swagger
  • Testes: Jest
  • Containerização: Docker + Docker Compose

Frontend

  • Linguagem: JavaScript + TypeScript
  • Ambiente de execução: Node.js
  • Framework: Next.js
  • Estilização: Tailwind CSS
  • Gerenciamento de requisições HTTP: Axios
  • Testes: Jest

Diagrama de Componentes

O diagrama de componentes abaixo ilustra a estrutura principal da aplicação, evidenciando a interação entre os componentes do frontend e backend.

Frontend:

O frontend é composto por dois módulos principais:

  • App: Representa as telas que compõem a interface do usuário, onde ocorrem as interações.
  • Components: São partes reutilizáveis da interface, como botões e formulários, que podem ser incorporados em diferentes telas.

Backend:

No backend, seguindo o padrão modular do Nest.js, os subcomponentes são divididos de acordo com responsabilidades específicas, facilitando a escalabilidade e manutenção da aplicação. Estes módulos lidam com autenticação, comunicação com o banco de dados, lógica de negócios, entre outras funções críticas.

Diagrama de Componentes

Diagrama de Deploy

O diagrama de deploy a seguir detalha o processo automatizado de entrega contínua da aplicação. Cada vez que um commit é enviado para a branch principal (Main), são acionadas várias etapas de verificação e validação, incluindo:

  1. Linting: Verificação de boas práticas e padrões de código.
  2. Testes Unitários: Execução de testes automatizados para garantir a integridade das funcionalidades.
  3. Deploy: Após as validações, o código é automaticamente enviado e implantado em instâncias da AWS.

Infraestrutura:

  • Frontend e Backend: Ambos são executados dentro de containers no mesmo EC2, garantindo consistência e isolamento de ambiente.
  • Banco de dados: O PostgreSQL também está em execução na AWS, comunicando-se diretamente com o backend para garantir a persistência dos dados.

Essa automação garante que as atualizações do código sejam rapidamente entregues ao ambiente de produção, assegurando que a aplicação esteja sempre com a versão mais recente disponível para os usuários.

Diagrama de Deploy

Metodologias de Desenvolvimento

Backend - BDD e DDD

BDD (Behavior-Driven Development)

O BDD é uma metodologia que expande o TDD (Test-Driven Development) ao focar no comportamento do sistema do ponto de vista do usuário. Essa abordagem permite uma comunicação clara entre as partes interessadas e a equipe de desenvolvimento, utilizando uma linguagem comum, acessível para todos os envolvidos.

  • Formato típico: Os cenários em BDD seguem o formato "Dado que... Quando... Então...", onde:
    • Dado que: Define o estado inicial do sistema.
    • Quando: Descreve a ação do usuário.
    • Então: Especifica o resultado esperado.

Isso garante que o software seja desenvolvido de acordo com os requisitos funcionais e focado nas necessidades reais dos usuários.

DDD (Domain-Driven Design)

O DDD foca na modelagem do domínio de negócios, estabelecendo uma linguagem comum entre os desenvolvedores e especialistas do domínio. A estrutura do software é baseada no entendimento profundo das regras e processos do negócio.

Principais conceitos do DDD:

  • Entidades: Objetos com identidade única.
  • Agregados: Conjuntos de entidades que formam uma unidade lógica.
  • Serviços de Domínio: Funcionalidades que não pertencem diretamente a uma entidade.
  • Repositórios: Interfaces que lidam com o armazenamento e recuperação de entidades.
  • Value Objects: Objetos que são definidos apenas por seus atributos.

Essa metodologia permite que o software evolua de forma orgânica, acompanhando as mudanças no domínio de negócio.

Frontend - MVC

MVC (Model-View-Controller)

A arquitetura MVC separa a aplicação em três partes principais, facilitando o desenvolvimento e a manutenção do código:

  • Model: Gerencia os dados e a lógica de negócios da aplicação. No frontend, isso pode incluir hooks, estados e manipulação de dados da API.
  • View: Define a interface visual da aplicação, utilizando componentes React estilizados com Tailwind CSS para garantir uma experiência de usuário consistente e responsiva.
  • Controller: Atua como intermediário, lidando com as interações do usuário e as respostas da API, implementado no Next.js através de rotas e controladores.

Essa abordagem garante uma clara separação de responsabilidades, tornando a aplicação mais modular e fácil de escalar.


                                                                                                         Topo

Clone repository
  • Infraestrutura
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • analytics
  • arquitetura
  • backend_categories
  • backend_inicio
  • backend_persons
  • backend_production_order
  • backend_products
  • backend_qualidade
  • backend_settings
  • backend_stock
  • backend_stock_locations
View All Pages