📦 Ares
📝 Descripción General
Ares es un microservicio encargado de recolectar información de producto desde diferentes fuentes y posteriormente publicar esa información concentrada en varios canales como:
- Typesense
- Motor de busqueda de productos que se utiliza en headless.
- click aquí para mas detalle
- (GMC) Google Merchant Center
- Catalogo de productos que consume GMC para campañas publicitarias de Google.
- click aquí para mas detalle
- Meta
- Catalogo de productos que consume Meta para campañas publicitarias de Facebook.
- click aquí para mas detalle
De esta forma, Ares funciona como un hub de información de producto dentro del ecosistema.
🔗 Fuentes de Información
Ares recibe datos de distintos sistemas:
- PIM → nombre, SKU, imágenes, color, tipo de venta, estado (activo/inactivo).
- Pricing → MSRP y precio.
- Williams → cantidad de stock disponible.
⚙️ Arquitectura y Tecnologías
- Lenguaje: Node.js
- Infraestructura: AWS Lambda
- Orquestación: Serverless Framework
- Base de datos: MongoDB
- Mensajería: RabbitMQ
- Automatizaciones auxiliares: crontab en servidores externos
Repositorios principales:
ms-ares-consumers: lógica que consume información de productos desde las fuentes.ms-ares-reports: lógica de publicación hacia los canales (Typesense, Google Merchant, etc).
⚠️ Antes se usaba Serverless Dashboard para despliegue y monitoreo.
Actualmente:
- Despliegue → manual, vía CLI de Serverless desde local.
- Monitoreo → directo en la consola de AWS (sección Lambdas).
🔄 Flujo de Funcionamiento
1. Publicación de eventos de producto
Los sistemas fuente (Gabo, PIM, Pricing) publican eventos de producto en RabbitMQ:
- Vhost:
gaiaRMQProd - Queue:
.ares.product - Formato: JSON con información del producto
2. Forwarding a AWS Lambda
Un job en el servidor gaia-williams-rmq-prod escucha la queue y reenvía los mensajes a la Lambda de consumo usando rabbit-amazon-forwarder.
3. Persistencia en base de datos
La Lambda consumidor:
- Recibe el mensaje.
- Guarda la información del producto en la base de datos MongoDB de Ares.
4. Publicación en canales externos
- Un script en el crontab del servidor gaia-backoffice revisa periódicamente la base de datos.
- Consulta los productos con estado pendiente de publicación, por ejemplo:
where channels.TYPESENSE.status = PENDING