O projeto consiste em receber um arquivo .txt desnormalizado contendo registros de vendas.
Após isso deve ser possível filtrar os pedidos que devem ser retornados em formato json adequando de acordo com o requisito.
-
Spring Boot O eco sistema Spring foi escolhido pela facilidade que ele oferece para lidar com as outras ferramentas a seguir, e por ser um ótimo framework.
-
Java O java por sua vez uma das melhores linguagens de se trabalhar que se encaixa bem com o Spring.
-
Mongo Para o armazenamento optei pelo Mongo, um banco orientado a documentos, isso faz com que o mesmo seja muito dinâmico e rápido para iniciar um projeto.
-
Redis Para ajudar na evolução do produto, prevendo que o mesmo vai receber muitas requisições, foi aplicada uma camada de cache com o Redis, aproveitando o ótimo suporte fornecido pelo Spring, Redis é um banco chave-valor que pode armazenar seus dados em RAM o que o torna muito rápido e acaba sendo ideal para caches.
O projeto foi configurado para ser executado sobre o docker, mais especificamente o docker compose.
Sendo assim basta você executar o script build_up.sh que o build da aplicação sera feito e o ambiente sera criado.
sh build_up.sh- Acesse o Swagger
- Observação: Ao executar o
GETitems sem filtros o swagger demora a mostrar os dados pelo fato do tamanho do retorno, o que leva a uma falsa demora no end-point, recomendo fazer essa requisição fora do swagger. - Caso queira ver os registros no banco mongo, você pode acessar pelo Mongo express
- JUnit utlizado para execução dos testes juntamente com mockito
- JaCoCo gera um relatório de cobertura de testes
- Após executar
./gradlew testvocê pode acessar a pagina que é gerada pelo JaCoCo.
- O processamento do arquivo de entrada pode ser realizado em segundo plano, assim podemos validar o aquivo e retornar uma resposta liberando a requisição.
- Uma outra possível estrategia seria realizar o processo de normalização e a soma dos pedidos na leitura do aquivo,
o que reduziria o processo no
GETdo items.