Event sourcing vs bases relacionales

Clase 16 de 43Curso Profesional de Arquitectura de Software

Resumen

Comprende con claridad cómo la arquitectura orientada a eventos conecta componentes mediante un bus de eventos, reduce acoplamiento entre microservicios y habilita escalabilidad. Aquí verás cómo operan productores y consumidores, por qué aparece la consistencia eventual, qué complica las pruebas end-to-end, y cuándo conviene usar event sourcing con un log de eventos para auditoría y recuperación.

¿Qué es la arquitectura orientada a eventos y cómo conecta microservicios?

En un enfoque event driven, los componentes no se comunican directamente: el bus de eventos es el medio principal. Con el patrón publish and subscribe, cada componente publica eventos y otros se suscriben para reaccionar sin acoplamiento. Esto favorece despliegues y mantenimiento en arquitecturas de microservicios, evitando dependencias rígidas.

¿Cómo operan productores y consumidores de eventos?

  • Una API actúa como productora y consumidora de eventos.
  • Ante una escritura, publica un evento para registrar que “algo” debe persistirse.
  • Módulos como ventas o clientes consumen ese evento y actualizan sus bases.
  • Un proceso de importación de archivo grande publica contenidos como eventos.
  • Cada servicio suscrito consume lo que le corresponde.

¿Qué habilidades clave se ponen en práctica?

  • Modelar productores y consumidores claros.
  • Diseñar un bus de eventos como canal único de comunicación.
  • Definir suscripciones por tipo de evento.
  • Mantener bajo acoplamiento entre módulos.
  • Pensar despliegue y mantenimiento independientes.

¿Qué retos plantea la consistencia eventual y las pruebas end-to-end?

Un desafío es validar si una acción produjo el resultado esperado. Con consistencia eventual, una escritura no es inmediatamente visible: el sistema no garantiza disponibilidad hasta que el evento se distribuya donde corresponde. Además, las pruebas end-to-end son más complejas porque deben orquestar el bus y los múltiples módulos.

¿Qué implica la consistencia eventual para microservicios?

  • La escritura no asegura visibilidad inmediata.
  • Se requiere propagar el evento a todas las partes interesadas.
  • Las lecturas pueden transitoriamente mostrar estados desactualizados.
  • El diseño debe tolerar demoras y reacciones asíncronas.

¿Cómo abordar pruebas end-to-end con bus de eventos?

  • Integrar el bus en el entorno de prueba.
  • Conectar eventos con los módulos involucrados.
  • Orquestar flujos completos de publicación y consumo.
  • Asumir mayor complejidad en escenarios integrales.

¿Cómo funciona el event sourcing y cuándo conviene usarlo?

El event sourcing propone almacenar solo los eventos relevantes, no el “estado actual” como tablas relacionales. Los eventos se leen de forma secuencial para reconstruir el estado. Con un histórico de eventos, se puede conocer el estado presente y el de cualquier instante del ciclo de vida. Esto es potente para auditoría, debugging y recuperación ante ataques, atributos de calidad valiosos. Presenta retos: la lectura del estado se vuelve más costosa a medida que crecen los eventos, por lo que se aplican patrones para calcular estados intermedios y para construir vistas que respondan rápido a necesidades como modelos específicos u estados agregados para reportes.

¿Cómo aplica en una app bancaria con transferencias y depósitos?

  • Guardar cada depósito y extracción como evento.
  • Leer el log secuencialmente para calcular el saldo.
  • Evaluar un nuevo evento y validar si deja la cuenta en números rojos.
  • Aceptar o rechazar operaciones según el estado derivado de eventos.

¿Qué consideraciones de capacidad y patrones de diseño importan?

  • Guardar todos los eventos exige recursos y capacidad.
  • Usar patrones para estados intermedios y acelerar cálculos de estado.
  • Derivar diferentes vistas desde eventos: por objeto, por reporte o por presentación de datos.
  • Evaluar beneficios y consecuencias del patrón según el escenario.
  • Decidir si event sourcing es adecuado antes de adoptarlo.

¿Te gustaría compartir un caso donde el bus de eventos te ayudó a desacoplar servicios o donde event sourcing facilitó auditoría? Comenta tu experiencia y dudas.