Architecture
Este documento describe la arquitectura implementada en el microservicio de Logística Inversa.
Arquitectura
Section titled “Arquitectura”El microservicio de Logística Inversa sigue una arquitectura hexagonal (también conocida como arquitectura de puertos y adaptadores) con tres capas principales: domain, application e infrastructure. Esta arquitectura promueve la separación de responsabilidades, la testabilidad y la mantenibilidad.
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 que tienen una identidad y un ciclo de vida (ReverseLogisticsItem, ProductItem, Tara)
- ValueObjects: Objetos inmutables que representan conceptos del dominio (Ean, Sku, Barcode, Country, Warehouse)
- Repositories: Interfaces que definen cómo acceder y persistir entidades
- Domain Services: Servicios que operan sobre múltiples entidades
- Domain Events: Eventos que ocurren dentro del dominio
- Business Rules: Reglas que gobiernan el comportamiento del dominio
Componentes Principales
Section titled “Componentes Principales”item/: Entities y lógica relacionada con elementos de logística inversaproduct/: Entities y lógica relacionada con productostara/: Entities y lógica relacionada con taraslocation/: Entities y lógica relacionada con ubicacionescontainer/: Entities y lógica relacionada con contenedoreswarehouse/: Entities y lógica relacionada con almacenesinventory/: Entities y lógica relacionada con inventariovalueobjects/: ValueObjects utilizados en todo el dominioutils/: Funciones de utilidad para el dominioobserver.ts: Interfaz Observer para el patrón Observersubject.ts: Interfaz Subject para el patrón Observer
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 las entities del dominio para realizar tareas específicas
- Implementa límites de transacción
- Aplica reglas de negocio de alto nivel
- Gestiona observers y subjects para la notificación de eventos
Componentes Principales
Section titled “Componentes Principales”usecases/: Implementaciones de los casos de usoitems/: Casos de uso para elementos de logística inversainventory/: Casos de uso para inventariolocation/: Casos de uso para ubicacionespending/: Casos de uso para elementos pendientesreports/: Casos de uso para informes
observers/: Implementaciones de observerssns/: Observers que publican eventos en AWS SNS
subjects/: Implementaciones de subjectsgeneric.ts: Implementación genérica de la interfaz Subjectitem.ts: Subject para elementos de logística inversa
calendar.ts: Servicio de calendario para operaciones de fecha y horaerror-handler.ts: Utilidades para manejo de errores
Capa de Infraestructura
Section titled “Capa de Infraestructura”La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en la capa de dominio. Esta capa:
- Implementa el acceso a la base de datos
- Proporciona adaptadores para servicios externos
- Implementa controladores y rutas HTTP
- Gestiona la configuración y variables de entorno
- Implementa logging y métricas
Componentes Principales
Section titled “Componentes Principales”http/: Servidor HTTP, controladores y rutascontrollers/: Controladores HTTP para manejar solicitudesroutes/: Rutas HTTP para definir endpoints de APImiddlewares/: Middlewares HTTP para procesamiento de solicitudes
repositories/: Implementaciones de interfaces de repositorioreverse-logistic-item/: Repositorio para elementos de logística inversablacklist/: Repositorio para elementos en lista negra
service/: Implementaciones de interfaces de servicioevent-dispatcher/: Implementación del despachador de eventos usando AWS SNS
providers/: Proveedores para inyección de dependenciascontext/: Funcionalidad relacionada con el contextologger/: Funcionalidad de loggingmetrics/: Recolección de métricasvalidators/: Funcionalidad de validaciónhealthcheck/: Implementación de verificación de salud