Learning Project Mini es la versión reducida de Learning Project y surge de la necesidad de abordar un proyecto más pequeño que siga la misma filosofía y que se complemente con Learning Project.
La necesidad de abordar proyectos con microservicios con más tecnologías, y de diferentes formas nos ha llevadoa crear esta versión reducida para centrarnos más en el desarrollo tecnológico y un poco menos en el proyecto.
Con este proyecto abordaremos al igual que con Learning Project su desarrollo utilizando diferentes tecnologías, empezaremos con Laravel y RabbitMQ y lo utilizaremos como base en todos los tutoriales con microservicios.
¿En qué consiste?
Algo simple un sistema de empresas con clientes y pedidos, esto nos va a permitir separar la parte de pedidos de la gestión de clientes y empresas.
Para los proyectos monolíticos crearemos una única aplicación para toda la gestión:
- Una única aplicación para la gestión de empresas, clientes y pedidos, la entrada de ventas y devoluciones de pedidos se repercuten sobre los gastos del cliente.
Para proyectos con microservicios definiremos con detalle dos aplicaciones:
- La primera de admnistración de empresas y clientes.
- La segunda encargada de la gestión de pedidos, está segunda almacenará toda la información de los pedidos y enviará a la aplicación de administración los gastos de cada uno para que cada cliente tenga su balance de gastos.
Para ello necesitaremos usar microservicios con un sistema de colas para la comunicación entre las dos aplicaciones independientes.
Este será el punto de partida para todos los proyectos y tecnologías, esto nos permitirá a largo plazo comparar el desarrollo del mismo proyecto con Laravel / RabbitMQ con Spring Framework / RabbitMQ por ejemplo, que son de los proyectos / tutoriales que abordaremos en el 2022.
LEARNING PROJECT MINI
Un proyecto sencillo para el aprendizaje software, lo desarrollaremos tanto en una aplicación molítica como una aplicacíon orientada a microservicios.
Código xules
ESQUEMA INICIAL
Diagrama entidad relación:
El detalle de las tablas es el siguiente:
Learning Project | ||
TABLA | DESCRIPCIÓN | CARACTERÍSTICAS DE DISEÑO |
cm_enterprise | Empresas de la aplicación, cada empresa tendrá sus clientes. | Las empresas tendrán definido sus datos en la misma tabal: idioma, país y moneda, por simplificación; varios clientes podrán pertenecer a la misma empresa. |
cm_customer | Tabla general de cliente, donde se almacenarán los clientes de las diferentes empresas, un cliente asignado a una única empresa. | Los datos del cliente los almacenamos directamente en la misma tabla: idioma, país, direcciones, empresas, métodos de pago y moneda. |
cm_orders | Pedidos por cliente un cliente puede tener múltiples pedidos | En pedidos recogemos los datos del producto por descripción, las unidades el precio total y la dirección, simplificado al máximo |