A partir de la siguiente arquitectura de microservicios, te pedimos implementar la misma utilizando Spring Cloud.
El proyecto consiste de tres microservicios: Movie, Serie y Catalog.
Catalog es una API REST que nos permite buscar por género, tanto películas como series. Además desde el microservicio catalog se deberán poder guardar películas y series.
La comunicación entre microservicio para crear películas debe realizarse con Feign. Al guardar una película, la misma se persistirá en su base de datos (movie-service).
Cuando se persiste una película en su base de datos, adicionalmente se debe enviar un mensaje a través de una cola de RabbitMQ a catalog-service, quien lo persistirá en su base de datos no relacional MongoDB. Lo mismo deberá ocurrir con las series (serie- service).
Cuando Catalog busca por género, lo hace directamente en su base de datos no relacional MongoDB.
Diagrama base de los microservicios:
El microservicio gestiona las operaciones sobre las películas. Cada película tiene como atributo:
- id
- name
- genre
- urlStream
El microservicio gestiona las operaciones sobre las series. Cada serie tiene como atributos:
- id
- name
- genre
- seasons
- id
- seasoNumber
- chapters
- id
- name
- number
- urlStream
Los microservicios de película y serie deben ser invocados cada vez que se carga una nueva película o serie y se debe persistir la información que proporcionan ambos microservicios en una base de datos no relacional de MongoDB con la siguiente estructura:
- genre
- movies
- id
- name
- genre
- urlStream
- series
- id
- name
- genre
- seasons
- id
- seasonNumber
- chapters
- id
- name
- number
- urlStream
- Configurar los microservicios para su autodescubrimiento con Eureka.
- Centralizar la configuración de los microservicios.
- Realizar la comunicación con Feign.
- Realizar el balanceo de carga
- Realizar el proyecto Gateway o realizar el ruteo.
- Comunicacion con RabbitMQ
- Configurar el nuevo servicio para su auto descubrimiento utilizando el nombre: serie-service.
- Centralizar la configuración de serie-service.
- Realizar la comunicación con Feign de serie-service y catalog-service para persistir en la base de datos de serie, cada serie creada.
- Agregar RabbitMQ y enviar un mensaje en el momento que se agregue una nueva serie.
- Agregar RabbitMQ y enviar un mensaje en el momento que se agregue una nueva película.
- Modificar la consulta por género, que ahora será directamente a su base de datos no relacional MongoDB.
- Actualizar catalog utilizando Feign para comunicarlo con el microservicio serie-service, y obtener desde catálogo las series filtradas por género, como así también utilizar la Feign para crearlas.
- Agregar RabbitMQ y escuchar los mensajes que envían movie-service y serie-service. En caso de recibir un mensaje de algún servicio, actualizar el listado correspondiente, ya sea de las películas o las series.
- Configurar Zipkin en todos los microservicios para visualizar la trazabilidad.
- Se debe seleccionar uno de los servicios (preferentemente el que consideres que será más utilizado) y adaptarlo para que el mismo sea tolerante a fallos.