Skip to content

Architecture

Este documento describe la arquitectura implementada en el worker de recolección de logística inversa.

El worker sigue una arquitectura hexagonal (también conocida como puertos y adaptadores) con tres capas principales: dominio, aplicación e infraestructura.

La capa de dominio es el núcleo de la aplicación y contiene la lógica de negocio. Esta capa define:

  • Entities: Objetos con identidad y ciclo de vida (ReverseLogisticItem, Product)
  • ValueObjects: Objetos inmutables que representan conceptos del dominio (Zone)
  • Domain Services: Servicios que operan sobre entities del dominio
  • Repositories: Interfaces para acceso a datos
  • Domain Events: Eventos que ocurren en el dominio
  • reverse-logistics/: Entities y lógica relacionada con logística inversa
  • product/: Entities y lógica relacionada con productos
  • supply/: Entities y lógica relacionada con suministros
  • queue/: Interfaces y tipos para operaciones de cola
  • assignments/: Entities y lógica relacionada con asignaciones de ubicación

La capa de aplicación orquesta el flujo de datos entre el mundo exterior y el dominio. Contiene los casos de uso de la aplicación, que representan las operaciones que el sistema puede realizar. Esta capa:

  • Coordina entities del dominio para realizar tareas específicas
  • Implementa reglas de negocio y flujos de trabajo
  • Maneja errores y excepciones
  • Gestiona transacciones
  • processor.ts: Implementa la lógica principal de procesamiento para recolectar elementos de logística inversa
  • checker.ts: Implementa lógica de validación para eventos
  • transformer.ts: Implementa lógica de transformación de eventos a entities del dominio
  • worker.ts: Implementa el worker que ejecuta el procesador según una programación

La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en el dominio. Esta capa:

  • Implementa acceso a datos utilizando tecnologías específicas
  • Proporciona adaptadores para servicios externos
  • Maneja preocupaciones técnicas como logging, configuración y HTTP
  • Gestiona dependencias y conexión de componentes
  • services/: Implementaciones de servicios del dominio
    • queue/: Implementación del servicio de cola utilizando AWS SQS
    • product/: Implementación del servicio de producto
    • reverse-logistics/: Implementación del servicio de logística inversa
    • assignments/: Implementación del servicio de asignación de ubicación
  • http/: Servidor HTTP y endpoints
  • logger/: Infraestructura de logging
  • context/: Gestión de contexto para seguimiento de solicitudes
  • providers/: Inyección de dependencias y conexión de componentes
  • healthcheck/: Endpoints de comprobación de salud
  1. El worker está programado para ejecutarse a intervalos regulares utilizando un cron job
  2. El worker recibe mensajes de la cola SQS
  3. Cada mensaje es validado y transformado en una entity del dominio
  4. La entity del dominio es procesada según las reglas de negocio
  5. El resultado es almacenado o enviado a servicios externos
  6. El mensaje es eliminado de la cola si el procesamiento es exitoso