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 16
    • Issues 16
    • 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
  • Colabora aí
  • WikiWiki
  • Wiki
  • Arquitetura

Last edited by Filipe Serafini Nov 24, 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 Mockups Configuração Arquitetura Gerência BD Qualidade Frontend Backend

Página da Arquitetura do Sistema

Blank_board_-_Page_1-2

Frontend

Sistema projetado para acesso via internet por meio de um aplicativo mobile desenvolvido em Flutter/Dart. Dart é a linguagem de programação e Flutter o framework, essa combinação de tecnologias nos permite criar interfaces de usuário para Android e iOS.

Backend

O backend será desenvolvido utilizando Java com o framework Spring Boot para criar uma API REST responsável pela comunicação entre o aplicativo e o banco de dados. O Spring Boot é conhecido por facilitar o desenvolvimento de aplicações robustas e escaláveis no lado do servidor. Para a persistência de dados, utilizaremos o MongoDB, um banco de dados NoSQL.

Arquitetura do Sistema - MVC

O sistema será estruturado com o padrão de arquitetura MVC (Model-View-Controller), separando claramente as responsabilidades da aplicação em três camadas principais para garantir modularidade e facilitar a manutenção e escalabilidade do código.

Model

A camada de Model será responsável por gerenciar os dados da aplicação. Nesta camada, utilizaremos o MongoDB como banco de dados NoSQL para armazenar e recuperar as informações. O Model definirá a estrutura dos dados e interagirá diretamente com o banco por meio de operações de leitura e escrita.

View

A camada de View será o aplicativo móvel desenvolvido em Flutter, responsável pela interface de usuário. Ele será a parte visual do sistema, onde o usuário poderá interagir com os dados e funcionalidades fornecidas pela API. A View receberá dados da camada Controller e exibirá ao usuário, além de enviar requisições com as interações realizadas.

Controller

A camada de Controller será responsável por receber as requisições do aplicativo (View), processá-las, interagir com a camada Model para manipular os dados e devolver as respostas necessárias. O Controller será implementado utilizando Spring Boot para criar os endpoints da API REST. Ele funcionará como intermediário entre a interface do usuário (View) e o banco de dados (Model), garantindo que a lógica de negócio seja aplicada corretamente.

Arquitetura da Infraestrutura - AWS

ColaboraAiAWS

Frontend Mobile

O frontend mobile, desenvolvido com Flutter, permite a criação de uma aplicação cross-platform, atendendo tanto iOS quanto Android. Para a hospedagem e entrega dos arquivos estáticos deste aplicativo, utilizamos o serviço Amazon S3 (Simple Storage Service). O S3 provê alta durabilidade e disponibilidade, ideal para armazenar conteúdos acessíveis publicamente ou privadamente, dependendo da configuração de acesso.

Frontend Web

Para o frontend web, escolhemos React devido à sua eficiência em renderizar componentes dinâmicos que melhoram a experiência do usuário. Assim como o frontend mobile, os arquivos estáticos do frontend web são hospedados no Amazon S3, garantindo rápida distribuição e baixa latência. Para otimizar ainda mais a entrega de conteúdo estático globalmente, pode-se integrar o Amazon CloudFront como CDN, reduzindo a carga sobre o servidor principal e melhorando o tempo de carregamento para usuários ao redor do mundo.

Backend

O backend é implementado usando Java com o framework Spring Boot, conhecido por sua agilidade e poder em criar aplicações complexas e de alto desempenho. Utilizamos contêineres Docker para encapsular o ambiente do backend, facilitando a escalabilidade e a manutenção. Esses contêineres são gerenciados através do Amazon EC2 (Elastic Compute Cloud), que oferece capacidade computacional redimensionável na nuvem, permitindo ajustar recursos conforme a demanda.

Integração e Gerenciamento de Imagens Docker

Utilizamos o Amazon ECR (Elastic Container Registry) para armazenar as imagens Docker do backend. O ECR é um repositório de imagens Docker que integra-se facilmente com o EC2, automatizando o deploy e garantindo que sempre a versão mais recente esteja disponível para produção sem interrupções no serviço.

Arquitetura de Comunicação

  • Amazon EC2: Responsável por executar o backend da aplicação, lidando com a lógica de negócios e processamento de dados.
  • Amazon S3: Além de hospedar os assets dos frontends, armazena dados gerados pelos usuários, como uploads de arquivos, garantindo segurança e acesso controlado.
  • Amazon ECR: Mantém as imagens Docker, simplificando o processo de atualização e manutenção do ambiente de execução do backend.
Clone repository
  • Arquitetura
  • Backend
  • Banco de Dados
  • Configuracao
  • Escopo
  • Frontend
  • Gerencia
  • Mockups
  • Processo
  • Qualidade
  • Home