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