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
  • GiftReminder
  • Wiki
  • Wiki
  • arquitetura

Last edited by Leonardo Vargas Soares Jul 09, 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 Git Workflow Design/Mockups Configuração Arquitetura Gerência Código BD Qualidade Frontend Backend Analytics

Definições Arquitetura

Descrição

  • Esta seção irá abordar a arquitetura da aplicação.

Sumário

  • Arquitetura do Sistema
  • Deploy
    • Diagrama de Deploy
    • Diagrama de Componentes
  • Definições de Tecnologias
    • Frontend
    • Backend
  • Módulos do Sistema

Arquitetura do Sistema

  • Baseando-se no que foi planejado para o nosso banco de dados, levantamento dos requisitos e o entendimento geral do time sobre o projeto "giftreminder" a ser desenvolvido, optamos por uma arquitetura MVC (Model-View-Controller). Esta escolha foi motivada pela clareza e separação de responsabilidades que o MVC oferece, facilitando tanto o desenvolvimento quanto a manutenção do código. O "Model" gerencia os dados e a lógica do negócio, o "View" é responsável pela apresentação visual dos dados, e o "Controller" atua como um intermediário entre o Model e o View, gerenciando o fluxo de informações e as interações do usuário.

  • Utilizando a arquitetura MVC, podemos garantir uma maior organização do código, o que se traduz em uma manutenção e expansão mais eficientes do projeto. Além disso, esta abordagem promove uma melhor divisão de trabalho e especialização dentro da equipe, pois permite que desenvolvedores de diferentes áreas (back-end, front-end) concentrem seus esforços em partes específicas da aplicação sem interferir uns com os outros. Por fim, a integração com tecnologias de containerização, como demonstrado no diagrama de deploy, reforça a flexibilidade e escalabilidade do sistema, permitindo um gerenciamento mais eficaz dos recursos e uma adaptação rápida a diferentes ambientes de produção.

Deploy

  • Texto

Diagrama de Deploy

  • O diagrama apresenta o processo de deploy da aplicação Giftreminder utilizando a nuvem AWS.

Diagrama de Componentes

  • Para criar um eficiente para a aplicação "giftreminder", que ilustre claramente, podemos seguir a descrição a seguir, organizando os elementos conforme suas funções específicas:

  • Componentes de Usuário (User Interface Components)

    • Mobile App
      • Função: Interface de usuário para interação com o sistema via dispositivos móveis.
      • Responsabilidades: Enviar requisições e receber respostas do servidor.
      • Plataformas Suportadas: Android, iOS.
  • Componentes de Servidor (Server-side Components)

    • Web Server (FastAPI)
      • Função: Processamento de requisições HTTP dos aplicativos móveis.
      • Responsabilidades: Gerenciar rotas, autenticação e autorização.
    • Application Logic (Controllers)
      • Função: Gerenciamento da lógica de controle.
      • Responsabilidades: Interagir com os modelos de dados para preparar e enviar dados aos usuários.
    • Models
      • Função: Gerenciamento da camada de dados e lógica de negócios.
      • Responsabilidades: Interação com o banco de dados para manipulação de informações.
    • Database (Postgres)
      • Função: Armazenamento de dados persistentes.
      • Responsabilidades: Gerenciado pela camada Model da aplicação.
  • Componentes de Infraestrutura

    • Docker Containers
      • Função: Isolamento e gerenciamento de dependências.
      • Responsabilidades: Cada componente do servidor (FastAPI, Gitlab Runner, Postgres) é implantado em um contêiner separado.
    • Gitlab Runner
      • Função: Automação de CI/CD.
      • Responsabilidades: Automatizar atualizações e testes do código.
    • AWS EC2
      • Função: Hospedagem dos contêineres Docker.
      • Responsabilidades: Fornecer recursos computacionais.
    • AWS S3
      • Função: Armazenamento para dados estáticos ou backups.
      • Responsabilidades: Integrar-se com a aplicação para armazenamento de dados não-relacionais.
  • Componentes de Comunicação

    • API Gateway (FastAPI)
      • Função: Ponto único de entrada para as requisições.
      • Responsabilidades: Roteamento de requisições para os componentes internos apropriados e gerenciamento de respostas.

Definições de Tecnologias

  • Texto

Frontend

  • Texto

Backend

-Texto

Módulos do Sistema

  • Frontend:

    • Estrutura Principal

      • .expo: Configurações específicas para projetos usando Expo.
      • .vscode: Configurações para o editor VS Code, como extensões recomendadas e configurações específicas do projeto.
      • node_modules: Bibliotecas e dependências do projeto instaladas via npm ou yarn.
      • src: Diretório principal onde o código-fonte do front-end está organizado.
    • Dentro do diretório src

      • app: Contém os módulos principais da aplicação.
      • assets: Recursos estáticos como imagens, vídeos ou arquivos de som.
      • components: Componentes reutilizáveis usados em várias partes do aplicativo.
      • constants: Constantes utilizadas ao longo do projeto, como cores, strings, etc.
      • controllers: Lógica para manipular a interação entre a UI e o modelo de dados.
      • DTOs (Data Transfer Objects): Objetos usados para transferir dados entre processos, tipicamente entre o cliente e o servidor.
      • hooks: Hooks personalizados do React utilizados no projeto.
      • services: Serviços para gerenciar a lógica de negócios e as interações com APIs externas.
    • Arquivos de Configuração e Scripts

      • app.json: Configurações específicas para o Expo e outras informações do app.
      • eas.json: Configurações para o serviço de build e submissão do Expo.
      • expo-env.d.ts: Definições de tipo para as variáveis de ambiente usadas com Expo.
      • package.json & package-lock.json: Gerenciam as dependências do projeto e garantem uma instalação consistente das mesmas.
      • tsconfig.json: Configurações do TypeScript para o projeto.
  • Backend:

    • Estrutura Principal

      • app: Diretório principal do projeto onde estão localizados os principais módulos e componentes do back-end.
    • Dentro do diretório APP:

      • controllers: Contém os controladores que gerenciam as operações de entrada e saída de dados, funcionando como intermediários entre os modelos e as visualizações.
      • dependencies: Gerencia as dependências que são necessárias para os controladores, facilitando a injeção de dependências e a configuração do serviço.
      • helpers: Funções auxiliares que fornecem funcionalidades comuns que podem ser utilizadas em várias partes da aplicação.
      • models: Define os modelos de dados que a aplicação utiliza, geralmente correspondendo às tabelas no banco de dados.
      • routes: Gerencia as rotas da aplicação, mapeando as URLs às funções dos controladores que devem responder às solicitações.
      • __init__.py: Arquivo que transforma o diretório em um pacote Python, permitindo sua importação em outras partes do código.
      • main.py: Ponto de entrada da aplicação quando ela é executada como um módulo ou pacote Python.
      • migrate.py: Script para gerenciar as migrações de banco de dados, facilitando a atualização e manutenção do esquema do banco de dados.
      • settings.py: Contém configurações globais da aplicação, como conexão com banco de dados, configurações de segurança, entre outros.
    • Outros Diretórios e Arquivos

      • venv: Diretório que contém o ambiente virtual Python para o projeto, isolando as dependências.
      • docker-compose.yml: Define e configura serviços relacionados, volumes e redes utilizando o Docker Compose.
      • Dockerfile: Script para criar uma imagem Docker do projeto.
      • requirements.txt: Lista todas as bibliotecas Python necessárias para o projeto.
Clone repository
  • Banco de Dados
  • Configuracao
  • Design_Mockups
  • Git Workflow
  • arquitetura
  • escopo
  • gerencia
  • Home
  • qualidade