products-ms es la fuente de verdad del catálogo. Todo lo que el sistema necesita saber sobre un producto "vendible" nace aquí: identidad, nombre, precio y disponibilidad.
Este servicio parece simple, pero cumple una función estructural muy importante: evita que otros contextos adivinen o dupliquen información del catálogo.
En la práctica:
- el gateway lo usa para exponer operaciones de catálogo;
order-msconfía en este servicio para validar qué productos siguen siendo válidos al momento de comprar;- el resto del sistema puede asumir que precio y disponibilidad se consultan aquí.
De todos los servicios, este suele ser el más fácil de leer porque combina pocos conceptos y casi nada de orquestación:
- un dominio acotado;
- persistencia directa;
- contratos de mensajería claros;
- una regla simple de disponibilidad.
Eso lo vuelve ideal para entender el patrón base antes de pasar a órdenes o pagos.
Más que "guardar productos", este servicio protege decisiones del catálogo:
- qué atributos forman parte del producto;
- cuándo un producto sigue visible o comprable;
- qué datos pueden reutilizar otros dominios;
- cómo se valida una lista de productos antes de continuar un flujo.
Su decisión más visible hoy es que la eliminación es lógica. El sistema prefiere desactivar productos antes que borrarlos físicamente, lo que mantiene coherencia para consultas y flujos aguas abajo.
src/products/products.controller.ts: frontera de mensajes del catálogo.src/products/products.service.ts: reglas de lectura, actualización y validación.prisma/schema.prisma: definición del modelo persistido.
Este es el servicio correcto cuando quieres:
- cambiar qué significa que un producto esté disponible;
- extender el modelo del catálogo;
- ajustar cómo se valida una orden contra productos existentes;
- introducir nuevas reglas de consulta o visibilidad del catálogo.
Si el cambio está más relacionado con checkout, pago o estado de compra, probablemente ya salimos del dominio de este microservicio.