El abastecimiento de eventos, o event sourcing, es un patrón de diseño de software que se centra en capturar y almacenar todos los cambios en el estado de una aplicación como una secuencia de eventos. En lugar de conservar el estado actual de una aplicación, el abastecimiento de eventos almacena un registro o diario de eventos que describen cada cambio de estado.
En el abastecimiento de eventos, el estado de una aplicación se obtiene reproduciendo y procesando estos eventos en el orden en que ocurrieron. Esto le permite reconstruir el estado de una aplicación en cualquier momento aplicando los eventos en secuencia. Al almacenar los eventos en lugar del estado actual, tiene un seguimiento de auditoría completo de cómo evolucionó el estado de la aplicación con el tiempo.
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.
El abastecimiento de eventos proporciona varios beneficios:
Sin embargo, es importante tener en cuenta que el abastecimiento de eventos presenta complejidad en comparación con la persistencia tradicional basada en el estado. La implementación del abastecimiento de eventos requiere un diseño y una consideración cuidadosos del almacenamiento de eventos, los mecanismos de reproducción de eventos y el manejo de la consistencia eventual.
El abastecimiento de eventos a menudo se usa en dominios donde la auditabilidad, la trazabilidad o el análisis temporal son críticos, como los sistemas financieros, la gestión de la cadena de suministro o los flujos de trabajo comerciales complejos. Se puede combinar con otros patrones, como Command Query Responsibility Segregation (CQRS), para desacoplar aún más los lados de escritura y lectura de una aplicación.
Cada evento en el abastecimiento de eventos generalmente representa una acción discreta o un hecho que ocurrió en el sistema. Estos eventos son inmutables, lo que significa que no se pueden modificar una vez registrados. Los eventos mismos capturan los datos relevantes sobre el cambio de estado, como el tipo de evento, las entidades afectadas y cualquier dato asociado.
Sobre este tema y otras funciones del event sourcing estaremos hablando en nuestro evento anual, el cual se celebrará el 21 de septiembre en Panamá, donde estaremos acompañados por varios de nuestros partners globales.
Los líderes de la industria bancaria, del retail, seguros y salud serán nuestros invitados de honor, día en el cual disfrutarán de más de 10 charlas técnicas y comerciales sobre los servicios que ofrecemos como agencia de desarrollo de sofware y las soluciones prestadas por nuestros partners: Red Hat, Acquia, ValidatedID, UiPath y Microsoft.