Architecture
Este proyecto implementa una arquitectura hexagonal (también conocida como arquitectura de puertos y adaptadores), que separa la aplicación en tres capas principales:
Capa de Dominio
Section titled “Capa de Dominio”La capa de dominio contiene la lógica de negocio central, las entidades y las reglas de negocio de la aplicación. Es independiente de cualquier framework o servicio externo y representa el corazón de la aplicación.
Componentes Clave
Section titled “Componentes Clave”-
Entidades: Objetos de negocio centrales
inventory/: Contiene entidades e interfaces de dominio relacionadas con el inventarioqueue/types.ts: Define los tipos de mensajes para operaciones de colaerrors.ts: Define tipos de errores específicos del dominio
-
Interfaces (Puertos):
queue/service.ts: Define la interfaz QueueService para operaciones de colainventory/event-dispatcher.ts: Define la interfaz DataInventoryEventDispatcher para la publicación de eventos
Capa de Aplicación
Section titled “Capa de Aplicación”La capa de aplicación coordina el flujo de datos entre la capa de dominio y la capa de infraestructura. Contiene casos de uso y servicios de aplicación que orquestan los objetos de dominio para realizar tareas específicas.
Componentes Clave
Section titled “Componentes Clave”-
Casos de Uso:
worker.ts: Implementa la clase DataInventoryWorker que orquesta el procesamiento de eventos de inventarioprocessors/inventory.ts: Implementa el InventoryProcessor que procesa eventos de inventario
-
Validadores y Verificadores:
checkers.ts: Contiene funciones para validar y verificar reglas de negocio 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. Contiene adaptadores para servicios externos, repositorios y frameworks.
Componentes Clave
Section titled “Componentes Clave”-
Adaptadores:
services/queue/index.ts: Implementa el adaptador AwsQueueService para SQSservices/event-dispatcher/index.ts: Implementa el adaptador SNSDataInventoryEventDispatcher para SNS
-
Configuración:
config/: Contiene la configuración de la aplicación
-
Proveedores:
providers/: Contiene funciones de fábrica para crear instancias de servicios
-
Servidor HTTP:
http/: Contiene la configuración del servidor Express y las rutas
-
Logging:
logger/: Contiene la funcionalidad de registro
-
Trabajos Cron:
cron/: Contiene la gestión de trabajos cron
-
Validadores:
validators/: Contiene lógica de validación para datos externos