Skip to content

EvolutionTeamFiapAluraPostech/fiapAluraTechChallengeFase04-microservicos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pós-Tech-FIAP/ALURA-Fase04

Badge em Desenvolvimento

Descrição do projeto

Criar um sistema de gerenciamento de pedidos de venda, composto por microserviços de gestão de clientes, de produtos, de pedidos, logistica e uma aplicação para importação de dados de fontes extenas. O sistema será desenvolvido utilizando Java, Spring Boot, Spring Data JPA, Spring Open Feign e Spring Batch, entre outros.

Requisitos:

  1. Microsserviço de gerenciamento de clientes: microsserviço responsável por todas as operações relacionadas aos clientes, incluindo a criação, leitura, atualização e exclusão de registros de clientes (CRUD).
  2. Microsserviço de catálogo de produtos: microsserviço responsável pelo CRUD de produtos e gerenciamento de estoque.
  3. Microsserviço de gestão de pedidos: centralizará o processamento de todos os pedidos, desde a criação, até a conclusão, incluindo o recebimento, pagamento e comunicação com o microsserviço de entrega dos produtos dos pedidos.
  4. Microsserviço de logística de entrega: responsável por gerenciar toda a logística de entrega de pedidos.

Entregáveis:

  1. Link do Github com o código fonte dos serviços desenvolvidos.
  2. Documentação técnica.
  3. Um relatório técnico descrevendo as tecnologias e ferramentas utilizadas, os desafios encontrados durante o desenvolvimento e as soluções implementadas para resolvê-las.

Tecnologias utilizadas

  1. Java 17
  2. Gradle 7.6
  3. Spring Boot 3.2.2
  4. Spring Web MVC (compatível com o Spring Boot)
  5. Spring Data JPA (compatível com o Spring Boot)
  6. Spring Bean Validation (compatível com o Spring Boot)
  7. Spring Doc Open API 2.3.0
  8. Spring Batch 5
  9. Spring Open Feign 4.1.1
  10. Lombok
  11. Postgres 15.1 e Postgres 16.3
  12. Flyway
  13. JUnit 5
  14. Mockito
  15. TestContainers
  16. Docker
  17. WireMock 3.3.1

Setup do Projeto

Para realizar o setup do projeto é necessário possuir o Java 17, Gradle 7.6, docker 24 e docker-compose 1.29 instalado em sua máquina. Faca o download do projeto (https://github.com/EvolutionTeamFiapAluraPostech/fiapAluraTechChallengeFase04-microservicos) e atualize suas dependências com o gradle. Antes de iniciar o projeto é necessário criar o banco de dados. O banco de dados está programado para ser criado em um container. Para criar o container, execute o docker-compose (Acesse a pasta raiz do projeto, no mesmo local onde encontra-se o arquivo compose.yaml). Para executá-lo, execute o comando docker-compose up -d (para rodar detached e não prender o terminal). O docker compose irá criar os bancos de dados, buildar a imagem de cada um dos microsserviços, iniciar a aplicação dentro do container correspondente (em sua porta específica). Desta maneira, o conjunto todo da solução estará disponível para ser consumido.

Collection do Postman

  • Marcelo-RM350802-Fiap-Alura-Tech Challenge-Fase04.postman_collection.json
  • Esta collection está salva na raiz do projeto.

Environments do Postman

  • Marcelo-RM350802-Fiap-Alura-Tech Challenge-Fase04.postman_dev_environment.json
  • Estas environments estão salvas na raiz do projeto.

Documentação da API

Documentação do PROJETO

O projeto está dividido em 6 containers de microsserviços backend Java Spring Boot e outros 6 containers de banco de dados Postgresql. Cada um dos microsserviços possui seu respectivo banco de dados.

O backend foi implementado seguindo as recomendações da Clean Architecture, com Clean Code, SOLID e testes automatizados de unidade e integração, seguindo os princípios do FIRST e Clean Tests. Observação: a Clean Architecuture não foi completamente implementada, visto que os microsserviços são fortemente acomplados com o Spring, entretanto, a aplicação está bem segmentada em pacotes e responsabilidades.

Microsserviço de gerenciamento de empresas

O objetivo deste microsserviço é gerenciar as empresas fornecedoras de um produto ou serviço para atender seus clientes. A empresa cadastrada será o ponto inicial da rota de entrega do bem para o cliente.

Microsserviço de gerenciamento de clientes

O objetivo deste microsserviço é gerenciar os clientes consumidores de produto/serviço das empreasas fornecedoras. O cliente cadastrado será o ponto final da rota de entrega do bem para o cliente.

Microsserviço de gerenciamento de produtos

O objetivo deste microsserviço é gerenciar os produtos/serviços cadastrados pelo fornecedor, que por sua vez, serão incluídos em pedidos de venda.

Microsserviço de gerenciamento de pedidos

O objetivo deste microsserviço é gerenciar os pedidos cadastrados pelos clientes, que irão consumir um produto/serviço.

  • Microsserviço de Gerenciamento de pedidos

alt text

Testes de integração e unidade com 85% de linhas de código cobertas.

alt text

Microsserviço de gerenciamento de logística/entrega

O objetivo deste microsserviço é gerenciar a logística e entrega dos pedidos cadastrados e pagos pelos clientes.

Microsserviço de gerenciamento de importação de dados

O objetivo deste microsserviço é importar dados de produtos e CEPs de fontes externas de dados, como arquivo CSV.

Qualidade de software

Para garantir a qualidade de software, implementamos testes de unidade e de integração na grande maioria do código. Para identificar o que foi testado, utilizamos a cobertura de testes de código do próprio IntelliJ IDEA. A decisão de utilizar o próprio IntelliJ foi motivada pela manutenção de menor número de dependências a serem adicionadas no projeto, com o objetivo de reduzir possibilidades de libs externas abrirem uma fragilidade na segurança da aplicação (lembrando do caso do Log4J) e que no cenário em que o projeto foi desenvolvido não foi necessária a adição do Jacoco. Os testes de unidade foram implementados nas classes de domínio e application testando a menor unidade de código. Os testes de integração foram implementados nas classes de presentation, realizando a requisição REST aos endpoints em diversos cenários, testando o código por completo, da entrada dos dados, processamento e saída. O objetivo desta segregação foi considerar a eficiência dos testes versus o tempo de entrega do projeto. Aplicando este método, foi apurado pela cobertuda de testes do IntelliJ IDEA, em mais de 90% de linhas de código testadas na maioria dos microserviços. Para realizar o teste de cobertura, clique com o botão direito do mouse sobre o nome do projeto, navegue até a opção More Run/Debug, em seguida selecione a opção Run tests in with Coverage.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors