Skip to content

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:

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.

  • Entidades: Objetos de negocio centrales

    • inventory/: Contiene entidades e interfaces de dominio relacionadas con el inventario
    • queue/types.ts: Define los tipos de mensajes para operaciones de cola
    • errors.ts: Define tipos de errores específicos del dominio
  • Interfaces (Puertos):

    • queue/service.ts: Define la interfaz QueueService para operaciones de cola
    • inventory/event-dispatcher.ts: Define la interfaz DataInventoryEventDispatcher para la publicación de eventos

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.

  • Casos de Uso:

    • worker.ts: Implementa la clase DataInventoryWorker que orquesta el procesamiento de eventos de inventario
    • processors/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

La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en la capa de dominio. Contiene adaptadores para servicios externos, repositorios y frameworks.

  • Adaptadores:

    • services/queue/index.ts: Implementa el adaptador AwsQueueService para SQS
    • services/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