Skip to main content

Back Node

El servicio Back Node (o Backend) actúa como el orquestador central de la plataforma ASPA. Es el componente responsable de actuar como puente entre las peticiones del usuario y el motor de cálculo, garantizando la integridad de los datos y coordinando las bases de datos del sistema.

Funcionalidad

Las responsabilidades principales de este componente abarcan la validación, orquestación y seguimiento de las consultas:

  • Validación y previsualización: Recibe el FilterPayload con los filtros seleccionados por el usuario desde el Frontend, los somete a validación contra la base de datos PostgreSQL y devuelve una vista previa (preview) de los puntos de destino viables antes de que el sistema inicie el cálculo pesado.
  • Gestión de trabajos (Jobs): Tras una validación exitosa, se comunica con la base de datos MongoDB para crear y registrar un job. Esta estructura de datos es fundamental, ya que centraliza toda la información de la petición (filtros aplicados, estados de progreso, resultados, etc.).
  • Construcción de consultas y delegación: Utiliza un módulo interno (QueryBuilder) para traducir los parámetros del FilterPayload en consultas estructuradas. Estas peticiones optimizadas se envían al microservicio Worker, encargado del cálculo de tiempos de accesibilidad.
  • Trazabilidad y actualización de estado: Una vez que el Worker finaliza su tarea y confirma la generación del archivo de resultados (CSV), el Back Node vuelve a interactuar con MongoDB para actualizar el estado final del job, cerrando el ciclo de la consulta y notificando que los datos están listos para ser visualizados.

Detalles técnicos y arquitectura

A nivel de ingeniería, este microservicio está diseñado para ser robusto, escalable y altamente estructurado:

  • Stack tecnológico: Desarrollado en TypeScript sobre el entorno de ejecución Node.js. Implementa conexiones concurrentes a bases de datos de distinta naturaleza para aprovechar sus puntos fuertes: MongoDB y PostgreSQL.
  • Arquitectura por capas: El código fuente se articula bajo el patrón Controlador-Servicio-Repositorio. Este enfoque garantiza una separación estricta de responsabilidades entre la recepción de las peticiones HTTP (Controladores), la lógica de negocio y validación (Servicios), y el acceso a los datos (Repositorios).
  • Herramientas y control de calidad: Para asegurar un entorno de desarrollo estandarizado y limpio, el proyecto se apoya en herramientas como Docker, Prettier, ESLint, Commitlint y Nodemon.
  • Testing: La fiabilidad del código se asegura mediante una exhaustiva suite de pruebas unitarias desarrolladas con Vitest, diseñadas para testear de forma aislada e independiente cada uno de los módulos que conforman la arquitectura.