Descrição
Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend, além dos dados relativos ao deploy.
Sumário
Arquitetura Geral da Aplicação
Abaixo está representado graficamente como funciona a comunicação do Front-end(Flutter) com o Back-end(Spring).
Backend
Módulos do sistema Back-end
O backend do um sistema é o código que conecta a internet com o banco de dados, gerencia as conexões dos usuários e alimenta a aplicação web, ele é responsável por receber, processar armazenar e enviar dados. Desta forma, existem diferentes tipos de arquitetura para gerenciar tudo isso, cada uma com seus prós e contras dependendo do contexto da aplicação que será desenvolvida. No projeto Focus foi decidido que a arquitetura será no padrão camadas, onde cada uma tem uma responsabilidade em relação aos dados, como segue:
Controllers É a camada de cima, a que recebe e envia os dados através de requisições HTTP, diante disto, sua responsabilidade é prover os endpoints, que são métodos onde são especificados os tipos de requisições aceitas, e o tipo de retorno das respostas através dos verbos HTTP (GET, PUT, POST, DELETE), para acessar essas requisições o client especifica o verbo e se for o caso o dado que quer buscar, atualizar ou deletar.
Services Camada de processamento de dados, onde se aplica a lógica de negócio da aplicação, além de mediar a comunicação entre as camadas de controller e repository.
Repositories É a camada de acesso a dados, normalmente uma interface, ela persiste os dados no banco de dados e os busca, normalmente a camada mais “embaixo” no sistema.
DTOs Data Transfer Objects, de acordo com regras de negócio os dados podem ser mostrados para os clientes e recebidos deles de forma diferente dos models salvos no banco de dados, assim os atributos dos models que serão mostrados nas requisições são implementados nesses objetos. Normalmente usado entre as camadas de controllers e services.
MappersFazem o mapeamento, a “transformação” de um model em um DTO e vice-versa, normalmente usada na camada de serviço.
Diagrama de fluxo
Front-end
Módulos do sistema Front-end
Para o projeto, foi definida para o Front-end uma arquitetura chamada de MVC, que será utilizada no desenvolvimento com o Flutter. Todavia, a sua estrutura é definida em três partes:
Model é a camada de manipulação de dados. Ele é responsável pela leitura e escrita de dados, e também de suas validações. Sendo assim, ela acaba sendo completamente independente das outras duas camadas.
View é a camada de interação com o usuário. Ela representa a parte visual da aplicação, e só é alimentada pela camada Controller quando necessário.
Controller é a camada responsável por receber todas as requisições do usuário. Seus métodos são responsáveis por uma página, controlando qual model usar e qual view será mostrado pelo usuário.
Diagrama do Sistema
Aqui podemos ver visualmente através de um diagrama como ficou a implementação do padrão arquitetural do Flutter: