Skip to content

joadataarg/Market-Web3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MarketWeb3 - Arquitectura del Sistema

1. Descripción General

MarketWeb3 es una plataforma de comercio electrónico descentralizada que integra tecnologías Web3. El sistema está diseñado utilizando una arquitectura de microservicios para garantizar la escalabilidad, la mantenibilidad y el despliegue independiente de cada componente.

La plataforma se compone de un frontend web, una aplicación de escritorio y un conjunto de microservicios backend que gestionan funcionalidades específicas como autenticación, productos, carrito de compras, pagos con criptomonedas y más.

2. Diagrama de Arquitectura

A continuación, se presenta una descripción textual de la arquitectura del sistema:

[Frontend Web (Next.js)] <--> [API Gateway] <--> [Microservicios Backend (Django)]
[App de Escritorio (Electron)] <--> [API Gateway] <--> [Microservicios Backend (Django)]

        +--------------------------------+
        |      Bus de Mensajes           |
        |      (RabbitMQ / Kafka)        |
        +--------------------------------+
             ^           ^           ^
             |           |           |
[Servicio A] |-----------|-----------| [Servicio B]
(Publica eventos)        (Consume eventos)

  • Clientes: Los usuarios interactúan con el sistema a través de la aplicación web o la aplicación de escritorio.
  • API Gateway (Concepto): Un API Gateway (no implementado explícitamente en el código base actual) debería actuar como un punto de entrada único para todas las solicitudes de los clientes. Este enruta las solicitudes al microservicio apropiado, simplificando la comunicación y mejorando la seguridad.
  • Microservicios Backend: Cada microservicio es una aplicación independiente construida con Django y Django REST Framework, encargada de una lógica de negocio específica.
  • Comunicación Asíncrona: Los microservicios se comunican entre sí de forma asíncrona a través de un bus de mensajes. Esto desacopla los servicios y mejora la resiliencia del sistema. Por ejemplo, cuando se crea una orden, el servicio de órdenes publica un evento y los servicios de pagos y notificaciones reaccionan a él.

3. Componentes del Sistema

3.1. Frontend

a) Aplicación Web (frontend-main)

  • Tecnología: Next.js, React, Tailwind CSS.
  • Descripción: Es la interfaz principal para los usuarios. Permite a los clientes navegar por productos, gestionar su cuenta, realizar compras y interactuar con las funcionalidades de la plataforma.
  • Directorio: frontend-main/

b) Aplicación de Escritorio (electron-main)

  • Tecnología: Electron, React, Vite.
  • Descripción: Ofrece una experiencia de escritorio nativa con funcionalidades similares a las de la aplicación web.
  • Directorio: electron-main/

3.2. Microservicios Backend

Cada microservicio es un proyecto Django containerizado con Docker.

  • auth_microservice-main: Gestiona el registro, inicio de sesión y autenticación de usuarios mediante JWT.
  • products_microservices-main: Administra el catálogo de productos, categorías, inventario y precios.
  • cart_microservice-main: Gestiona los carritos de compra de los usuarios.
  • orders_microservice-main: Procesa las órdenes de compra, desde la creación hasta la finalización.
  • payments_microservice-main: Se encarga de la lógica de pagos tradicional.
  • cryptocurrency_microservice-main: Maneja los pagos y transacciones utilizando criptomonedas. Interactúa con contratos inteligentes.
  • cryptography_microservice-main: Provee servicios criptográficos para la firma y verificación de datos sensibles.
  • coupons_microservice-main: Administra la creación, validación y aplicación de cupones de descuento.
  • courses_microservice-main: Gestiona los cursos online, en caso de que la plataforma los ofrezca como productos.
  • email_microservice-main: Centraliza el envío de correos electrónicos transaccionales (confirmaciones de compra, bienvenida, etc.).
  • notifications_microservice-main: Gestiona y envía notificaciones a los usuarios (posiblemente en tiempo real con WebSockets).
  • messages_microservice-main: Facilita la comunicación entre usuarios dentro de la plataforma.

3.3. Infraestructura y Comunicación

  • Contenerización (Docker): Cada microservicio se ejecuta en su propio contenedor Docker, lo que garantiza un entorno aislado y consistente. Los archivos docker-compose.yaml definen los servicios, redes y volúmenes para el entorno de desarrollo local.
  • Comunicación Síncrona (API REST): Los frontends se comunican con los microservicios a través de APIs REST.
  • Comunicación Asíncrona (consumer.py): La presencia de archivos consumer.py en cada microservicio indica el uso de un bus de mensajes (como RabbitMQ) para la comunicación entre servicios, siguiendo un patrón de publicador/suscriptor.

4. Flujo de Datos (Ejemplo: Realizar una Compra)

  1. Añadir al Carrito: El usuario, desde el frontend, hace una solicitud HTTP al servicio de cart_microservice para añadir un producto.
  2. Crear Orden: El usuario procede al checkout. El frontend envía una solicitud al servicio de orders_microservice para crear una nueva orden.
  3. Publicar Evento: El orders_microservice crea la orden con estado "pendiente" y publica un evento order_created en el bus de mensajes.
  4. Procesar Pago:
    • El cryptocurrency_microservice consume el evento order_created, procesa el pago con criptomonedas y, si es exitoso, publica un evento payment_successful.
    • El products_microservice consume el evento order_created para reducir el stock del producto.
  5. Confirmar Orden: El orders_microservice consume el evento payment_successful y actualiza el estado de la orden a "completada".
  6. Notificar al Usuario:
    • El notifications_microservice consume el evento payment_successful y envía una notificación en la plataforma.
    • El email_microservice consume el mismo evento y envía un correo de confirmación.

5. Cómo Empezar

Prerrequisitos

  • Docker y Docker Compose
  • Node.js y Yarn (para frontend-main)
  • Node.js y NPM (para electron-main)
  • Python

Pasos para la Instalación

  1. Clonar el Repositorio:

    git clone <URL_DEL_REPOSITORIO>
    cd MarketWeb3
  2. Levantar los Microservicios: Navega a cada directorio de microservicio y ejecuta Docker Compose.

    cd auth_microservice-main
    docker-compose up -d
    cd ../products_microservices-main
    docker-compose up -d
    # Repetir para todos los microservicios...
  3. Ejecutar Frontend Web:

    cd frontend-main
    yarn install
    yarn dev

    La aplicación estará disponible en http://localhost:3000.

  4. Ejecutar Aplicación de Escritorio:

    cd electron-main
    npm install
    npm run dev

About

Microservicios Market Web3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors