Home | Escopo | Gerência | Processo | Mockups | Configuração | Arquitetura | DataBase | Infra | Referências |
---|
Arquitetura do Sistema
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
- Backend: aplicação SpringBoot que contém os serviços que espelham as regras de negócio
- Frontend: aplicação React com Javascript que representa a interface de usuário.
Deploy
Diagrama de Deploy
Backend
Definições de Tecnologias
É uma RESTful API construída utilizando Spring, que é um dos frameworks Java mais populares do mercado. Executando em um container Docker dentro de uma EC2 da AWS, o banco de dados está hospedado na mesma plataforma, porém executando em um container separado. Para a documentação e teste dos endpoints da aplicação, foi utilizado o Swagger, uma ferramenta de documentação e testes que utiliza JSON. Referente a estrutura, utilizamos o Layers Pattern (padrão camadas). Contendo três camadas:
- Presentation layer: responsável por fornecer os endpoints da aplicação. Possui o controller, Data Transfer Objects (DTOs) e entidades.
- Business logic layer: possui toda lógica do sistema, como cálculos, transformações de dados e processamento de dados, neste caso está presente no pacote services.
- Data access layer: responsável pela comunicação com o banco de dados, criando, buscando, atualizando e deletando dados do banco. Neste caso temos esta camada no pacote repository.
Módulos do Sistema
- config: contém as configurações de cors e do Swagger.
- controller: é o ponto de entrada do backend, onde ficam definidos os endpoints da aplicação.
- entity: camada que contém entidades que espelham o banco de dados.
- dto: possui os objetos utilizados para transportar dados entre as camadas.
- enums: possui as enumerações utilizadas nos dtos ou entidades.
- message: centraliza todas as mensagens que são devolvidas para o frontend.
- repository: é responsável por fazer toda comunicação com o banco de dados.
- security: define configurações de acesso aos endpoints e controla login e autenticação de usuários cadastrados.
- service: camada que contém as regras de negócio.
- util: possui classes que tem métodos que são utilizados em diversas serviçõs, como por exemplo o Validations.java que contém validações de campos de um objeto. Nessa camada também ficam as exceptions personalizadas e os handlers dessas exceptions.
Frontend
Definições de Tecnologias
Desenvolvido com a biblioteca React utilizando Javascript, utiliza Progressive Web Application (PWA) para termos a experiência de uso muito próxima da oferecida pelos mobile apps em smartphones. Armazenado no Amazon S3 como um website estático e utiliza um padrão de múltiplas camadas.
Módulos do Sistema
- assets: armazena os conteúdos estáticos, como as imagens e logo usados na aplicação.
- components: contém os elementos utilizados nas páginas e podem ser reaproveitados e utilizados em várias.
- config: possui as configurações gerais da aplicação, como a configuração de tema do Chakra.
- pages: contém as páginas da aplicação, que normalmente são compostas por diversos componentes.
- store: contém as funções responsáveis por fazer a comunicação com o backend e armazenamento dos dados através do Redux.
- utils: contém funções utilizadas em diversos componentes para fazer validação, como por exemplo o formato do e-mail.