Skip to content

Architecture

Este microservicio está implementado siguiendo los principios de la arquitectura hexagonal (también conocida como arquitectura de puertos y adaptadores). Esta arquitectura permite separar claramente las responsabilidades y facilita la prueba y mantenimiento del código.

Contiene la lógica de negocio central y las reglas del dominio, independiente de cualquier infraestructura externa.

  • Entidades: Representan los conceptos principales del dominio (WasteReport, Product, Location, Container)
  • Objetos de Valor: Encapsulan valores que no tienen identidad propia pero son importantes para el dominio (Ean, Sku, Country, Warehouse)
  • Interfaces de Repositorio: Definen cómo se accede a los datos sin especificar la implementación
  • Interfaces de Servicio: Definen los contratos para servicios externos sin acoplar a implementaciones específicas
  • Errores de Dominio: Representan errores específicos del dominio
  • Interfaces de Observador/Sujeto: Definen los contratos para el patrón Observador

Orquesta el flujo de datos y coordina la ejecución de la lógica de negocio, conectando la infraestructura con el dominio.

  • Casos de Uso: Implementan las operaciones específicas que la aplicación puede realizar (crear, validar, confirmar o rechazar mermas)
  • Sujetos: Implementaciones concretas del patrón Observador que notifican a los observadores sobre eventos
  • Observadores: Reaccionan a los eventos del dominio y ejecutan acciones específicas
  • Manejadores de Errores: Procesan y transforman errores para presentarlos adecuadamente

Proporciona implementaciones concretas de las interfaces definidas en el dominio, conectando la aplicación con sistemas externos.

  • Repositorios: Implementaciones concretas para acceder a la base de datos MongoDB
  • Servicios Externos: Implementaciones para interactuar con otros microservicios (Location, Product, Inventory, etc.)
  • Controladores HTTP: Manejan las solicitudes HTTP y las transforman en llamadas a casos de uso
  • Validadores: Validan los datos de entrada antes de procesarlos
  • Despachadores de Eventos: Publican eventos en SNS cuando ocurren cambios en el estado de las mermas
  • Configuración: Gestión de variables de entorno y configuración de la aplicación
  • Logging: Implementación de registro de eventos y errores