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.
Arquitectura
Section titled “Arquitectura”Capa de Dominio
Section titled “Capa de Dominio”Contiene la lógica de negocio central y las reglas del dominio, independiente de cualquier infraestructura externa.
Componentes Principal
Section titled “Componentes Principal”- 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
Capa de Aplicación
Section titled “Capa de Aplicación”Orquesta el flujo de datos y coordina la ejecución de la lógica de negocio, conectando la infraestructura con el dominio.
Componentes Principal
Section titled “Componentes Principal”- 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
Capa de Infraestructura
Section titled “Capa de Infraestructura”Proporciona implementaciones concretas de las interfaces definidas en el dominio, conectando la aplicación con sistemas externos.
Componentes Principal
Section titled “Componentes Principal”- 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