Skip to content

Architecture

Este documento describe la arquitectura implementada en el microservicio de Asignación de Ubicaciones, organizado en tres capas principales:

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 con identidad y ciclo de vida (Assignment, Location, Product)
  • ValueObjects: Objetos inmutables que representan conceptos del dominio
  • Domain Services: Servicios que operan sobre múltiples entidades
  • Repositories Interfaces: Contratos para el acceso a datos
  • Domain Events: Eventos que ocurren dentro del dominio
  • assignment/: Entidades y lógica relacionada con asignaciones de ubicaciones
  • location/: Entidades y lógica relacionada con ubicaciones de almacén
  • product/: Entidades y lógica relacionada con productos
  • user/: Entidades y lógica relacionada con usuarios
  • valueobjects/: Value objects utilizados en todo el dominio
  • observer.ts y subject.ts: Interfaces para el patrón Observer

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 a un nivel más alto
  • Gestiona transacciones y flujos de trabajo
  • Implementa el patrón Observer para notificaciones de eventos
  • usecases/: Implementaciones de los casos de uso
    • assignments/: Casos de uso para gestionar asignaciones
      • locations/: Casos de uso para gestionar ubicaciones dentro de asignaciones
  • observers/: Implementaciones de observadores
    • sns/: Observadores para emisión de eventos SNS
  • subjects/: Implementaciones de sujetos para el patrón Observer

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

  • Implementa el acceso a datos a través de repositorios
  • Proporciona controladores y rutas HTTP
  • Implementa integraciones con servicios externos
  • Proporciona logging y manejo de errores
  • repositories/: Implementaciones de repositorios para MongoDB
  • http/: Controladores HTTP, rutas y middleware
  • services/: Integraciones con servicios externos
    • event-dispatcher/: Implementación de despachadores de eventos
  • providers/: Funciones factory para crear componentes de infraestructura
  • logger/: Implementación de logging
  • cache/: Mecanismos de caché
  • healthcheck/: Implementación de verificación de salud