Esse projeto visa demonstrar meus conhecimentos sobre Java e Arquitetura de Software
- Instale as dependências maven
- Suba o docker
docker compose up - Inicie a aplicação
- Documentação das rotas disponível pelo Swagger na rota
/docsacesse
- Uso de docker para iniciar o PostgreSQL, pois não conheço o sistema que irá executar, e por praticidade
- Uso do Slf4j ao invés do Log4j após problemas com vulnerabilidade
- Utilização de arquitetura limpa para escalabilidade
- Separação das dependências do Framework do resto do código, como no Controller, que a definição das rotas como
@RequestMappingestão em uma interface separada. - As dependências são baseadas em comportamento (interface), evitando referências concretas e abrindo para extensão (SOLID).
- Todas as funcionalidades são separadas em Use Cases e agregadas pelas Application de acordo com contexto de cada.
- Separação de Domain (core) para armazenar regra de negócio e Entity (infra) para banco de dados.
- Utilização de Data Providers para comunicação externa (banco de dados / api's terceiras).
- Testes estão apenas nas regras até o momento, o ideal seria cobrir o comportamento do software como inteiro
- Implementar entrypoint por fila
- Implementar New Relic / Open Search (observabilidade)
- Implementar data providers de outras api's
- Demonstração de padrões de projetos como Strategy e Factory para outras possibilidades de fluxos da aplicação
- Criar pipeline (CI/CD) para publicar a documentação do Swagger no Github Pages