Skip to content

Architecture

Este documento describe la arquitectura implementada en el microservicio Inventory Manager, explicando las diferentes capas y cómo interactúan entre sí.

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

  • Entidades: Objetos que tienen una identidad y un ciclo de vida (Entry, Product, Location, Container)
  • Objetos de Valor: Objetos inmutables que representan conceptos del dominio
  • Interfaces de Repositorio: Definen cómo se accede a los datos sin especificar la implementación
  • Servicios de Dominio: Contienen lógica de negocio que no pertenece a una entidad específica
  • Eventos de Dominio: Representan cambios significativos en el estado del sistema
  • entry/: Entidades y lógica relacionada con entradas de inventario
  • product/: Entidades y lógica relacionada con productos
  • location/: Entidades y lógica relacionada con ubicaciones
  • container/: Entidades y lógica relacionada con contenedores
  • strategies/: Implementaciones de estrategias de inventario (FIFO, FEFO)
  • observer.ts y subject.ts: Interfaces para el patrón Observador
  • event-dispatcher.ts: Interfaz para el despachador de eventos

La capa de aplicación orquesta el flujo de datos entre el 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 transacciones y reglas de negocio de alto nivel
  • Traduce entre el formato de datos externo y los objetos del dominio
  • Maneja la notificación de eventos
  • usecases/: Implementaciones de los casos de uso
    • input/: Casos de uso para entradas de inventario
    • output/: Casos de uso para salidas de inventario
    • transfer/: Casos de uso para transferencias de inventario
    • verification/: Casos de uso para verificación de inventario
  • observers/: Implementaciones de observadores
  • subjects/: Implementaciones de sujetos observables

La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en el dominio. Esta capa:

  • Implementa el acceso a bases de datos
  • Proporciona adaptadores para servicios externos (AWS SNS)
  • Implementa la API HTTP
  • Gestiona la configuración y el entorno
  • repositories/: Implementaciones de repositorios para MongoDB
  • services/: Implementaciones de servicios
    • event-dispatcher/: Implementación del despachador de eventos usando AWS SNS
    • sns/: Servicios para interactuar con AWS SNS
  • http/: Controladores y rutas HTTP
  • providers/: Proveedores de servicios y dependencias
  • context/: Contexto de la aplicación