Descripción de los servicios - UniExtremadura/proyecto-gps-25-26-gb05 GitHub Wiki

ASEE - Documentación de UnderSounds

En este documento se detalla la arquitectura software orientada a microservicios desarrollada para UnderSounds.

Aspectos comunes a todos los servicios

En todos los servicios se ha implementado la siguiente lógica:

  • Autenticación entre servicios. Para esto se ha usado Supabase, un SaaS (Software as a Service) que permite la gestión de autenticación. Se ha creado un usuario de tipo administrador para cada servicio. Este usuario es usado por el servicio cada vez que tenga que hacer alguna petición contra otro servicio que requiera de autenticación.

Servicios implementados

Servicio de Usuarios

Este servicio es el encargado de gestionar la autenticación de todos los usuarios de la plataforma. Las tecnologías utilizadas son las siguientes:

  • NestJS. Framework basado en Javascript/Typescript para el desarrollo de API REST.
  • Supabase. Usado para la gestión de la autenticación.
  • PostgreSQL. Base de datos relacional usada para el almacenamiento persistente de la información.

Servicio de Compras

Este servicio es el encargado de gestionar pedidos, balances de artistas y retiros. Las tecnologías utilizadas son las siguientes:

  • NestJS.
  • MongoDB. Base de datos NoSQL usada para el almacenamiento persistente de la información.
  • Stripe. Procesador de pagos. Se han utilizado tanto la API de Checkout Sessions como Webhooks.

Servicio de Contenidos

Este servicio es el encargado de servir y almacenar toda la información de carácter público, como pueden ser canciones, álbumes, perfiles, merchandising... Las tecnologías utilizadas son las siguientes:

  • NestJS.
  • MongoDB.
  • Nodemailer. Librería de Node.js para el envío de correos electrónicos. Usado para las notificaciones sobre lanzamientos.
  • BullMQ. Librería de Node.js para la gestión de colas con publish/subscribe. Usado para la creación en diferido de vista previa de productos de merchandising, vista previa de canciones y diferentes calidades de canciones.
  • FFMPEG. Software para conversión de audio y vídeo.
  • Elasticsearch. Motor de búsqueda de código abierto. Usado para la búsqueda de canciones y álbumes.
  • MinIO. Gestor de buckets de código abierto compatible con la api de AWS S3. Usado para el almacenamiento de archivos.

Servicio de Estadísticas

Este servicio es el encargado de calcular toda la información de las estadísticas. Las tecnologías utilizadas son las siguientes:

  • Python. Lenguaje en el que está hecho el servicio.
  • Redis. Base de datos que permite almacenar la información de las estadísticas en caché para acceder rapidamente a ellas.
  • FastAPI. FrameWork para crear apis en Python.

Servicio de Frontend

Este servicio es el encargado de servir el frontend de la aplicación web. Las tecnologías utilizadas son las siguientes:

  • React. Librería JavaScript/TypeScript para el desarrollo de interfaces web.
  • TailwindCSS. Librería CSS.
  • DaisyUI. Librería de componentes basada en TailwindCSS.