Architecture
Este documento describe la arquitectura implementada en el worker de recolección de logística inversa.
Arquitectura
Section titled “Arquitectura”El worker sigue una arquitectura hexagonal (también conocida como puertos y adaptadores) con tres capas principales: dominio, aplicación e infraestructura.
Capa de Dominio
Section titled “Capa de Dominio”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
Componentes Principales
Section titled “Componentes Principales”reverse-logistics/: Entities y lógica relacionada con logística inversaproduct/: Entities y lógica relacionada con productossupply/: Entities y lógica relacionada con suministrosqueue/: Interfaces y tipos para operaciones de colaassignments/: Entities y lógica relacionada con asignaciones de ubicación
Capa de Aplicación
Section titled “Capa de Aplicació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
Componentes Principales
Section titled “Componentes Principales”processor.ts: Implementa la lógica principal de procesamiento para recolectar elementos de logística inversachecker.ts: Implementa lógica de validación para eventostransformer.ts: Implementa lógica de transformación de eventos a entities del dominioworker.ts: Implementa el worker que ejecuta el procesador según una programación
Capa de Infraestructura
Section titled “Capa de Infraestructura”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
Componentes Principales
Section titled “Componentes Principales”services/: Implementaciones de servicios del dominioqueue/: Implementación del servicio de cola utilizando AWS SQSproduct/: Implementación del servicio de productoreverse-logistics/: Implementación del servicio de logística inversaassignments/: Implementación del servicio de asignación de ubicación
http/: Servidor HTTP y endpointslogger/: Infraestructura de loggingcontext/: Gestión de contexto para seguimiento de solicitudesproviders/: Inyección de dependencias y conexión de componenteshealthcheck/: Endpoints de comprobación de salud
Flujo de Control
Section titled “Flujo de Control”- El worker está programado para ejecutarse a intervalos regulares utilizando un cron job
- El worker recibe mensajes de la cola SQS
- Cada mensaje es validado y transformado en una entity del dominio
- La entity del dominio es procesada según las reglas de negocio
- El resultado es almacenado o enviado a servicios externos
- El mensaje es eliminado de la cola si el procesamiento es exitoso