Architecture
El Worker de Evaluación de Reabastecimiento Urgente está construido siguiendo los principios de la Arquitectura Hexagonal (también conocida como Puertos y Adaptadores). Esta arquitectura separa la aplicación en tres capas principales: Dominio, Aplicación e Infraestructura. Esta separación permite una mejor capacidad de prueba, mantenibilidad y flexibilidad.
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 y las entidades.
- Definir las entidades y reglas de negocio principales
- Implementar la lógica específica del dominio
- Definir interfaces (puertos) que la aplicación utilizará para interactuar con sistemas externos
Componentes Clave
Section titled “Componentes Clave”-
Entidades de Dominio:
OrderRequirementOnHold: Representa un requisito de pedido que está en espera debido a reabastecimiento pendienteRestocking: Representa una alerta de reabastecimiento con propiedades como id, ean, tipo, nivel, país y almacén
-
Servicios de Dominio:
QueueService: Interfaz para interactuar con colas de mensajesRestockingService: Interfaz para gestionar alertas de reabastecimiento
-
Errores de Dominio:
BusinessError: Clase base para todos los errores de negocioInvalidEventFormatError: Error para formatos de eventos inválidosUnprocessableEventTypeError: Error para eventos que no pueden ser procesadosWarehouseNotFoundError: Error cuando no se encuentra un almacénWarehouseNotEnabledError: Error cuando un almacén no está habilitado para reabastecimiento urgenteRestockingAlreadyExistsError: Error cuando ya existe una alerta de reabastecimiento
Capa de Aplicación
Section titled “Capa de Aplicación”La capa de Aplicación orquesta el flujo de datos y coordina los objetos de dominio para realizar casos de uso específicos.
- Implementar casos de uso coordinando objetos de dominio
- Traducir entre las capas de dominio e infraestructura
- Manejar la lógica específica de la aplicación que no pertenece al dominio
Componentes Clave
Section titled “Componentes Clave”-
Worker:
UrgentEvaluatorWorker: Coordina el proceso de recibir mensajes, procesarlos y eliminarlos de la cola
-
Procesador:
UrgentEvaluatorProcessor: Implementa la lógica de negocio para procesar eventos de requisitos de pedidos en espera
-
Verificadores:
checkIfEventIsProcessable: Valida si un evento puede ser procesadocheckIfWarehouseExists: Verifica si existe un almacéncheckWarehouseFlag: Verifica si un almacén tiene habilitada la bandera de característica necesaria
Capa de Infraestructura
Section titled “Capa de Infraestructura”La capa de Infraestructura proporciona implementaciones concretas de las interfaces definidas en la capa de dominio y maneja la comunicación con sistemas externos.
- Implementar adaptadores para sistemas externos (bases de datos, colas de mensajes, APIs)
- Proporcionar implementaciones concretas de interfaces de dominio
- Manejar preocupaciones técnicas como comunicación HTTP, serialización de mensajes, etc.
Componentes Clave
Section titled “Componentes Clave”-
Servicios:
AwsQueueService: Implementa la interfaz QueueService para AWS SQSHttpRestockingService: Implementa la interfaz RestockingService para comunicación HTTP
-
Proveedores:
getQueueService: Función de fábrica para crear instancias de QueueServicegetRestockingService: Función de fábrica para crear instancias de RestockingServicegetWorker: Función de fábrica para crear instancias de Worker
-
Servidor HTTP:
- Servidor Express para endpoints de verificación de salud
- Middleware para manejo de errores y registro
-
Verificación de Salud:
HealthState: Singleton para rastrear el estado de salud de la aplicación- Endpoints de verificación de salud para monitorear la aplicación
-
Logger:
- Infraestructura de registro para la aplicación