Todas las empresas para sus operaciones y transacciones diarias deben generar un sinnúmero de información a ser intercambiada entre emisores y receptores. Si estas acciones son automatizadas en sistemas informáticos pues tendremos un gran flujo de información a través de las redes de la empresa y hacia y desde el exterior. Este flujo de información consiste en un flujo constante de eventos que se generan y aquellas empresas que son capaces de capturar y analizar en tiempo real los eventos tienen una ventaja mayor con respecto a sus competidores. Esto se debe a que pueden saber qué pasa en todo momento en su negocio y reaccionar rápidamente ante eventos o patrones incorrectos.
Claro que implementar una solución que capture los eventos, los procese y genere respuestas en dependencia de los patrones que ocurran no es tarea fácil, y es ahí donde WSO2 viene a nuestra ayuda.
El CEP o Complex Event Processor de WSO2, que en español vendría siendo “Procesador de Eventos Complejos” es una herramienta que recibe eventos generados por el resto de las herramientas de la suite y cualquier otra solución que se configure para ello, y es capaz de determinar en tiempo real si determinados patrones de eventos están ocurriendo y reaccionar ante ellos. Está de más decir que la herramienta está bajo licencia apache v2, y que tiene un alto rendimiento y escala de lo mejor.
Cuando comentaba que recibe eventos de las herramientas de la suite y de cualquier otra herramienta que se configure para que lo haga, es que en el caso de las herramientas de la suite hay que ajustarlas para que todos los eventos generados por ella sean enviados al servidor del CEP, y en el caso de otros tipos de herramientas o soluciones informáticas pues igualmente hay que implementar para que hagan lo mismo. Por suerte es muy similar a como se hace con el BAM.
La arquitectura del CEP puede verse como un poco compleja al inicio, pero es bastante fácil de entender:
Como ven los eventos son generados de diferentes maneras, bien sea a través de brokers de mensajería, a través de los publicadores de datos de WSO2, vía email o por llamadas REST.
Cuando estos eventos llegan al CEP son recibidos por un “Input Event Adaptor” que se corresponde a la forma en que se mandó el evento recibido. Lo interesante es que si hemos implementado una aplicación que manda los eventos al CEP de una manera no registrada aquí, pues podemos implementar nuestro propio adaptador e incluirlo dentro del CEP. Espero que pronto veamos un trabajo realizado en este tema en el blog.
Luego los eventos son pasados al “Event Builder” que se encarga de convertir el formato de los eventos a un formato estándar “WSO2Event” y de esta manera llegan los eventos al core del CEP, el “Event Processor”.
En el “Event Processor” se manejan diferentes planes de ejecución con la ayuda de Siddhi, que es el framework base usado por el CEP para el manejo de eventos. Aquí es donde ocurre la “magia”. Y veremos como se hace en otras entradas de esta serie sobre el CEP.
Luego los eventos son nuevamente convertidos de “WSO2Event” a su formato de destino en el “Event Formatter”.
La publicación de los eventos ocurre entonces en el “Output Event Adaptor ” encargado de mandar los eventos publicados a sus destinatarios.
Para entender la utilidad del CEP veamos algunas cosas que se pueden hacer:
- Se puede implementar un plan de ejecución que detecte en tiempo real cuando el precio de determinadas acciones en el mercado han cambiado un más de un 2% en menos de 1min, y notificar a los usuarios subscritos a este evento.
- Se puede implementar un plan de ejecución que detecte en tiempo real cuando un vuelo viene retrasado y notifique a los usuarios subscritos a este evento, bien sea vía correo electrónico, sms, o a través de una aplicación web.
- Se puede implementar un plan de ejecución que detecte múltiples intentos de autenticación erróneos usando una misma cuenta, por ejemplo desde diferentes IP, o con un criterio de más de 5 intentos en un segundo, y notificar al dueño de la cuenta.
Y así cualquier cosa que se quiera detectar se puede implementar usando el CEP de WSO2, y lo más interesante es que será en tiempo real.
WSO2 y su Procesador de Eventos Complejos. CEP. I