ProductSvc
El servicio de productos (ProductSvc) gestiona la información centralizada de los productos ofrecidos por CryoNova Labs.
Responsabilidades principales
El ProductSvc se encarga de:
- Gestión de información del producto: Mantenimiento de datos fundamentales del producto
- Configuraciones: Administración de configuraciones personalizables para cada producto
- Especificaciones técnicas: Gestión de especificaciones detalladas y documentación técnica
- Precios y disponibilidad: Control de precios y estado de disponibilidad
Arquitectura
El servicio implementa una arquitectura simple y directa:
Modelo de datos
Entidades principales:
Entidad | Descripción |
---|---|
Product | Información básica y estado del producto |
ProductConfiguration | Opciones y configuraciones disponibles |
Specification | Detalles técnicos y parámetros |
PriceHistory | Historial de cambios de precio |
Implementación CQRS
Comandos
UpdateProductDetails
: Actualizar información básica del productoUpdateProductPrice
: Modificar el precio del productoUpdateProductAvailability
: Cambiar estado de disponibilidadAddProductConfiguration
: Añadir nueva configuración
Consultas
GetProductById
: Obtener información completa del productoGetProductConfigurations
: Listar configuraciones disponiblesGetProductSpecifications
: Obtener especificaciones técnicasGetProductPriceHistory
: Consultar historial de precios
Endpoints API
API RESTful simplificada:
GET /api/products
: Listar todos los productosGET /api/products/{id}
: Obtener producto por IDPUT /api/products/{id}
: Actualizar información del productoGET /api/products/{id}/configurations
: Obtener configuracionesPOST /api/products/{id}/configurations
: Añadir configuraciónGET /api/products/{id}/specifications
: Obtener especificaciones
Eventos publicados
El servicio publica eventos en RabbitMQ cuando:
- Se actualiza información importante del producto
- Cambia el precio del producto
- Cambia la disponibilidad del producto
- Se añade o modifica una configuración
Tecnologías utilizadas
- .NET 10: Framework base
- PostgreSQL: Base de datos principal
- Dapper: Micro ORM para acceso a datos
- RabbitMQ: Mensajería para eventos
- Polly: Gestión de reintentos
Monitorización
- Logs estructurados de cambios en productos
- Alertas para modificaciones críticas
- Seguimiento de actualización de precios
Despliegue
- Despliegue directo en servidores dedicados
- Alta disponibilidad: múltiples instancias
- Copias de seguridad diarias
- Actualizaciones Blue/Green para minimizar tiempo de inactividad