Skip to content

campos748/compraMicroservicios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Compra Microservicios

Tienda virtual con una arquitectura de microservicios y diferentes archivos que permitan su despliegue en la nube AWS con Docker Swarm. Existirán 3 microservicios y cada uno de ellos estará documentado vía OpenAPI.

Para el desarrollo de estos microservicios se emplea el framework Spring Boot y como base de datos se emplea MongoDB. Además se utiliza gradle como gestor de dependencias.

Los microservicios son los siguientes:

  • lista-cds: Microservicio encargado de listar los CDs que existen en la tienda. También incluye métodos CRUD.
  • Carrito: Microservicio encargado de añadir CDs a un carrito para su posterior compra. También permite calcular el precio total del carrito y eliminar CDs del carrito.
  • usuario_cd: Microservicio que permite identificarse como usuario y formalizar la compra.

Herramientas para el despliegue en AWS

Para lograr desplegar la aplicación en la nube de AWS hemos creado las imágenes Docker que luego usaremos en un docker-stack.yml. Los Dockerfile se encuentran en la carpeta /1_nube del proyecto.

Arquitectura de la aplicación

Arquitectura de la aplicación

Patrones de diseño empleados

  1. Patrón de comunicación

Estilo → Invocación Remota de Procedimientos

  1. Patrón de despliegue

Servicio único por host → Servicio por máquina

  1. Patrón de arquitectura de base de datos

Base de datos por servicio

  1. Patrón de consistencia de datos

Saga-Coreografía

  • Confirmar compra → Sacar los CDs del Carrito y Borrar el Carrito
  • Añadir CD al carrito → Comprar CD existente

Despliegue de la aplicación

Gracias a haber generado nuestras propias imágenes y haberlas subido al Docker Hub será suficiente con acceder a la carpeta /2_despliegue y dentro de nuestro enjambre de Docker Swarm ejecutar el comando:

docker stack deploy -c docker-stack.yml cds

Debido a ciertos problemas con la inicialización de la base de datos mongodb de manera automática, insertaremos los datos utilizando un script de inserción que está en la misma carpeta /2_despliegue. Para ello accedemos al contenedor con la base de datos mongo y, despues de haber asignado permisos de ejecución, ejecutamos el script:

chmod +777 scriptDatos.sh
./scriptDatos.sh <nombre contenedor>

Una vez hecho realizado este proceso, podemos conectarnos a cada una de las APIs de los servicios a través de las siguientes direcciones:

  • lista_cds: <IP_Pública>:8082/api
  • carrito: <IP_Pública>:8080/api
  • usuario_cd: <IP_Pública>:8081/api

Un ejemplo de ejecución sería el que se muestra en el siguiente vídeo: vídeo ejemplo

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •