Skip to content

alves-dev/labs

Repository files navigation

Labs

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.

Das tecnologias escolhidas

  • 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.

Como executar o projeto

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

Após executar o comando anterior

  • Acesse o Swagger
  • Observação: Ao executar o GET items 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

Testes e Coverage

  • JUnit utlizado para execução dos testes juntamente com mockito
  • JaCoCo gera um relatório de cobertura de testes
  • Após executar ./gradlew test você pode acessar a pagina que é gerada pelo JaCoCo.

Possíveis melhorias e evoluções

  • 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 GET do items.

About

Desafio técnico recebido em um processo.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages