Skip to content

MasterCloudApps-Projects/realfood-restaurants

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Realfood-Restaurants

Servicio de restaurantes del TFM del Master CloudApps de la URJC

Autores

Este servicio contiene toda la funcionalidad asociada a los clientes de la aplicación RealFood, esta aplicación consta de los siguientes componentes:

Estos servicios se ha desarrollado siguiendo el estilo de Arquitectura Hexagonal

Operaciones disponibles en el servicio:

Operaciones disponibles al iniciar sesion
    - GET       /api/restaurants/{restaurantId}/menu                    Ver carta del restaurante
    - GET       /api/restaurants/                                       Ver restaurantes

Operaciones disponibles sin iniciar sesión (perfil de restaurante)
    - GET       /api/orders/{orderId}                                   Ver detalle de un pedido
    - POST      /api/restaurants/{restaurantId}/menu/items              Añadir un item a la carta
    - DELETE    /api/restaurants/{restaurantId}/menu/items/{itemId}     Eliminar un item de la carta
    - PATCH     /api/orders/{orderId}                                   Actualizar estado del pedido
    - DELETE    /api/restaurants/{restaurantId}                         Dar de baja restaurante
    - PATCH     /api/restaurants/{restaurantId}                         Actualizar datos de un restaurante
    - POST      /api/restaurants                                        Dar de alta restaurante

Operaciones de Publicación/Suscripción que ejecuta el servicio:

    - [Consume] Shipment order update                  Actualización del estado de envío de un pedido
    - [Consume] Status order update                    Actualización del estado de un pedido

Diagrama de clases del dominio de la aplicación:

classDiagram
class Restaurant
class Menu
class Item
class Address
class Category
class BusinessHours
class OpenHour
class CloseHour

Menu --> "*" Item
Restaurant o--> BusinessHours
Restaurant o--> Menu
Restaurant o--> Address
Restaurant o--> Category
Restaurant o--> BusinessHours
BusinessHours o--> OpenHour
BusinessHours o--> CloseHour
Loading

Ejemplo de diagrama de clases para el caso de uso New Restaurant: use-case-diagram

Despliegue

Docker

  • Despliegue de recursos (Solo BD y broker de RabbitMq)
$ docker-compose -f deploy/docker-compose.yml up --build
  • Despliegue completo (Recursos y servicio de restaurants)
$ docker-compose -f deploy/docker-compose-prod.yml up --build
  • Para observar que se han creado los contenedores:
$ docker ps

Software recomendado: Docker desktop / Rancher desktop

Kubernetes

En la carpeta de /deploy están los manifiestos para desplegar los recursos y el servicio

  • Arrancar el servicio de minikube
$ minikube start
  • Arrancar broker de RabbitMQ
$ kubectl apply -f rabbitmq-pv.yaml

$ kubectl apply -f rabbitmq-pv-claim.yaml

$ kubectl apply -f rabbitmq-deployment.yaml

$ kubectl apply -f rabbitmq-service.yaml
  • Arrancar BD de clientes
$ kubectl apply -f postgres-pv.yaml

$ kubectl apply -f postgres-pv-claim.yaml

$ kubectl apply -f postgres-deployment.yaml

$ kubectl apply -f postgres-service.yaml
  • Arrancar Servicio de envíos
$ kubectl apply -f app-deployment.yaml

$ kubectl apply -f app-service.yaml
  • Para observar que se han desplegado los servicios:
$ kubectl get deployments

$ kubectl get services
  • Si se quiere levantar todo directamente:
$ kubectl apply -f .

Software recomendado: k8sLens