Microservicios de productos
Septiembre 2024
Microservicios
Esta es la primera vez que trabajo con microservicios y he decidido crear una arquitectura básica para la gestión de productos de una tienda online. Parte del código de este proyecto está basado en el curso de NestJS + Microservicios.
Componentes Clave
- Api Gateway - Actúa como punto de entrada de la aplicación, enruta todas las peticiones a los microservicios correspondientes y es responsable de la validación de los datos.
- Auth Microservice - Gestiona la autenticación y autorización de los usuarios utilizando JWT. También se encarga de gestionar los usuarios usando MongoDB como base de datos.
- Products Microservice - Gestiona los productos de la tienda, permitiendo crear, actualizar, eliminar y listar productos. Utiliza PostgreSQL como base de datos.
- Orders Microservice - Este servicio es el responsable de crear y gestionar las órdenes de compra. Utiliza PostgreSQL como base de datos.
- Payments Microservice - Se encarga de gestionar los pagos de las órdenes de compra, usando Stripe como pasarela de pago. Este servicio es hibrido, ya que tiene un endpoint REST que usa para comunicarse con Stripe.
Tecnologías
- NestJS: Framework de Node.js para la creación de aplicaciones escalables y eficientes.
- NATS: Sistema de mensajería que permite la comunicación entre los microservicios.
- Docker: Plataforma de contenedores que facilita la creación y despliegue de aplicaciones.
- PostgreSQL: Sistema de gestión de bases de datos relacional.
- MongoDB: Base de datos NoSQL utilizada para almacenar los usuarios.
- Stripe: Pasarela de pago utilizada para procesar los pagos de las órdenes de compra.
- Prisma: ORM utilizado para la gestión de la base de datos PostgreSQL y MongoDB.
Arquitectura
La arquitectura de la aplicación está basada en el patrón de arquitectura de microservicios. Cada microservicio es una entidad separada que es responsable de una parte específica de la aplicación. La comunicación entre los microservicios y el API Gateway se realiza utilizando el sistema de mensajería NATS.
Todos los servicios están contenerizados utilizando Docker, lo que permite que estén encapsulados en una red privada permitiendo que solo los servicios necesarios estén expuestos al exterior. Los únicos servicios expuestos al exterior son el API Gateway y el endpoint webhook del Payments Microservice.