Patrones de Arquitectura Orientada a Eventos y Event Sourcing
Clase 16 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
- 2

Atributos de Calidad en Sistemas: Definición y Medición
01:49 - 3

Idoneidad Funcional: Completitud, Exactitud y Pertinencia
02:52 - 4

Eficiencia de Ejecución en Sistemas Informáticos
04:14 - 5

Compatibilidad en Sistemas: Interoperabilidad y Coexistencia
03:49 - 6

Subcaracterísticas de Usabilidad en Desarrollo de Software
08:14 - 7

Confiabilidad de Sistemas: Madurez, Disponibilidad, Resiliencia y Recuperación
05:38 - 8

Seguridad de Usuarios en Desarrollo de Software
04:01 - 9

Subcaracterísticas de Mantenibilidad en Sistemas de Software
06:28 - 10

Medición de Adaptabilidad en Sistemas de Software
02:48 - 11

Relación y Tensión entre Atributos de Calidad en Sistemas de Software
04:04 - 12

Atributos de Calidad en Arquitectura de Software
07:00
- 13

Patrones de Arquitectura Monolítica y Distribuida
02:50 - 14

Modelo Vista Controlador: Separación de Responsabilidades en Aplicaciones
05:38 - 15

Arquitectura de Capas: Diseño y Comunicación entre Niveles
03:14 - 16

Patrones de Arquitectura Orientada a Eventos y Event Sourcing
06:17 - 17

Patrón de Arquitectura MicroKernel y su Implementación en IDEs
01:52 - 18

Arquitectura "Comparte Nada": Optimización y Procesamiento de Datos
02:29 - 19

Patrón de Microservicios en Arquitectura de Software
03:57 - 20

Patrón CQRS para Separación de Consultas y Comandos
03:24 - 21

Arquitectura Hexagonal: Diseño y Aplicación Práctica
04:10 - 22

Diseño Orientado al Dominio: Conceptos y Aplicaciones Prácticas
05:34 - 23

Patrones de Arquitectura para Aplicaciones Escalables y Modulares
09:22 - 24

Patrones de Arquitectura en Proyectos de Crecimiento Empresarial
07:59
- 25

Diseño de Arquitecturas a Medida: Herramientas y Estrategias
02:18 - 26

Tipos de Conectores en Arquitectura de Software
06:18 - 27

Conectores Asíncronos y Sincrónicos: Implementación y Uso Práctico
03:05 - 28

Diferencias entre Enrutadores y Difusores en Comunicación de Mensajes
01:55 - 29

Conexión de Productores y Consumidores con Colas de Mensajes
03:52 - 30

Framework de Diseño Orientado a Atributos: Escenarios y Tácticas
01:55 - 31

Tácticas para Mejorar la Disponibilidad de Sistemas
05:59 - 32

Tácticas para Mejorar la Disponibilidad del Sistema
04:10 - 33

Tácticas para Mejorar la Mantenibilidad del Software
06:16 - 34

Prevención de Efectos Dominó en Mantenibilidad de Software
12:17 - 35

Estrategias para Mejorar la Eficiencia de Ejecución en Sistemas
09:15 - 36

Tácticas de Seguridad Informática para Detectar, Resistir y Recuperarse de Ataques
09:03 - 37

Estrategias para Mejorar la Capacidad de Prueba de Software
05:14 - 38

Tácticas de Usabilidad en Diseño de Interfaces de Usuario
08:20 - 39

Validación de Arquitectura con ATAM y Métricas de Calidad
06:34 - 40

Diseño de Arquitectura para Startups y Empresas Escalables
10:30
¿Qué es la arquitectura orientada a eventos?
La arquitectura orientada a eventos, o event-driven architecture, es un enfoque que intercambia datos mediante eventos. Este sistema permite que componentes, como microservicios, se comuniquen a través de un bus de eventos, eliminando el acoplamiento directo entre ellos. Este método es ideal para arquitecturas de microservicios, donde cada componente publica eventos y otros componentes suscritos los consumen. Así, se facilita la independencia, el despliegue y el mantenimiento de cada módulo.
¿Cómo funciona en la práctica?
Imaginemos un caso práctico de arquitectura orientada a eventos. Se pueden identificar dos roles: productores y consumidores de eventos. Por ejemplo:
- Una API puede ser productora de eventos al momento de recibir una solicitud para escribir datos.
- Este evento se publica en el bus de eventos y otros módulos, como ventas o clientes, pueden consumirlo para actualizar sus bases de datos.
Asimismo, un proceso de importación de archivos puede ir publicando eventos con el contenido del archivo, los cuales son consumidos por servicios suscritos a esos eventos.
¿Cuáles son los retos de esta arquitectura?
Este enfoque presenta desafíos, como:
- Consistencia eventual: La arquitectura orientada a eventos suele ser consistente de manera eventual. No garantiza que los datos estén disponibles inmediatamente hasta que los eventos se distribuyen completamente.
- Pruebas complejas: La dificultad de pruebas tipo end-to-end aumenta, dado que es necesario utilizar el bus de eventos para coordinar la interacción entre módulos.
¿Qué es Event Sourcing?
El Event Sourcing es una variación de arquitectura orientada a eventos donde, en vez de mantener el estado actual de un sistema en una base de datos, se almacenan todos los eventos que lo llevaron a su estado actual. Esto permite entender el estado no solo en el presente, sino a lo largo de todo su ciclo de vida.
Ventajas del Event Sourcing
El Event Sourcing ofrece numerosas ventajas, tales como:
- Auditoría: Proporciona un completo log de eventos para auditorías.
- Depuración y recuperación: Ayuda en la depuración y recuperación ante ataques, ya que permite identificar cómo el sistema llegó a un determinado estado.
- Flexibilidad: Puede reconstruir el estado actual en cualquier momento utilizando el historial de eventos.
Desafíos al implementar Event Sourcing
Implementar Event Sourcing implica ciertos retos:
- Rendimiento: A medida que los eventos se acumulan, determinar el estado actual puede ser más lento. Algunas soluciones implementan patrones de diseño para obtener estados intermedios y optimizar las consultas.
- Recursos: Almacenar todos los eventos demanda un uso considerable de recursos del sistema.
Un ejemplo sería una aplicación bancaria que, en lugar de almacenar el estado actual de las cuentas, guarda las transacciones como eventos. Así, es posible validar transacciones y visualizar el historial de operaciones, asegurando una gestión más efectiva de recursos y acciones.
Consejos prácticos sobre arquitectura orientada a eventos
- Evalúa tu necesidad: No todos los proyectos requieren un enfoque basado en eventos. Analiza si la independencia y descentralización de módulos benefician a tu arquitectura antes de implementarla.
- Optimización: Considera el uso de patrones de diseño que ayuden a mejorar la eficiencia del sistema, especialmente en el manejo de grandes volúmenes de eventos.
- Capacitación continua: La tecnología evoluciona rápidamente, por lo que es esencial seguir actualizándote sobre nuevas prácticas y herramientas que optimicen arquitecturas basadas en eventos.
En conclusión, la arquitectura orientada a eventos es una herramienta poderosa pero también compleja. Tomar decisiones informadas sobre su implementación logrará un sistema robusto y eficiente que cumpla con las crecientes demandas tecnológicas.