¿Cuándo se debe utilizar una solución de event sourcing?

July 10, 2023

Tags: Tecnologías

event sourcing

 

Una solución de event sourcing, tema que formará parte de nuestro evento anual, puede ser lo que necesite una empresa para darle el adecuado manejo a todos los cambios de estados de una aplicación y hacer de cada uno de estos un evento.

 

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. Esto viene siendo particularmente útil si llega a fallar la base de datos o se necesite revisar el historial de cambios y procedimientos.

 

 

event sourcing

 

¿Qué es un evento?

 

Al utilizar el término “evento” hacemos referencia a una ocurrencia o acción que tiene lugar dentro de una aplicación o un sistema. Un evento puede ser cualquier incidente notable que desencadene una respuesta o sea el causante de un cambio en el estado del sistema o aplicación.

 

Los eventos son un concepto fundamental en la arquitectura dirigida por eventos, donde los sistemas de software están diseñados para responder a eventos y comunicarse entre sí enviando y recibiendo eventos. Los sistemas controlados por eventos se usan comúnmente en varios dominios, incluido el desarrollo web, las aplicaciones de servidor, el software de escritorio y las aplicaciones móviles.

 

Los eventos pueden ser generados por varias fuentes, como acciones del usuario, procesos del sistema, sistemas externos o incluso disparadores internos dentro del propio software. Los ejemplos de eventos incluyen clics de botones, movimientos del mouse, entrada de teclado, actualizaciones de bases de datos, solicitudes de red, cambios de datos de sensores y muchos más.

 

event sourcing

 

Cuando es correcto aplicar una solución event sourcing

 

Aquí hay algunas situaciones en las que una solución de abastecimiento de eventos puede ser beneficiosa:

 

Auditoría y cumplimiento

 

Si necesita mantener un registro de auditoría completo de todos los cambios realizados en su sistema, el abastecimiento de eventos puede ser valioso. Al capturar eventos que representan cada cambio de estado, tiene un historial detallado que se puede usar para auditoría, cumplimiento y fines forenses.

 

Estado de reconstrucción

 

En ciertos dominios, puede ser necesario reconstruir el estado actual de una aplicación reproduciendo eventos pasados. El abastecimiento de eventos le permite reconstruir el estado aplicando eventos en el orden en que ocurrieron. Esto puede ser útil en escenarios en los que tiene una lógica empresarial compleja o en los que necesita realizar un análisis histórico.

 

Sistemas colaborativos

 

En las aplicaciones colaborativas en las que varios usuarios pueden modificar simultáneamente los datos compartidos, el abastecimiento de eventos puede proporcionar una solución sólida. Al capturar y almacenar eventos, puede manejar conflictos y resolverlos según el orden de los eventos, lo que permite la edición colaborativa y garantiza la coherencia de los datos.

 

event sourcing

 

Integración del sistema

 

Al integrar múltiples sistemas o microservicios, el abastecimiento de eventos puede facilitar la comunicación y la sincronización de datos. Cada sistema puede publicar eventos relacionados con sus propios cambios de estado, lo que permite que otros sistemas se suscriban y reaccionen en consecuencia. Esto desacopla los sistemas y proporciona un mecanismo confiable para la comunicación basada en eventos.

 

Arquitecturas impulsadas por eventos

 

Al abastecimiento de eventos se alinea bien con las arquitecturas impulsadas por eventos, donde diferentes componentes se comunican a través de eventos. Al adoptar el abastecimiento de eventos, puede tener una única fuente de verdad para los eventos, lo que permite un procesamiento de eventos confiable, flujos de trabajo controlados por eventos y coordinación del sistema basada en eventos.

 

CQRS (Command Query Responsibility Segregation)

 

El abastecimiento de eventos se usa a menudo junto con el patrón CQRS. CQRS separa las operaciones de lectura y escritura, y el abastecimiento de eventos se puede emplear en el lado de escritura para capturar eventos y actualizar el estado de la aplicación. Esta combinación puede proporcionar escalabilidad, flexibilidad y soporte para operaciones comerciales complejas.

 

Es importante tener en cuenta que el abastecimiento de eventos presenta complejidad y consideraciones adicionales, como el almacenamiento de eventos, la reproducción de eventos y el control de versiones de eventos. Por lo tanto, es crucial evaluar cuidadosamente las ventajas y desventajas y evaluar si los beneficios del abastecimiento de eventos se alinean con sus requisitos y dominio específicos.

 

Te recomendamos en video