Skip to main content

🏗️ 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.

Enlace a Arquitectura

🔍 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: handleContractCreated

  • gl.intangiblesaleshub.contract.productsfound.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleContractProductsFound

  • gl.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: handleProductsMultipleAsyncSearch

  • gl.intangiblesaleshub.productmultiple.productsasyncfound.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleBusinessRulesSearch

  • gl.intangiblesaleshub.productmultiple.businessrulesasyncfound.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleValueCalculationWarranty

  • gl.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: handleProductUpdateRequested

  • gl.intangiblesaleshub.productupdate.productfound.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleProductFound

  • gl.intangiblesaleshub.productupdate.contractfound.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleContractFound

  • gl.intangiblesaleshub.productupdate.warrantyvaluecalculated.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleWarrantyValueCalculated

  • gl.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: handleStoreAsyncRequested

  • gl.intangiblesaleshub.storeinfodispatcher.contractsfound.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleContractsFound

  • gl.intangiblesaleshub.storeinfodispatcher.productsfound.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleProductsFound

  • gl.intangiblesaleshub.storeinfodispatcher.warrantyvaluecalculated.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleWarrantyValueAsyncCalculated

  • gl.intangiblesaleshub.storeinfodispatcher.webhooknotified.v1:

    Proveedor: PubSub
    Manejador de Mensajes: handleWebhookNotified