Microservicios - Ejemplo con Docker, Go y MongoDB

24 August 2016 · 3 min lectura

Introducción

Cinema es un proyecto ficticio que utiliza microservicios para el sistema de un cine. La lógica de Cinema está compuesta por 4 microservicios, todos escritos en Go, utilizando MongoDB para la gestión de datos y Docker para aislar y desplegar el ecosistema.

  • Servicio Users: Brinda información de los usuarios.
  • Servicio Movie: Brinda información de las películas como valoración, título, etc.
  • Servicio Show Times: Brinda información sobre la programación de las películas.
  • Servicio Booking: Brinda información sobre las reservaciones de los usuarios referente a la programación de las películas.

El caso de uso Cinema está basado en el proyecto escrito en Python por Umer Mansoor.

La estructura del proyecto está basada en el conocimiento obtenido del libro Web Development with Go escrito por Shiju Varghese, ISBN 978-1-4842-1053-6

Requerimientos

  • Docker 1.12
  • Docker Compose 1.8

Se tiene que agregar dominios virtuales en la máquina local para poder utilizar los puntos de entrada a las funcionalidades. Para el ejemplo se utiliza: movies.local, bookings.local, users.local y showtimes.local.

Los dominios virtuales han sido definidos en el fichero docker-compose.yml y configurados en el fichero /etc/hosts. Adicione la siguiente línea en el fichero /etc/hosts:

127.0.0.1   movies.local bookings.local users.local showtimes.local

Código fuente

Usted puede descargar el código fuente utilizando este enlace.

Diagrama de servicios

Microservicios - Cinema

Iniciar servicios

docker-compose up -d

Detener servicios

docker-compose stop

Incluir nuevos cambios

Si necesita modificar el código fuente usted puede desplegar los nuevos cambios escribiendo:

docker-compose build

Restaurar información en la base de datos.

Puede iniciar los microservicios utilizando la base de datos vacía, pero si prefiere, puede restaurar un juego de datos siguiendo los siguientes pasos:

Acceda al contenedor de MongoDB escribiendo:

docker exec -it cinema-db /bin/bash

Restaure la información escribiendo:

/backup/restore.sh

Salga del contenedor:

exit

Documentación

Servicio User

Este servicio brinda información sobre los usuarios de Cinema.

Rutas:

Servicio Movie

Este es utilizado para gestionar la información de las películas. Cada película tiene el título, valoración en escala del 1-10, director, entre otros.

Rutas:

Servicio Showtimes

Este servicio brinda la programación de las películas en ciertas fechas.

Rutas:

Servicio Booking

Este servicio brinda información sobre las reservaciones realizadas por los usuarios referente a las programaciones.

Rutas:

Puertos expuestos

El puerto 27017 está expuesto para que sea consultado de manera local por el sistema Robomongo. El puerto 80 está expuesto para que sea consultado por dispositivos, navegadores webs u otros microservicios.

Microservicios - Puertos expuestos

Pantallas

Iniciar servicios

Microservicios - Iniciar servicios

Restaurar base de datos

Microservicios - Restaurar base de datos

Servicio - Obtener todos los usuarios (Postman)

Microservicios - Obtener todos los usuarios (Postman)

Servicio - Obtener toas las películas (Postman)

Microservicios - Obtener toas las películas (Postman)

Servicio - Obtener todos las programaciones (Postman)

Microservicios - Obtener todos las programaciones

Servicio - Obtener todos las reservaciones (Postman)

Microservicios - Obtener todos las programaciones (Postman)

Base de datos, imagen completa (Robomongo)

Microservicios - Base de datos, imagen completa (Robomongo)

Revisiones significativas

comments powered by Disqus