Architecture
Este documento describe la arquitectura implementada en el microservicio de Product Demand.
Arquitectura
Section titled “Arquitectura”El microservicio sigue una arquitectura hexagonal (también conocida como puertos y adaptadores) con tres capas principales: domain, application e infrastructure. Esta arquitectura promueve la separación de responsabilidades, la testabilidad y la mantenibilidad.
Capa de Domain
Section titled “Capa de Domain”La capa de domain es el núcleo de la aplicación y contiene la lógica de negocio. Esta capa define:
- Entities: Objetos con identidad y ciclo de vida (ProductDemand, DemandPerDay)
- Value Objects: Objetos inmutables que representan conceptos del dominio (Ean, Country, Warehouse)
- Domain Services: Servicios que operan sobre múltiples entidades
- Repositories Interfaces: Contratos para acceso a datos
- Domain Events: Eventos que ocurren dentro del dominio
- Business Rules: Reglas y validaciones centrales
Componentes Principales
Section titled “Componentes Principales”demand/: Entities y lógica relacionada con la demanda de productosdemand/per-day/: Entities y lógica para estadísticas diarias de demandacategory/: Lógica de dominio para categorización de productosproduct/: Objetos de dominio e interfaces relacionados con productosmethods/: Métodos de cálculo de demanda (ej. promedio)valueobjects/: Value Objects como Ean, Country, Warehouseobserver.tsysubject.ts: Interfaces para el Observer Pattern
Capa de Application
Section titled “Capa de Application”La capa de application 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 entities del dominio para realizar tareas específicas
- Implementa reglas de negocio de alto nivel
- Gestiona transacciones y consistencia
- Implementa el Observer Pattern para manejo de eventos
Componentes Principales
Section titled “Componentes Principales”usecases/: Implementación de casos de usodemand/: Casos de uso para demanda de productosdemand-per-day/: Casos de uso para estadísticas diarias de demanda
observers/: Implementaciones de observerssubjetcs/: Implementaciones de subjects para el Observer Patterncalendar.ts: Funcionalidad relacionada con el calendarioerror-handler.ts: Manejo de errores a nivel de aplicación
Capa de Infrastructure
Section titled “Capa de Infrastructure”La capa de infrastructure proporciona implementaciones concretas de las interfaces definidas en el dominio. Esta capa:
- Implementa el acceso a datos a través de repositories
- Proporciona adaptadores para servicios externos
- Maneja peticiones y respuestas HTTP
- Implementa el envío de eventos a AWS SNS
- Gestiona logging y métricas
Componentes Principales
Section titled “Componentes Principales”http/: Componentes relacionados con HTTProutes/: Rutas de la APImiddlewares/: Middlewares de Express
repositories/: Implementaciones de repositories para MongoDBservices/: Implementaciones de servicios externosevent-dispatcher/: Implementación de despachadores de eventossns/: Servicios para interactuar con AWS SNS
logger/: Funcionalidad de loggingmetrics/: Recolección de métricas