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
-
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.
-
Mobile App
-
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.
-
Web Server (FastAPI)
-
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.
-
Docker Containers
-
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.
-
API Gateway (FastAPI)
Definições de Tecnologias
- Texto
Frontend
- Texto
Backend
-Texto
Módulos do Sistema
- Texto