Skip to content

Desenvolvimento de aplicações corporativas avançadas

Notifications You must be signed in to change notification settings

lucasanthony/edoe

Repository files navigation

eDoe

Motivação:

Muitas pessoas tem interesse em fazer doações, mas as vezes não tem o tempo necessário para encontrar onde doar ou como doar. Como sabemos, vivemos em um país em que a desigualdade social ainda existe e por isso há várias pessoas necessitadas, às vezes grupos de pessoas com um problema em comum. Precisamos de um sistema para apoiar essa rede de doações: o eDoe.com.

Instalação/Execução

  • Faça o clone do projeto na sua máquina usando git clone https://github.com/lucasanthony/edoe.git
  • Utilize o comando mvn spring-boot:run para iniciar o servidor
  • Teste/Utilize as rotas em um cliente REST de sua preferência, sugerimos o postman

ENDPOINTS

Método Url Body Params
GET /usuario/{nome}
GET /item/{id}
POST /usuario/doador {}
DELETE /usuario/{id}
PUT /usuario/{idUsuario}

Para ver todos disponíveis, clique aqui

Arquitetura

Para desenvolver a API provedora dos serviços com uma certa agilidade, usamos o Spring Boot. O padrão que aderimos é semelhante ao que é usado na parte do cliente, que é o padrão MVC, possuindo divisões do formato de Models, Repositories, Services e Controllers. Usamos o banco de dados não-relacional MongoDB, devido a escalabilidade horizontal que obtemos com ele, além também de facilitar o formato dos dados enviados ao Cliente, pelo fato de serem inseridos em JSON, conseguindo uma boa performance.

Autenticação

O modelo de segurança escolhido foi o JSON Web Token (jwt) e para implementação do mesmo se faz necessário um mecanismo de geração e validação de tokens, por meio de bibliotecas existentes.

  • Faça o cadastro de um usuário POST https://www.edoe.herokuapp.com/usuario/doador
  • Realize login POST https://www.edoe.herokuapp.com/edoe/auth/login para receber um token válido
  • Utilize as rotas em um cliente REST de sua preferência, agora passando o token recebido no header de authorization Bearer TOKEN

Desempenho

A estrutura utilizada para melhoramento do desempenho foi uma abstração de memória cache, que apresenta benefícios no tempo de respostas das requisições, torna o sistema mais escalável(menos consultas no banco) e oferece uma economia de disco. Os endpoint escolhidos para serem voltados a essa memória temporária foram os métodos HTTP do tipo GET, isso porque os demais precisariam efetivamente de um acesso direto ao banco, pois resultam em modificações no mesmo.

  • Comparação de resultados, CACHE vs SEM CACHE

O fluxo de execução das requisições que utilizam cache se caracterizam por um armazenamento temporário de respostas de requisições, o que diminui a quantidade de vezes que o banco é consultado, diminuindo assim o tempo de resposta. Para testar, utilizamos uma função para paralizar a execução da thread responável pela requisição, assim, quando a cache entrava em prática, essa pausa era ignorada, pois a requisição já buscava a resposta na memória temporária, os resultados obtidos foram expostos nos gráficos acima. Em testes no Postman, observamos uma melhora de 80% aproximadamente no tempo de resposta, confirmando a eficácia da utilização de cache nesses tipos de requisições HTTP.

Testes de desempenho

Time:

About

Desenvolvimento de aplicações corporativas avançadas

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published