Skip to content

AlanHdz/spring-boot-microservices-stripe

Repository files navigation

🛒 Plataforma E-Commerce con Microservicios en Spring Boot & Java

Este repositorio contiene una aplicación de comercio electrónico completamente funcional construida con una arquitectura de microservicios. El proyecto fue desarrollado con fines didácticos para demostrar patrones de diseño de software modernos, comunicación entre servicios, seguridad centralizada y más.

🌟 Características Principales

  • Arquitectura de Microservicios: Sistema modular con servicios independientes y bases de datos dedicadas.
  • Autenticación y Seguridad: Autenticación de usuarios basada en JWT, almacenados en cookies HttpOnly para mayor seguridad contra ataques XSS.
  • API Gateway Centralizado: Un único punto de entrada para todas las peticiones, manejando el enrutamiento y la seguridad de forma centralizada.
  • Descubrimiento de Servicios: Los servicios se registran y descubren dinámicamente usando Eureka.
  • Comunicación Asíncrona: Uso de RabbitMQ para desacoplar servicios críticos como la creación de órdenes tras un pago exitoso.
  • Bases de Datos Políglotas: Utiliza la base de datos adecuada para cada tarea (PostgreSQL para datos relacionales y Redis para datos volátiles como el carrito).
  • Integración de Pagos: Proceso de checkout seguro y desacoplado utilizando la API de Stripe Checkout.
  • Contenerización Completa: Todo el ecosistema (aplicaciones, bases de datos, bus de mensajes) está orquestado con Docker y Docker Compose para un fácil despliegue y desarrollo.
  • Flujo de Desarrollo Ágil: Configuración para recarga en caliente (hot-reloading) en el entorno de desarrollo.

🛠️ Tecnologías Utilizadas

Backend

  • Java 21
  • Spring Boot 3
  • Spring Cloud:
    • API Gateway
    • Eureka Service Discovery
  • Spring Security: Autenticación con JWT.
  • Spring Data:
    • JPA (con Hibernate)
    • Redis
  • Spring AMQP: Integración con RabbitMQ.
  • Lombok

Bases de Datos

  • PostgreSQL: Para los servicios de Usuarios, Productos y Órdenes.
  • Redis: Para el servicio de Carrito de Compras.

Mensajería

  • RabbitMQ: Para la comunicación asíncrona entre servicios.

Pagos

  • Stripe API: Para procesar los pagos de forma segura.

Contenerización y Herramientas

  • Docker & Docker Compose
  • Maven

🚀 Cómo Empezar

Sigue estos pasos para levantar el entorno completo en tu máquina local.

Prerrequisitos

  • Git
  • Java JDK 17+
  • Maven
  • Docker y Docker Compose
  • Una cuenta de Stripe para obtener tus claves de API (puedes usar el modo de prueba).

Instalación y Configuración

  1. Clona el repositorio:

    git clone [https://github.com/tu-usuario/tu-repositorio.git](https://github.com/tu-usuario/tu-repositorio.git) cd tu-repositorio
  2. Configura tus variables de entorno: En el payment-service, dentro de src/main/resources/application.properties, necesitarás añadir tus claves de Stripe:

    stripe.api.key=sk_test_... # Tu clave secreta de Stripe del Dashboard stripe.webhook.secret=whsec_... # ¡IMPORTANTE! Usa el secreto que te da la Stripe CLI al ejecutar `stripe listen` stripe.success.url=http://localhost:3000/success # URL de tu frontend stripe.cancel.url=http://localhost:3000/cancel # URL de tu frontend

    ⚠️ Nota de Seguridad: En un proyecto real, estas claves nunca deben estar directamente en el código. Se gestionarían a través de variables de entorno del sistema o un servicio de secretos.

Ejecución del Entorno

Hemos configurado dos modos de ejecución:

1. Modo de Producción (con Imágenes Optimizadas)

Este modo construye imágenes ligeras a partir de los archivos .jar y es ideal para un despliegue.

docker compose up --build

2. Modo de Desarrollo (con Hot Reloading 🔥)

Este modo utiliza volúmenes de Docker y Spring Boot DevTools para recargar automáticamente el código de tus servicios cada vez que guardas un cambio.

docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build

Una vez que los servicios estén en marcha, puedes abrir el Dashboard de Eureka en http://localhost:8761 para ver todos los microservicios registrados y el Dashboard de RabbitMQ en http://localhost:15672 (user: guest, pass: guest).

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published