Architecture
El microservicio de Gestión de Reabastecimiento implementa una arquitectura hexagonal (también conocida como arquitectura de puertos y adaptadores), que permite separar claramente las responsabilidades y facilita la evolución independiente de cada capa del sistema.
Arquitectura
Section titled “Arquitectura”Capa de Dominio
Section titled “Capa de Dominio”La capa de dominio es el núcleo de la aplicación y contiene la lógica de negocio y las reglas del dominio. Esta capa es independiente de cualquier detalle técnico y no tiene dependencias externas.
- Definir las entidades y objetos de valor del dominio
- Establecer las reglas de negocio y validaciones
- Definir interfaces (puertos) para repositorios y servicios externos
- Implementar la lógica de negocio central
Componentes principales:
Section titled “Componentes principales:”- Entidades:
Restocking,Restock,Product, etc. - Objetos de valor:
RestockingId,Ean,Country,Warehouse, etc. - Interfaces de repositorios:
RestockingRepository,RestockRepository, etc. - Interfaces de servicios:
InventoryService,ProductService, etc. - Definiciones de errores:
BusinessError,UnexpectedError, etc.
Capa de Aplicación
Section titled “Capa de Aplicación”La capa de aplicación orquesta las entidades del dominio para implementar los casos de uso específicos de la aplicación. Actúa como intermediario entre la capa de dominio y la capa de infraestructura.
- Implementar los casos de uso de la aplicación
- Coordinar las entidades del dominio
- Gestionar transacciones
- Implementar patrones como el Observador para notificaciones
Componentes principales:
Section titled “Componentes principales:”- Casos de uso:
CreateRestock,UpdateRestockingSuggestions, etc. - Observadores: Implementaciones de la interfaz
Observer - Sujetos: Implementaciones de la interfaz
Subject - Utilidades: Funciones auxiliares para los casos de uso
Capa de Infraestructura
Section titled “Capa de Infraestructura”La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en el dominio, conectando la aplicación con servicios externos, bases de datos, frameworks web, etc.
- Implementar adaptadores para repositorios (MongoDB)
- Implementar adaptadores para servicios externos
- Proporcionar controladores HTTP y definición de rutas
- Configurar el servidor y middlewares
- Implementar mecanismos de mensajería (SNS)
Componentes principales:
Section titled “Componentes principales:”- Repositorios: Implementaciones de las interfaces de repositorio definidas en el dominio
- Servicios externos: Implementaciones de las interfaces de servicio definidas en el dominio
- Controladores HTTP: Controladores para manejar las peticiones HTTP
- Rutas: Definición de las rutas de la API
- Configuración: Configuración del servidor, base de datos, etc.
- Mensajería: Implementación de publicadores SNS