Skip to content

Backend para el visor de puestos obtenidos por constructor en el periodo de 2010-2020.

Notifications You must be signed in to change notification settings

fresh-avocado/formula-backend

Repository files navigation

Visor Formula 1

Pasos para correrlo

docker build -t formula-backend:1.0 -f ./Dockerfile.dev . # construir la imagen

Una vez creada la imagen de formula-frontend2 y formula-backend, correr el comando docker-compose up en el directorio donde está el archivo docker-compose.yml. El backend correrá en localhost:3000/.

Pasos para detenerlo

docker compose down # borrará los datos de la BD

Pasos para crear los datos en la BD

curl -X POST http://localhost:8080/v1/results/generate # demora 7 segundos porque lee CSVs e inserta varios datos en Mongo

O ejecutar el HTTP Request llamado Generate Data en Postman.

Notas

  • Se usó Fuse.js para implementar el buscados de constructores. Esta librería crea un índice y le hace consultas en el main thread de Node.js. Por lo tanto, bloquea el event loop y si el número de constructores aumenta, las operaciones que Fuse.js usa podrían bloquear el event loop por más tiempo, por lo que subsiguientes requests no podrán ser servidas. Por lo tanto, estas operaciones deberían correr idealmente en un worker thread con la ayuda de la librería nativa de Node.js llamada worker-threads.

  • La clase ConstructorSearch sirve dos propósitos: índice de texto y caché de los constructores. Dado que el autocomplete de la web hace varias peticiones al backend, sería ineficiente hacerle todas estas peticiones a Mongo. Por lo tanto, el presente backend revalida cada ttlMinutes (atributo de ConstructorSearch) los constructores pidiéndoselos a Mongo. De esta manera, cuando el frontend pide los constructores, la consulta se ejecuta rápidamente en el mismo backend (no se accede a la base de datos). Al mismo tiempo, se m antiene la data de constructores relativamente actualizada al revalidar los constructores cada ttlMinutes.

  • Podría poner más notas sobre la implementación, pero sería un documento muy extenso. Por lo tanto, cualquier duda de implementación no duden en escribirme por correo (gabriel.spranger@utec.edu.pe) o Discord (mrmm#7777).

About

Backend para el visor de puestos obtenidos por constructor en el periodo de 2010-2020.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages