Skip to content

Architecture

Este documento describe la arquitectura implementada en el worker de Auto-Restocking, que sigue los principios de arquitectura hexagonal (también conocida como puertos y adaptadores).

La capa de dominio es el núcleo de la aplicación y contiene la lógica de negocio central. Esta capa define:

  • Entities: Objetos que tienen una identidad y un ciclo de vida (Restocking, Input)
  • ValueObjects: Objetos inmutables que representan conceptos del dominio
  • Domain Services: Servicios que operan sobre las entidades del dominio
  • Interfaces (Ports): Contratos que la aplicación espera que sean implementados por componentes externos
  • queue/: Interfaces y tipos relacionados con operaciones de cola de mensajes
    • service.ts: Define la interfaz QueueService
    • types.d.ts: Define estructuras de mensajes
    • error.ts: Define errores específicos de la cola
  • restocking/: Entidades y lógica relacionada con operaciones de reabastecimiento
    • service.ts: Define la interfaz RestockingService
    • types.d.ts: Define entidades y objetos de valor de reabastecimiento
    • errors.ts: Define errores específicos de reabastecimiento
  • errors.ts: Define errores comunes del dominio

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 reglas de negocio y flujos de trabajo
  • Maneja condiciones de error y casos límite
  • Gestiona transacciones y consistencia
  • worker.ts: Implementa el worker principal que procesa mensajes de la cola
  • processor.ts: Procesa mensajes individuales y aplica lógica de negocio
  • checkers.ts: Valida mensajes contra reglas de negocio

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, Restocking Manager)
  • Proporciona funcionalidad de servidor HTTP para verificaciones de salud y monitoreo
  • Configura e inicializa la aplicación
  • Maneja preocupaciones técnicas como logging y manejo de errores
  • services/: Implementaciones de interfaces de servicio del dominio
    • queue/: Implementación de QueueService usando AWS SQS
    • restocking/: Implementación de RestockingService usando HTTP
  • http/: Configuración de servidor HTTP y endpoints
    • server.ts: Configuración del servidor Express
    • controllers/: Manejadores de peticiones HTTP
    • routes/: Definiciones de rutas HTTP
    • middlewares/: Funciones middleware HTTP
  • providers/: Proveedores de inyección de dependencias
    • aws.ts: Proporciona clientes de servicio AWS
    • services.ts: Proporciona implementaciones de servicios del dominio
    • worker.ts: Proporciona la instancia del worker
  • logger/: Infraestructura de logging
  • healthcheck/: Endpoints de verificación de salud