/eventuate-tram-sagas-examples-customers-and-orders

Spring Boot/JPA microservices that use a saga to maintain data consistency

Primary LanguageJavaOtherNOASSERTION

URJC Máster Cloud Apps

Módulo III - Aplicaciones nativas de la nube - Aplicaciones nativas de la nube

Práctica 1. Microservicios. Sagas

Tabla de contenidos

Instrucciones

Aquí el repositorio original.

La documentación original se puede consultar en este enlace.

  • No se necesita tener Gradle instalado ya que se hace uso del wrapper
  • Java 8 es necesario

En primer lugar, para construir la aplicación:

$ ./gradlew assemble
...

A continuación, lanzamos los servicios usando Docker Compose:

$  export DOCKER_HOST_IP=<IP>
...
$ ./gradlew mysqlComposeBuild
...
$ ./gradlew mysqlComposeUp
...

Nota:

  1. Para lanzar la versión que usa Postgres: ./gradlew postgresComposeBuild y ./gradlew postgresComposeUp
  2. Hay que definir DOCKER_HOST_IP antes de lanzar las tareas de Docker Compose.

Acceder a guide to setting DOCKER_HOST_IP para más información.

Ejemplo para Mac:

$ sudo ifconfig lo0 alias 10.200.10.1/24  # (where 10.200.10.1 is some unused IP address)
...
$ export DOCKER_HOST_IP=10.200.10.1
...

Usando la aplicación (asumiendo ip 10.200.10.1):

Gateway (asumiendo ip 10.200.10.1):

Proyecto de Postman:

Partes completadas
  • Creación de servicio de Productos

  • Ampliación de las APIs de consulta

  • Creación del servicio de Gateway

  • Enrutado de las peticiones a través del servicio de Gateway

  • Agregación de información de 2 *endpoints en 1 sólo (me he quedado a medias)

Enunciado

El objetivo de esta práctica consiste en implementar una aplicación derivada de un ejemplo implementado con el framework Eventuate. En concreto, se pide lo siguiente:

Básico (para 7.5)
  • Añadir un nuevo microservicio a la aplicación Orders - Consumers.
  • Este nuevo microservicio se encargará de controlar el stock del producto que pide el usuario, de forma que si el stock no es suficiente, el pedido se rechazará.
  • Queda a libertad del alumno ampliar los datos del pedido para poder referenciar el producto y su stock.
  • Los productos tendrán como dato extra su nombre.
  • Será necesario implementar la API REST para el microservicio de productos de forma que se pueda consultar su stock.
Opcional (para el 10)
  • Se deberá incluir un API Gateway basado en Spring API Gateway que permita obtener, con una única petición, información del pedido e información del producto en un pedido concreto
  • Además se incluirá en el API Gateway el enrutado de los servicios order, consumer y product.

Formato de entrega

La práctica se entregará teniendo en cuenta los siguientes aspectos:

  • La práctica se entregará como un fichero .zip con el código del los diferentes servicios y los ficheros auxiliares. El nombre del fichero .zip será el correo URJC del alumno (sin @alumnos.urjc.es).

Las prácticas se podrán realizar de forma individual o por parejas. En caso de que la práctica se haga por parejas:

  • Sólo será entregada por uno de los alumnos
  • El nombre del fichero .zip contendrá el correo de ambos alumnos separado por guión. Por ejemplo p.perezf2019-z.gonzalez2019.zip