Skip to content

Latest commit

 

History

History
58 lines (37 loc) · 2.76 KB

README.md

File metadata and controls

58 lines (37 loc) · 2.76 KB

matheus-xy-inc

Projeto criado utilizando spring-boot rest e mongodb. O Projeto está configurado para subir na porta 9090. É necessário possuir instalado um servidor local do mongodb, ou configurar para apontar para um servidor remoto.

Um controller é publicado com a url /poi, esse controller é restfull. Portanto, para:

Para executar o projeto, basta possuir o maven e rodar o comando "mvn spring-boot:run".

TODO LIST:

  • Web:

    1. Implementar completamente HATEOAS. Começei a fazer, mas não consegui entregar a funcionalidade. Reparem que a url da busca é /search/findByLocationNear, um padrão utilizado pelo HATEOAS.
  • Testes:

    1. Faltam muitos testes, principalmente unitários, os testes atualmente implementados são de integração, pois envolvem diversas rotinas.
    2. Ainda sobre os testes, o mais interessante seria utilizar o mockito, que é bem mais leve e apropriado.
  • Documentação:

    1. Faltou documentar com o padrão JavaDoc. Normalmente, em produção, esses códigos sairiam documentados.

Design Choices:

  • Decisão sobre o banco:

    1. Escolhi o mongodb por se tratar de integração com dispositivos móveis, visto que é uma prática comum do mercado a utilização dessa tecnologia atrelada a dispositivos móveis.

    2. A facilidade para se trabalhar com geolocalização também foi levada em consideração, visto que a formula da distancia entre dois pointos, que é baseada no teorema de pitágoras, não é muito elegante resolver por linguagem sql. Embora os bancos sql também possuam tipo de dado para geolocalização atualmente.

    3. Geralmente, esses bancos são bem escalares, além de possibilitar trabalhar offline muito mais facilmente.

Nota final:

Para seguir a especificação, utilizei um DTO para receber coordenadas em inteiro não negativo, entretanto, a camada interna de banco de dados, está preparada para trabalhar com geolocalização nativa. O java não possui um tipo de dado unassigned para inteiro, portanto utilizei o long.