Slide 1

Slide 1 text

preencoded.png Microservicios Desacoplados: Una DB por Cada Uno En el mundo actual, las aplicaciones son cada vez más complejas y requieren soluciones que permitan la escalabilidad, la flexibilidad y la independencia de los componentes. La arquitectura de microservicios surge como respuesta a estas necesidades, ofreciendo una forma modular y distribuida de construir sistemas. by Lautaro Carro

Slide 2

Slide 2 text

{ "name": "Lautaro Carro", "username": "@lauchacarro ", "award": "Microsoft MVP ", "certifications": [“AZ-900", “AZ-204"] "activities": ["Latino .NET Online", "Rest Of My Cloud"] }

Slide 3

Slide 3 text

preencoded.png ¿Por qué utilizar microservicios? 1 Independencia Los microservicios son unidades independientes, lo que facilita el desarrollo, la implementación y el mantenimiento. 2 Escalabilidad Cada microservicio se puede escalar de forma independiente, optimizando el uso de recursos. 3 Flexibilidad La arquitectura de microservicios permite la adopción de nuevas tecnologías y lenguajes de programación.

Slide 4

Slide 4 text

preencoded.png Ventajas de la arquitectura de microservicios Desarrollo Ágil Los equipos de desarrollo pueden trabajar de forma independiente en microservicios específicos. Resiliencia La falla de un microservicio no afecta el funcionamiento del resto del sistema. Mejoramiento Continuo Los microservicios se pueden actualizar y desplegar de forma independiente, sin afectar al sistema completo.

Slide 5

Slide 5 text

preencoded.png

Slide 6

Slide 6 text

preencoded.png Patrones erroneos de integración de datos en microservicios Base de Datos Compartida Se utiliza una base de datos centralizada para compartir datos entre microservicios. API de Productos API de Ventas API de Usuarios API de Envios

Slide 7

Slide 7 text

preencoded.png Patrones erroneos de integración de datos en microservicios Base de Datos Compartida Se utiliza una base de datos centralizada para compartir datos entre microservicios. API de Productos API de Ventas API de Usuarios API de Envios

Slide 8

Slide 8 text

preencoded.png Patrones erroneos de integración de datos en microservicios Base de Datos Compartida Se utiliza una base de datos centralizada para compartir datos entre microservicios. API de Productos API de Ventas API de Usuarios API de Envios

Slide 9

Slide 9 text

preencoded.png Patrones erroneos de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Productos_Detalles Inventario_Productos Categorias_Productos Envios_Detalles Paquetes Clientes_Envios

Slide 10

Slide 10 text

preencoded.png Base de datos independiente para cada microservicio Consistencia Cada microservicio tiene su propia base de datos, asegurando la consistencia interna del servicio. Autonomía Los microservicios pueden evolucionar y actualizarse sin afectar las bases de datos de otros servicios. Escalabilidad La base de datos de cada microservicio se puede escalar de forma independiente, según las necesidades del servicio.

Slide 11

Slide 11 text

preencoded.png Patrones erroneos de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Productos_Detalles Inventario_Productos Categorias_Productos Envios_Detalles Paquetes Clientes_Envios

Slide 12

Slide 12 text

preencoded.png Patrones erroneos de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Productos_Detalles Inventario_Productos Categorias_Productos Envios_Detalles Paquetes Clientes_Envios

Slide 13

Slide 13 text

preencoded.png Patrones erroneos de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Envios_Detalles Paquetes Clientes_Envios Productos_Detalles Inventario_Productos Categorias_Productos

Slide 14

Slide 14 text

preencoded.png Patrones erroneos de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Productos_Detalles Inventario_Productos Categorias_Productos Envios_Detalles Paquetes Clientes_Envios Productos_Detalles Inventario_Productos Categorias_Productos

Slide 15

Slide 15 text

preencoded.png Patrones erroneos de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Productos_Detalles Inventario_Productos Categorias_Productos Envios_Detalles Paquetes Clientes_Envios

Slide 16

Slide 16 text

preencoded.png Patrones erroneos de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Productos_Detalles Inventario_Productos Categorias_Productos Envios_Detalles Paquetes Clientes_Envios

Slide 17

Slide 17 text

preencoded.png Patrones erroneos de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Productos_Detalles Inventario_Productos Categorias_Productos Envios_Detalles Paquetes Clientes_Envios

Slide 18

Slide 18 text

preencoded.png Patrones de integración de datos en microservicios API de Productos API de Ventas API de Clientes API de Envios Envios_Detalles Paquetes Clientes_Envios Clientes_Detalles Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Clientes Productos Productos_Detalles Inventario_Productos Categorias_Productos

Slide 19

Slide 19 text

preencoded.png Comunicación asincrona entre microservicios La comunicación asincrónica entre microservicios es un patrón donde los microservicios intercambian mensajes sin esperar una respuesta inmediata, lo que les permite funcionar de manera independiente y desacoplada. En lugar de realizar una llamada directa y esperar un resultado (como en una comunicación sincrónica), un servicio envía un mensaje a otro y continúa con su trabajo, dejando la responsabilidad de procesar el mensaje al destinatario cuando esté listo.

Slide 20

Slide 20 text

preencoded.png Comunicación asincrona entre microservicios • Desacoplamiento: Los microservicios no dependen de la disponibilidad inmediata del otro servicio para seguir funcionando, lo que mejora la resiliencia. • Escalabilidad: Como los servicios no necesitan esperar una respuesta, pueden gestionar más solicitudes simultáneamente. • Tolerancia a fallos: Si un servicio receptor está inactivo o tiene una carga alta, los mensajes se pueden encolar y procesar más tarde. • Desempeño: La asincronía puede mejorar el rendimiento al reducir los tiempos de espera entre solicitudes.

Slide 21

Slide 21 text

preencoded.png Comunicación entre microservicios a través de eventos 1 Publicación Un microservicio publica un evento cuando ocurre una acción relevante. 2 Suscripción Otros microservicios se suscriben a los eventos que les interesan. 3 Procesamiento Los microservicios suscritos procesan los eventos y actualizan sus datos. EJ: Microsevicio de Clientes publica CustomerCreated con sus datos. EJ: Microsevicio de Ventas se suscribe al evento CustomerCreated para poder recibir la información EJ: Microsevicio de Ventas guarda en su propia base de datos esta nueva información recibida.

Slide 22

Slide 22 text

preencoded.png

Slide 23

Slide 23 text

preencoded.png Comunicación entre microservicios a través de eventos Azure Service Bus API de Productos API de Ventas API de Clientes API de Envios

Slide 24

Slide 24 text

preencoded.png Comunicación entre microservicios a través de eventos Azure Service Bus API de Productos API de Ventas API de Clientes API de Envios "Estoy publicando el evento ProductCreated" "Estoy interesado en suscribirme al evento ProductCreated y CustomerCreated" "Estoy publicando el evento CustomerCreated" "Estoy interesado en suscribirme al evento CustomerCreated"

Slide 25

Slide 25 text

preencoded.png Arquitectura CQRS y su relación con la mensajería asíncrona API de Productos Lectura API de Productos Comandos Azure Service Bus Separación de responsabilidades CQRS (Command Query Responsibility Segregation) separa las operaciones de escritura (comandos) de las operaciones de lectura (consultas). Base de datos independientes Los comandos se procesan en una base de datos de escritura optimizada para transacciones, mientras que las consultas se atienden desde una base de datos de lectura. Escalabilidad y rendimiento La arquitectura CQRS permite escalar de forma independiente las operaciones de escritura y lectura, mejorando el rendimiento general del sistema. Web/UI

Slide 26

Slide 26 text

preencoded.png Desincronización temporal En un sistema distribuido, los cambios realizados en un servicio pueden no ser reflejados inmediatamente en otros servicios. Esto significa que, en cualquier momento, diferentes partes del sistema pueden ver diferentes versiones de los datos. Clientes_Detalles (7) Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Clientes (5) Productos

Slide 27

Slide 27 text

preencoded.png Mitigar la desincronización temporal API de Ventas API de Clientes Clientes_Detalles (7) Clientes_Empresas Clientes_Preferencias Ventas_Transacciones Ventas_Productos Ventas_Clientes Clientes (5) Productos

Slide 28

Slide 28 text

preencoded.png Conclusiones • Desafío en la Implementación: Microservicios es un desafío significativo y solo es válido hacerlo cuando hay necesidades claras de escalamiento, resiliencia y tolerancia a fallos. • Evitar Bases de Datos Compartidas: La arquitectura no está bien implementada si se utilizan bases de datos compartidas entre servicios.​ • Conceptos Adicionales Importantes: Los invito a investigar otros conceptos como Consumers, Service Discovery y Cache Distribuido.​​ • Comunicación Asincrónica y Resiliencia: La comunicación asincrónica entre microservicios es crucial para mejorar la resiliencia del sistema, permitiendo que los servicios operen de manera independiente y reduzcan el impacto de fallos en la red.

Slide 29

Slide 29 text

Muchas gracias