Architecture
Este documento describe la arquitectura implementada en el worker para el procesamiento de demanda de productos.
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. 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 representan conceptos de negocio (ProductDemand)
- ValueObjects: Objetos inmutables que representan conceptos en el dominio (EventType)
- Ports: Interfaces que definen cómo la aplicación interactúa con sistemas externos (DemandService, QueueService)
- Business Rules: Reglas que gobiernan el comportamiento del dominio
Componentes Principales
Section titled “Componentes Principales”demand/: Contiene la entidad ProductDemand, el enum EventType y la interfaz DemandServicequeue/: Contiene la interfaz EventOrderChange, la interfaz QueueService y tipos relacionadoserrors/: Contiene definiciones de errores de negociovalidator/: Contiene interfaces de validació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 las entidades del dominio para realizar tareas específicas
- Implementa el flujo de trabajo de negocio
- Maneja la validación y gestión de errores
- Es independiente de frameworks y tecnologías externas
Componentes Principales
Section titled “Componentes Principales”processor.ts: Implementa la lógica de negocio principal para procesar eventos de cambio de pedidosworker.ts: Orquesta el flujo de trabajo de recepción de mensajes, procesamiento y manejo de resultadoscheckers.ts: Contiene funciones de validación para eventos
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 servicios externos (AWS SQS, API de Demanda de Productos)
- Proporciona adaptadores para los puertos definidos en el dominio
- Maneja preocupaciones técnicas como peticiones HTTP, colas de mensajes, etc.
- Contiene código de configuración y arranque
Componentes Principales
Section titled “Componentes Principales”services/: Contiene implementaciones de interfaces de servicio del dominioqueue/: Implementación de QueueService usando AWS SQSdemand/: Implementación de DemandService usando peticiones HTTP
validation/: Implementación de validación usando Zodproviders/: Funciones factory para crear instancias de servicioslogger/: Implementación de logginghealthcheck/: Implementación de verificación de salud para monitoreo
Flujo de Datos
Section titled “Flujo de Datos”- El worker es activado por un cron job a intervalos regulares
- Recibe mensajes de la cola SQS que contienen eventos de cambio de pedidos
- Cada evento es validado y verificado para determinar si es procesable
- Los eventos válidos son transformados en registros de demanda de productos
- Los registros de demanda son enviados a la API de Demanda de Productos
- Los mensajes procesados son eliminados de la cola
- Los errores son registrados y manejados según su tipo