Servicio de clientes del TFM del Master CloudApps de la URJC
- Juan Antonio Ávila Catalán, @juanaviladev
- Cristo Fernando López Cabañas, @cristoflop
Este servicio contiene toda la funcionalidad asociada a los clientes de la aplicación RealFood, esta aplicación consta de los siguientes componentes:
- GitHub - Realfood-Clients
- GitHub - Realfood-Restaurants
- GitHub - Realfood-Payments
- GitHub - Realfood-Shipping
Estos servicios se ha desarrollado siguiendo el estilo de Arquitectura Hexagonal
Operaciones disponibles en el servicio:
Operaciones disponibles sin iniciar sesion
- POST /api/clients Registro
- POST /api/sign-in Iniciar Sesion
Operaciones disponibles al iniciar sesion
- GET /api/clients/me Perfil
- DELETE /api/clients/me Borrar cuenta
- GET /api/clients/me/orders Obtener pedidos
- GET /api/clients/me/orders/{orderId} Obtener un pedido
- GET /api/clients/me/cart Obtener mi carrito
- DELETE /api/clients/me/cart Vaciar carrito
- POST /api/clients/me/cart/item Añadir item al carrito
- DELETE /api/clients/me/cart/item Borrar item del carrito
- POST /api/clients/me/cart/checkout Iniciar un pedido
Operaciones de Publicación/Suscripción que ejecuta el servicio:
- [Publish] Payment request Intento de pago de pedido
- [Publish] Preparation request Solicitud de preparacion de pedido
- [Publish] Shipment request Solicitud de envio de pedido
- [Publish] Register user request Evento de registro de cliente
- [Publish] Delete user request Evento de borrado de cliente
- [Consume] Payment response Respuesta de pago completado o no
- [Consume] Preparation response Respuesta de pedido preparado
- [Consume] Shipment response Respuesta de pedido enviado
- [Consume] Completed response Respuesta de pedido completado
Diagrama de clases del dominio de la aplicación:
classDiagram
class Client
class ClientId
class Name
class LastName
class Email
class Password
Client *-- ClientId : -id
Client *-- Name : -name
Client *-- LastName : -lastName
Client *-- Email : -email
Client *-- Password : -password
class Order {
-Double price
}
class OrderId
class Status
Order o-- Client : -client
Order *-- OrderId : -id
Order *-- Status : -status
class Cart
class CartItem{
-String itemId
-int quantity
}
Cart o-- Client : -client
Cart *-- CartId : -id
Cart *-- CartItem : * -items
Ejemplo de diagrama de clases para el caso de uso Checkout Cart:
- Despliegue de recursos (Solo BD y broker de RabbitMq)
$ docker-compose -f realfood-deply/docker-compose.yml up --build
- Despliegue completo (Recursos y servicio de clientes)
$ docker-compose -f realfood-deply/docker-compose-prod.yml up --build
- Para observar que se han creado los contenedores:
$ docker ps
Software recomendado: Docker desktop / Rancher desktop
En la carpeta de realfood-deployment 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 sqldbclients-pv.yaml
$ kubectl apply -f sqldbclients-pv-claim.yaml
$ kubectl apply -f sqldbclients-deployment.yaml
$ kubectl apply -f sqldbclients-service.yaml
- Arrancar Servicio de clientes
$ kubectl apply -f clients-deployment.yaml
$ kubectl apply -f clients-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