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
FilterPayloadcon 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 delFilterPayloaden 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.