- Autor: John Enderson
- Release Data: 04/2025
- Linguagem: Java
- Framework: Spring boot
- Status: Em desenvolvimento
- Realizar a integração com o Sistema de Pagamentos PIX;
- Criar uma arquitetura que permita a realização do PIX;
- Precisamos armazenar todas as informações que serão comunicadas com o Banco Central;
- Será necessario disponibilizar essa funcionalidade para um Front-end.
- Realizar uma chamada para a API de Fraudes, onde o retorno poderá ser positivo ou negativo;
- Comunicar com o banco Central atavés de MQ (Message Queue)
- Java 21
- Maven
- LocalStack (Para simulação do Amazon SQS)
- Mockoon (Para mock das APIS de Fraude e de PIX)
- MongoDB
- Framework Spring:
- Spring Boot 3.4.4
- Spring Cloud OpenFeign
- Spring Boot Docker Compose (apenas no profile dev)
- Spring Validation
- Tomcat (Integrado ao Spring Boot)
Essa arquitetura foi desenvolvida para simular o fluxo de pagamento via PIX utilizando serviços da AWS, com APIs REST, filas SQS e persistência de dados. Para facilitar os testes, alguns componentes foram mockados, como a API anti-fraude e a integração com o Banco Central.
- Clone o repositório:
git clone [email protected]:johnenderson/challenge-itau.git
cd challenge-itau
- Suba os containers Docker:
Antes de iniciar as aplicações Spring Boot, execute o seguinte comando na raiz do repositório:
docker compose up
Esse comando iniciará os seguintes serviços:
- Um container com MongoDB, disponível na porta 27017
- Um container com Mockoon, disponível na porta 9090
- Um container com LocalStack, disponível na porta 4566
- Execute as aplicações Spring Boot:
# Perfil padrão (Default)
mvn spring-boot:run
# Com perfil específico. Ex.: Dev
mvn spring-boot:run -Dspring-boot.run.profiles=dev
As aplicações Spring Boot serão iniciadas nas seguintes portas:
pixms
: 8080pix-sub
: 8090pix-confirm
: 9000
- Uso do Docker para simulação de serviços
O projeto utiliza Docker para simular os seguintes serviços:- AWS SQS (via LocalStack), representando o serviço de mensageria da AWS.
- Mockoon, para simulação de APIs externas que exigem autenticação.
- MongoDB, como banco de dados NoSQL.
- Arquitetura pensada para a AWS
A solução foi inicialmente desenhada com foco na nuvem AWS, considerando o uso de serviços como SQS e outras soluções gerenciadas. - Tratamento de regras de negócio com Problem Details (
RFC 7807
)
O serviçopixms
utiliza o padrão Problem Details para retornar respostas padronizadas em casos de violação de regras de negócio. - Interceptação de exceções com
RestControllerAdvice
Foi implementado um interceptor global de exceções utilizando a anotação@RestControllerAdvice
. Esse componente captura exceções lançadas nos controladores e as transforma em respostas amigáveis e padronizadas para o cliente da API. - APIs mockadas com autenticação
As APIs simuladas com o Mockoon exigem autenticação, permitindo testar fluxos de segurança e validação mesmo em ambientes de desenvolvimento. - Proposta de melhoria na arquitetura da solução
- Visando maior robustez e escalabilidade, propõe-se a adoção de padrões de resiliência ao projeto, como:
- Uso de Conventional Commits
O projeto adota o padrão Conventional Commits para padronizar as mensagens de commit.