Skip to content

Creando tu Microservicio

¡Excelente idea! Un ejemplo contextualizado hará que el artículo 3 sea mucho más comprensible y práctico. Vamos a definir el escenario de la tienda online, los microservicios, sus casos de uso, agregados, entidades, eventos de dominio y consumers, todo esto con el propósito de que el ejemplo sea claro y consistente.

Diagrama del Sistema (Conceptual):

Crea Orden

Notifica

Notifica

Actualiza

Notifica

Consulta

Consulta

Clientes

Ordenes

Inventario

Productos

Productos

Inventario

Descripción del Sistema:

Nuestra tienda online está compuesta por los siguientes microservicios:

  1. Clientes (Clientes): Gestiona la información de los clientes.
  2. Ordenes (Ordenes): Gestiona el proceso de creación, modificación y seguimiento de las órdenes.
  3. Inventario (Inventario): Gestiona el inventario de productos, incluyendo stock disponible.
  4. Productos (Productos): Gestiona la información general de los productos.

Microservicios, Casos de Uso, Agregados, Entidades, Eventos y Consumers:

MicroservicioCasos de UsoAgregadosEntidadesEventos de Dominio (Emite)Consumers (Escucha)
ClientesRegistrar un cliente, actualizar datos del cliente, consultar datos del clienteClienteCliente, DireccionClienteRegistrado , ClienteActualizadoOrdenCreada
OrdenesCrear una orden, actualizar una orden, cancelar una orden, consultar el estado de una orden.OrdenOrden, LineaOrdenOrdenCreada, OrdenActualizada, OrdenCanceladaProductoActualizado
InventarioActualizar el inventario, consultar la disponibilidad de productos.InventarioInventarioItemInventarioActualizadoOrdenCreada
ProductosAgregar un producto, actualizar un producto, consultar información de un producto.ProductoProducto, CategoriaProductoCreado, ProductoActualizado , ProductoRemovidoInventarioActualizado

Detalles Adicionales:

  • Comunicación por Eventos: Los microservicios se comunican principalmente mediante eventos. Por ejemplo, cuando se crea una orden, el microservicio de Ordenes emite un evento OrdenCreada. El microservicio de Inventario escucha este evento y actualiza su stock. El microservicio Clientes tambien escucha este evento para hacer el respectivo envio de un correo de bienvenida al cliente.
  • Queries y Commands: Cada microservicio tendrá sus propios comandos y queries para manejar la lógica interna y las consultas de información, lo cual no se detalla en la tabla.
  • Entidades: Las entidades representan los objetos del dominio y tienen una identidad única.
  • Agregados: Son colecciones de entidades que se tratan como una unidad consistente.

Contexto del Ejemplo:

Con este contexto, los desarrolladores entenderán mejor cómo se relacionan los microservicios y cómo la arquitectura orientada a eventos permite una comunicación eficiente y un desacoplamiento entre ellos. En el artículo 3, crearemos un microservicio de ejemplo (por ejemplo, el de Ordenes) utilizando los generadores de CodeDesignPlus y entenderemos cómo se configura la comunicación por eventos.

Modificación del Artículo 3:

Con este contexto, modificaremos el artículo 3 para:

  1. Introducir el escenario de la tienda online y los microservicios.
  2. Explicar los diagramas y la relación entre los servicios.
  3. Utilizar el ejemplo del microservicio de Ordenes para demostrar cómo generar un microservicio Custom.

Próximos Pasos:

Con esta definición clara del ejemplo, ahora podemos refinar el artículo 3 para que sea más comprensible y práctico. ¿Estás de acuerdo con este enfoque? Si es así, puedo generar el artículo 3 modificado con este contexto.


¡Perfecto! Aquí tienes los diagramas de clases de las entidades, agregados y eventos de dominio para cada microservicio, utilizando una notación UML simplificada para mayor claridad:

Microservicio Clientes

1
Cliente
+Guid Id
+string Nombre
+string Apellido
+string Email
+Direccion Direccion
Direccion
+string Calle
+string Ciudad
+string Pais
+string CodigoPostal
ClienteRegistradoEvent
+Guid ClienteId
+DateTime FechaRegistro
ClienteActualizadoEvent
+Guid ClienteId
+DateTime FechaActualizacion

  • Cliente: Agregado principal del microservicio de Clientes.
  • Dirección: Objeto de valor asociado al Cliente.
  • ClienteRegistradoEvent: Evento de dominio que se emite cuando se registra un cliente.
  • ClienteActualizadoEvent: Evento de dominio que se emite cuando se actualiza un cliente.

Microservicio Ordenes

1..*
Orden
+Guid Id
+Guid ClienteId
+DateTime FechaCreacion
+string Estado
+List<LineaOrden> LineasOrden
LineaOrden
+Guid ProductoId
+int Cantidad
+decimal PrecioUnitario
OrdenCreadaEvent
+Guid OrdenId
+Guid ClienteId
+DateTime FechaCreacion
OrdenActualizadaEvent
+Guid OrdenId
+DateTime FechaActualizacion
OrdenCanceladaEvent
+Guid OrdenId
+DateTime FechaCancelacion

  • Orden: Agregado principal del microservicio de Órdenes.
  • LineaOrden: Entidad que representa un ítem en la orden.
  • OrdenCreadaEvent: Evento de dominio que se emite cuando se crea una orden.
  • OrdenActualizadaEvent: Evento de dominio que se emite cuando se actualiza una orden.
  • OrdenCanceladaEvent: Evento de dominio que se emite cuando se cancela una orden.

Microservicio Inventario

1..*
Inventario
+Guid Id
+List<InventarioItem> Items
InventarioItem
+Guid ProductoId
+int CantidadDisponible
+DateTime UltimaActualizacion
InventarioActualizadoEvent
+Guid InventarioId
+DateTime FechaActualizacion

  • Inventario: Agregado principal del microservicio de Inventario.
  • InventarioItem: Entidad que representa un ítem en el inventario.
  • InventarioActualizadoEvent: Evento de dominio que se emite cuando se actualiza el inventario.

Microservicio Productos

1
Producto
+Guid Id
+string Nombre
+string Descripcion
+decimal Precio
+Guid CategoriaId
Categoria
+Guid Id
+string Nombre
ProductoCreadoEvent
+Guid ProductoId
+DateTime FechaCreacion
ProductoActualizadoEvent
+Guid ProductoId
+DateTime FechaActualizacion
ProductoRemovidoEvent
+Guid ProductoId
+DateTime FechaRemocion

  • Producto: Agregado principal del microservicio de Productos.
  • Categoria: Entidad asociada a cada Producto.
  • ProductoCreadoEvent: Evento de dominio que se emite cuando se crea un producto.
  • ProductoActualizadoEvent: Evento de dominio que se emite cuando se actualiza un producto.
  • ProductoRemovidoEvent: Evento de dominio que se emite cuando se remueve un producto.

Notas:

  • He utilizado una notación UML simplificada para que los diagramas sean claros y fáciles de entender.
  • Cada clase incluye sus propiedades principales.
  • Las relaciones entre clases están indicadas (ej: agregación).
  • Los diagramas también muestran las relaciones de los eventos con sus respectivos agregados.

Con estos diagramas, la estructura de los microservicios y su relación se vuelve más clara y precisa. ¿Quieres que ahora prepare el Artículo 3 modificado con toda esta información?