Cómo funciona el procesamiento de datos en tiempo real con event sourcing

July 10, 2023

Tags: Tecnologías

event sourcing

 

Uno de los temas que estaremos tocando en nuestro evento anual, a celebrarse el próximo 21 de septiembre en la ciudad de Panamá, es el de event sourcing, una arquitectura de software que puede ser desconocida para muchas personas pero que ofrece múltiples beneficios cuando se utiliza en un producto de software.

 

Event sourcing, o abastecimiento de datos como se conoce en español, es un patrón arquitectónico que almacena el estado de una aplicación como una secuencia de eventos. En lugar de almacenar el estado actual de un objeto, el abastecimiento de eventos captura todos los cambios o eventos que han ocurrido a lo largo del tiempo. 

 

Al reproducir estos eventos, la aplicación puede reconstruir el estado actual del objeto en cualquier momento. Este patrón proporciona un historial auditable y confiable de cómo ha evolucionado el estado de la aplicación.

 

 

event sourcing

 

Procesamiento de datos en tiempo real: cómo funciona

 

El procesamiento de datos en tiempo real y el abastecimiento de eventos, o event sourcing, son dos conceptos que se pueden combinar para construir sistemas robustos y escalables. Primero, se debe tener una comprensión del procesamiento de datos en tiempo real para luego saber cómo se enlaza con el event sourcing. 

 

El procesamiento de datos en tiempo real se refiere a la capacidad de analizar y actuar sobre los datos a medida que se generan, proporcionando información y respuestas inmediatas. Implica procesar y reaccionar a los datos casi en tiempo real o con un retraso mínimo. Esto es particularmente importante en escenarios donde se deben tomar decisiones o acciones oportunas en función de los flujos de datos entrantes.

 

Ahora, veamos cómo se puede combinar el procesamiento de datos en tiempo real con el abastecimiento de eventos:

 

  • Captura de eventos: en una arquitectura de abastecimiento de eventos, los eventos representan los datos centrales. Estos eventos se pueden capturar de varias fuentes, como interacciones de usuarios, eventos del sistema, sensores o servicios externos. Luego, los eventos se almacenan en un registro de eventos o en un almacén de eventos.
  • Procesamiento de eventos: a medida que se capturan nuevos eventos, se pueden procesar en tiempo real para obtener información o desencadenar acciones inmediatas. Los sistemas de procesamiento de eventos en tiempo real pueden suscribirse al flujo de eventos y reaccionar ante eventos específicos mediante la ejecución de la lógica adecuada. Este procesamiento puede incluir agregaciones, filtrado, enriquecimiento o integración con otros sistemas.
  • Actualización del almacén de eventos: después de procesar los eventos en tiempo real, los cambios resultantes se pueden aplicar al almacén de eventos. Esto garantiza que el almacén de eventos refleje el estado actual de la aplicación después de procesar los eventos más recientes. Estas actualizaciones pueden incluir la creación de nuevos eventos, la modificación de eventos existentes o la adición de información adicional a los eventos.
  • Consulta y análisis: el procesamiento de datos en tiempo real permite consultar el almacén de eventos para obtener el estado actual de los objetos o analizar datos históricos. Las aplicaciones pueden suscribirse a tipos de eventos o patrones específicos para recibir actualizaciones en tiempo real. Se pueden emplear técnicas de procesamiento de eventos complejos (CEP) para identificar patrones o anomalías en el flujo de eventos.

 

Al combinar el procesamiento de datos en tiempo real con el abastecimiento de eventos, puede crear sistemas que no solo brinden información y acciones inmediatas, sino que también mantengan un historial confiable de cómo ha evolucionado el estado del sistema a lo largo del tiempo. Esto puede ser valioso en dominios como finanzas, logística, IoT y muchos otros donde la auditoría, la trazabilidad y el análisis histórico son requisitos importantes.

 

event sourcing

 

Uso de event sourcing en el mundo real

 

En una aplicación financiera, por ejemplo, la manera tradicional es que se tiene una base de datos, cuando se va a hacer una transacción, la aplicación se conecta a la base de datos, lee el estado de la cuenta y aplica los cambios como ingreso de dinero o retiros.

 

Con event sourcing, no se maneja este proceso con el estado tal cual, si no que todo está derivado en eventos, por ejemplo, en vez de ir a la base de datos y modificar la cuenta, lo que hace el sistema es que, si se hace el ingreso de una cantidad determinada de dinero, el sistema emite un evento con los detalles de esta transacción y los sistemas “interesados” en este evento van a reaccionar y procesar la transacción. 

 

Cada transacción se categoriza como un evento y la aplicación lo que hará para, por ejemplo, ver el historial de una cuenta es explorar cada evento. Puede parecer más trabajo, pero la empresa o cliente tendrá a disposición un historial de todo lo que pasó, siendo esto una medida de seguridad en caso de que falle la base de datos.

 

Te recomendamos en video