🏗️ Arquitectura
🗺️ Diagramas de arquitectura de alto nivel
Los diagramas de arquitectura de alto nivel muestran la estructura general del producto y cómo se comunican entre sí. Estos diagramas proporcionan una visión macro de los componentes principales y sus interacciones.
🔍 Descripción de los componentes principales
🎨 Front-end
El front-end de nuestra aplicación está construido utilizando tecnologías modernas para asegurar una experiencia de usuario fluida y responsiva. Las tecnologías utilizadas incluyen:
- Frameworks: React
- UI Components: RamenX
🔧 Back-end
El back-end es responsable de manejar la lógica de la aplicación, la comunicación con la base de datos y la gestión de las solicitudes de los usuarios. Esta basaba en una arquitectura de Microservicios, orquestados a traves de un BFF, Los componentes principales incluyen:
- Lenguajes de programación: Node.js
- Frameworks: NestJS
- Artefactos: hhhh
☁️ Cloud Components (Seki)
Tambien se emplearon componentes de nube para algunas funcionalidades, entre los cuales tenemos:
- Manejo de Queues: PubSub
- Almacenamiento de archivos: GCP Bucket
🗄️ Bases de datos
Nuestra aplicación utiliza bases de datos no relacionales para almacenar y gestionar datos de manera eficiente:
- Bases de datos no relacionales: MongoDB
🛠️ Tecnología utilizada
☁️ Servicios en la nube
Para garantizar la escalabilidad y la disponibilidad, utilizamos varios servicios en la nube proporcionados por los principales proveedores:
- Proveedores de nube: Seki
⏲️ Cron Jobs
🗂️ Hierarchy cronjob
El cronjob de Hierarchy realiza una llamada a la API de Hierarchy para actualizar las jerarquías. Esta ejecución se lleva a cabo de manera específica por país y marca, dependiendo de la estrategia. Ej: (CL/EASY)
- Este es el schedule del Cron: "0 0 * * *"
🛍️ Intangibles Products cronjob
El cronjob de Intangibles Products realiza una llamada a la API de Intangibles Products para actualizar los productos. Esta ejecución se lleva a cabo de manera específica por país y unidad de negocio y marca dependiendo de la estrategia. Ej: (CL/MDH/EASY)
- Schedule del Cron: "0 0 * * *"
🔄 Retry CronJob For Business Rule
Es un cronjob diseñado para manejar la recuperación automática de mensajes de dead letter provenientes del componente subscriber. Cuando los subscriber encuentra algún error al procesar un mensaje y lo envía al sistema de dead letter, este cronjob entra en acción para reintentar el procesamiento de esos mensajes fallidos en un horario definido.
- Schedule del Cron: "/30 * * *"
🏬 Store Info Dispatcher Cronjob
El cronjob de Store Info Dispatcher realiza una llamada a la API de rules engine para actualizar los productos pertenecientes a cada tienda. Esta ejecución se lleva a cabo de manera específica por país y unidad de negocio y marca. Ej: (CL/MDH/EASY).
- Schedule del Cron: "0 0 * * *"
📡 Subscribers
📜 Contract Event Subscriber
Este artefacto se encarga de suscribirse a eventos relacionados con la modificación, creación o eliminación de contratos.
Tópicos:
gl.intangiblesaleshub.contract.created.v1:
Proveedor: PubSub
Manejador de Mensajes: handleContractCreatedgl.intangiblesaleshub.contract.productsfound.v1:
Proveedor: PubSub
Manejador de Mensajes: handleContractProductsFoundgl.intangiblesaleshub.contract.warrantyvaluecalculated.v1:
Proveedor: PubSub
🔢 Product Multiple Subscriber
Este artefacto se encarga de suscribirse a eventos cuando se realiza una consulta de múltiples productos para calcular su garantía.
Tópicos:
gl.intangiblesaleshub.productmultiple.productsasyncrequested.v1:
Proveedor: PubSub
Manejador de Mensajes: handleProductsMultipleAsyncSearchgl.intangiblesaleshub.productmultiple.productsasyncfound.v1:
Proveedor: PubSub
Manejador de Mensajes: handleBusinessRulesSearchgl.intangiblesaleshub.productmultiple.businessrulesasyncfound.v1:
Proveedor: PubSub
Manejador de Mensajes: handleValueCalculationWarrantygl.intangiblesaleshub.productmultiple.warrantyvalueasynccalculated.v1:
Proveedor: PubSub
Manejador de Mensajes: handleWarrantyValueAsyncCalculated
🛠️ Product Updates Subscriber
Este artefacto se encarga de suscribirse a eventos relacionados con las novedades de precio de un producto, este proceso inicia al recibir la notificación del cambio de precio de un producto en nuestro sistema.
Tópicos:
gl.intangiblesaleshub.productupdate.requested.v1:
Proveedor: PubSub
Manejador de Mensajes: handleProductUpdateRequestedgl.intangiblesaleshub.productupdate.productfound.v1:
Proveedor: PubSub
Manejador de Mensajes: handleProductFoundgl.intangiblesaleshub.productupdate.contractfound.v1:
Proveedor: PubSub
Manejador de Mensajes: handleContractFoundgl.intangiblesaleshub.productupdate.warrantyvaluecalculated.v1:
Proveedor: PubSub
Manejador de Mensajes: handleWarrantyValueCalculatedgl.intangiblesaleshub.productupdate.webhooknotified.v1:
Proveedor: PubSub
Manejador de Mensajes: handleWebhookNotified
🏬 Store Info Dispatcher Subscriber
Este artefacto se encarga de suscribirse a eventos relacionados con la solicitud de proveer los productos con garantías de una tienda.
Tópicos:
gl.intangiblesaleshub.storeinfodispatcher.syncrequested.v1:
Proveedor: PubSub
Manejador de Mensajes: handleStoreAsyncRequestedgl.intangiblesaleshub.storeinfodispatcher.contractsfound.v1:
Proveedor: PubSub
Manejador de Mensajes: handleContractsFoundgl.intangiblesaleshub.storeinfodispatcher.productsfound.v1:
Proveedor: PubSub
Manejador de Mensajes: handleProductsFoundgl.intangiblesaleshub.storeinfodispatcher.warrantyvaluecalculated.v1:
Proveedor: PubSub
Manejador de Mensajes: handleWarrantyValueAsyncCalculatedgl.intangiblesaleshub.storeinfodispatcher.webhooknotified.v1:
Proveedor: PubSub
Manejador de Mensajes: handleWebhookNotified