Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • I idcare-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
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Id-Care
  • idcare-wiki
  • Wiki
  • arquitetura

arquitetura · Changes

Page history
Update arquitetura authored May 04, 2021 by Henrique Reis Kops's avatar Henrique Reis Kops
Hide whitespace changes
Inline Side-by-side
arquitetura.md
View page @ 404e9487
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
# Arquitetura do Sistema # Arquitetura do Sistema
Esta é a página onde irá ficar todas as informações da Arquitetura do seu projeto. A visão geral e simplificada do projeto pode ser representada pelo diagrama abaixo.
![overview](https://drive.google.com/uc?export=view&id=15giaFQiYQVgcxcEwAtcqOVYdQMhGoLZc)
## Front-End ## Front-End
...@@ -28,3 +30,36 @@ A arquitetura selecionada para o front-end mobile é o MVCR (Model-View-Controll ...@@ -28,3 +30,36 @@ A arquitetura selecionada para o front-end mobile é o MVCR (Model-View-Controll
Essa arquitetura se assemelha bastante com a MVC utilizada na versão web, com a diferença que agora a View não faz mais o trabalho de exibir as telas. Essa ocupação fica em outra camada (Router). Essa arquitetura se assemelha bastante com a MVC utilizada na versão web, com a diferença que agora a View não faz mais o trabalho de exibir as telas. Essa ocupação fica em outra camada (Router).
Como pode se ver na imagem, o fluxo de informações começa na View, onde todas as informações são exibidas e todas interações do usuário são recebidas. A Router, então, se responsabiliza de como exibir novas telas, se necessário. A controller é encarregada de verificar os dados recebidos, e, finalmente, na Model, é onde se recebe pedidos da controller para mandar ou receber dados do banco de dados. Como pode se ver na imagem, o fluxo de informações começa na View, onde todas as informações são exibidas e todas interações do usuário são recebidas. A Router, então, se responsabiliza de como exibir novas telas, se necessário. A controller é encarregada de verificar os dados recebidos, e, finalmente, na Model, é onde se recebe pedidos da controller para mandar ou receber dados do banco de dados.
## Backend
A camada de backend da aplicação trabalha sobre o padrão de microsserviços, que permite maior escalabilidade e isolamento. Assim, identificar os pontos de falha da aplicação se torna uma tarefa menos onerosa.
### Modelagem via DDD
Essa arquitetura é explicada através de uma modelagem chamada DDD (*Domain Driver Design*), que permite com que se entenda quais os obetivos do *business* empregado na aplicação, auxiliando o desenvolvimento indicando quais necessidades o mesmo deve suprir. Abaixo está uma aplicação simples dessa modelagem na interpretação dos alunos. Os *bounded contexts* são traduzidos como microsserviços para o projeto.
![ddd](https://drive.google.com/uc?export=view&id=1De4obvtKOkh4JwwLBmalKYKIpl2FShaf)
Pode-se perceber que existe uma relação de *downstream* por parte do contexto de voluntários e instituições, e uma relação de *upstream* de oportunidades para os demais contextos. Isso significa que o contexto de oportunidade é de suma importância para o negócio pelo qual o software deve satisfazer. Ainda pode-se reparar que esta modelagem permite com que se entenda quais as entidades cada contexto é responsável.
Para entender melhor as nomenclaturas do software, esta metodologia também prega pela criação de uma linguagem universal, que deve ser entendida por todos envolvidos no projeto. Esta linguagem facilita o entendimento da aplicação e dos contextos que a envolvem. Assim, criamos um glossário, descrito abaixo.
- **USUÁRIO**: Pessoa que acessa o aplicativo com a finalidade de usá-lo.
- **CLIENTE**: Parte da aplicação que proporciona a visualização gráfica e a interação da mesma para o usuário.
- **SERVIDOR**: Parte da aplicação que responde às necessidades do cliente.
- **VOLUNTÁRIO**: Usuário que acessa a aplicação com a finalidade de encontrar oportunidades.
- **OPORTUNIDADE**: Trabalho voluntário disponibilizado por uma instituição.
- **INSTITUIÇÃO**: Usuário que provê oportunidades para voluntários.
- **DESCRIÇÃO**: Informações sobre uma determinada entidade do sistema.
- **LISTAGEM**: Lista de oportunidades disponíveis.
- **INTERESSE**: Intenção do voluntário em aplicar-se ao trabalho voluntariado especificado em uma oportunidade.
- **PERFIL**: Parte da aplicação reponsável por manter informações do usuário, podendo este ser representado por um voluntário ou por uma instituição.
- **CADASTRO**: Parte da aplicação responsável pela criação de um perfil.
- **LOGIN**: Parte da aplicação responsável pela permissão de acesso a um perfil já cadastrado de um usuário.
### Arquitetura dos microsserviços
O padrão arquitetural *Layers* (Camadas) foi adotado por cada microsserviço constituinte da camada de backend. Sabendo disso, as camadas presentes para este padrão vão de encontro com os conceitos de DDD, portanto têm-se de forma isolada a infraestrutura (**infraestructure**), os repositórios (**repositories**), os serviços (**services**) e as interfaces da aplicação (**APIs**). Assim, as responsabilidades de cada camada atua de maneira isolada, onde cada a cadeia de dependências se dá através de interfaces bem definidas. O dado que trafega pelas camadas é chamado de entidade, e pode ser identificado como voluntário, oportunidade ou instituição, sendo esta entidade definida de acordo com o microsserviço que a mesma se encontra. Abaixo está uma ilustração genérica que pode representar qualquer um dos três microsserviços.
![uml](https://drive.google.com/uc?export=view&id=1aHAL2TiI5ms61iAwwUVi-h_w-eLTXikB)
Clone repository
  • Gerência de Projetos
  • Horários
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • arquitetura
  • banco_dados
  • configuracao
  • estudos_dirigidos
  • Home
  • instalacao
  • mockups
  • requisitos
  • sprints