Este é um projeto de estudos para realizar a utilização de conceitos e ferramentas de nível intermediário-avançado, como Banco de Dados NoSQL, Message-Broker, Microserviços, Arquitetura (Hexagonal e Clean Arch), Testes, Observabilidade, entre outros...
A aplicação permite que usuários👨🦱 enviem presentes🎁 para outros usuários.
O objetivo deste projeto é criar uma aplicação robusta, seguindo boas práticas de arquitetura e design de software.
A aplicação permite o cadastro, atualização, obtenção e exclusão de usuários e presentes, bem como o 'envio/troca' de presentes entre usuários via Kafka.
A escolha da Clean Architecture e dos princípios SOLID foi feita para garantir uma estrutura de código limpa, modular e testável. A Clean Architecture enfatiza a separação de preocupações, com uma clara distinção entre as camadas de aplicação, domínio e infraestrutura. Isso permite que as mudanças em uma camada não afetem as outras, facilitando a manutenção e evolução do sistema ao longo do tempo.
Os princípios SOLID são aplicados para garantir que as classes sejam coesas, flexíveis e fáceis de entender e modificar.
A aplicação consome dois microserviços que desenvolvi, sendo eles:
Este Microserviço é utilizado para a obtenção de um endereço a partir de um CEP.
Neste Microserviço, utilizei Open Feign (Spring), coloquei em prática a Arquitetura Hexagonal, bem como boas Práticas de Resiliência de API's e Microserviços, com a utilização do Resilience4j para o desenvolvimento de um Circuit-Breaker.
Este Microserviço é utilizado para o envio de e-mails de confirmação. Quando um usuário envia um presente, um e-mail de confirmação chega para ele, informando que o presente foi enviado para o destinatário com sucesso!
Da mesma forma, quando um usuário recebe um presente, um e-mail de feedback chega para ele, informando que recebeu um presente, na data X, da pessoa Y.
Neste Microserviço, utilizei Open Feign (Spring), coloquei em prática a Arquitetura Hexagonal, e utilizei o Amazon Simple Email Service (AWS SES) como o serviço de e-mails.
No desenvolvimento deste projeto, incluindo os microserviços, foram utilizadas as seguintes tecnologias e conceitos:
SendGift Application:
Técnologias:
* Java 21;
* Spring Framework 3.2;
* MongoDB;
* Kafka;
* jUnit e Mockito;
* Jenkins;
* JaCoCo e SonarCube;
* Spring Boot, Data e Cloud;
* Resilience4j;
* AWS (SES).
Conceitos:
* Clean Architecture;
* Hexagonal Architecture;
* SOLID;
* Práticas de Resiliência de API's e Microserviços;
* Circuit-Breaker;
* Microserviços;
* Testes Unitários;
* Mensageria;
* Banco de Dados NoSQL;
* Integração com Cloud.