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
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.
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.
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
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
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
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
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.
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
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
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
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
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
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
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 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
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.
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.
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.
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"
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
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
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.