Architecture
El Container Killer Worker está implementado siguiendo los principios de la Arquitectura Hexagonal. Esta arquitectura permite una clara separación de responsabilidades y facilita la prueba y el mantenimiento del código.
Arquitectura
Section titled “Arquitectura”Capa de Dominio
Section titled “Capa de Dominio”Contiene las entidades del negocio, reglas de negocio, interfaces de puertos y errores del dominio.
Componentes Principal:
- Entidades:
Container: Representa un contenedor en el sistema de inventario.Event: Define la estructura de los eventos que procesa el worker.
- Interfaces de Servicios (Puertos):
ContainerService: Define las operaciones que se pueden realizar con contenedores.InventoryService: Define las operaciones relacionadas con el inventario.QueueService: Define las operaciones para interactuar con colas de mensajes.
- Errores del Dominio:
BusinessError: Clase base para errores de negocio.ContainerNotFoundError: Error específico cuando no se encuentra un contenedor.ValidationError: Error de validación de datos.
La capa de dominio está completamente aislada de detalles de implementación y dependencias externas, lo que permite que las reglas de negocio sean independientes de la infraestructura.
Capa de Aplicación
Section titled “Capa de Aplicación”Orquesta el flujo de datos entre el dominio y la infraestructura, implementando los casos de uso de la aplicación.
Componentes Principal:
- Worker:
ContainerKillerWorker: Coordina la recepción de mensajes y su procesamiento.
- Procesador:
ContainerKillerProcessor: Implementa la lógica de negocio para procesar los eventos de transacción de salida.
- Utilidades:
- Funciones auxiliares para el manejo de errores y transformación de datos.
La capa de aplicación utiliza las interfaces definidas en el dominio y orquesta el flujo de la aplicación sin conocer los detalles de implementación de la infraestructura.
Capa de Infraestructura
Section titled “Capa de Infraestructura”Proporciona implementaciones concretas de las interfaces definidas en el dominio, interactuando con servicios externos, bases de datos, colas, etc.
Componentes Principal:
-
Servicios:
HttpContainerService: Implementación del servicio de contenedores mediante HTTP.HttpInventoryService: Implementación del servicio de inventario mediante HTTP.AwsQueueService: Implementación del servicio de colas utilizando AWS SQS.
-
Configuración:
- Configuración de la aplicación, variables de entorno, etc.
-
Proveedores:
- Fábricas para crear instancias de servicios y componentes.
-
HTTP:
- Configuración del servidor Express para endpoints de salud y monitoreo.
-
Logger:
- Implementación del sistema de logging.
-
Cron:
- Gestión del estado y configuración de tareas programadas.
La capa de infraestructura contiene todo el código que interactúa con el mundo exterior, aislando estas interacciones del núcleo de la aplicación.