Arquitectura de Componentes Independientes y Comunicación por Eventos
Clase 18 de 24 • Fundamentos de Arquitectura de Software (2018)
Resumen
¿Qué es la arquitectura de componentes independientes?
La arquitectura de componentes independientes se centra en el desarrollo de aplicaciones donde cada componente puede ser gestionado y desarrollado por separado, manteniendo un bajo acoplamiento entre ellos. Este enfoque permite que los componentes funcionen de manera independiente, ofreciendo flexibilidad y escalabilidad. Existen dos grandes enfoques dentro de esta arquitectura: la invocación implícita y la invocación explícita. Estos métodos determinan cómo los componentes se comunican entre sí en un sistema.
¿Cómo funciona la invocación implícita?
La invocación implícita se basa principalmente en la comunicación a través de eventos. Este método es ventajoso ya que los componentes no necesitan conocerse directamente, lo que permite una mayor modularidad.
¿En qué consiste el esquema publicar/suscribir?
El modelo de publicar/suscribir funciona con componentes que se comunican a través de un bus de eventos. Un componente publica eventos en este bus, y los componentes suscritos reciben la notificación sin saber quién originó el evento.
Ejemplo:
- Aplicación eCommerce: Publica un evento en el bus cada vez que se vende un producto.
- Aplicación de reporting: Está suscrita al bus y registra cada venta en su base de datos, almacenando información como el producto vendido, el precio, y el vendedor.
¿Qué es un Enterprise Service Bus (ESB)?
El Enterprise Service Bus es un bus inteligente que maneja eventos y determina qué debería hacer cada componente sin que éstos se conozcan. Esto permite crear procesos más complejos con componentes independientes que no necesitan saber nada del funcionamiento interno de otros componentes.
Ejemplo:
- Componente de formulario: Publica un evento cuando recibe un formulario de usuario.
- ESB: Decide delegar el procesamiento del formulario a otros componentes como el de revisión o el de análisis de fraude, sin que estos sepan sobre el trabajo del otro.
¿Cómo se lleva a cabo la invocación explícita?
A diferencia de la invocación implícita, la invocación explícita permite que los componentes se conozcan entre sí, aunque sean desarrollados por separado. Esto generalmente implica un registro central de servicios que facilita la comunicación entre ellos.
¿Cómo se registran y comunican los componentes?
Cada componente se registra en un punto central que señala cómo comunicarse con otros componentes. Esto asegura que puedan interactuar explícitamente sin necesidad de estar acoplados al momento del despliegue.
Ejemplo:
- Componente eCommerce: Gestiona productos, clientes y precios, enfocándose solo en la publicación.
- Componente de pagos: Procesa transacciones cuando el eCommerce se lo delega.
¿Qué desafíos presenta esta arquitectura?
Mientras ofrece independencia en el despliegue, la invocación explícita requiere que las APIs expuestas por los componentes sean estables y compatibles. Es crucial evitar rupturas en la compatibilidad, asegurando que los componentes puedan siempre comunicarse de manera efectiva pese a las actualizaciones de código.
La arquitectura de componentes independientes, con sus mecanismos de invocación implícita y explícita, ofrece versatilidad en el desarrollo de software moderno. Al permitir que los componentes funcionen de manera autónoma, ofrece grandes ventajas en términos de escalabilidad y mantenimiento, siempre que se manejen adecuadamente sus complejidades.