manejo complejo de - meetup · motor cep basado en reglas sistema de manejo de reglas de negocio...

38
Manejo Complejo de Eventos en la nube de Openshift www.plugtree.com [email protected]

Upload: others

Post on 02-Oct-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Manejo Complejo de Eventos en la

nube de Openshiftwww.plugtree.com

[email protected]

Page 2: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Agenda● Que es Manejo Complejo de Eventos?

o Definiciones y ejemplos● Event Driven Architecture

o EDA y BPM, SOA, BAM, BRMSo Manejo Complejo de Eventos como componente de EDA

● Aplicación en la nubeo BRMS: Sistemas de manejo de reglas de negocioo Streaming de eventos en la nubeo Manejando eventos en la nubeo Ingeniería de conocimiento: Leccioneso Posibles mejoras

Page 3: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Qué es Manejo Complejo de Eventos?

● Definición de Eventoo Un cambio significativo del estado de algo, en un

momento específico, sobre un dominio específicoo Los eventos pueden estar embebidos en una situación

donde usualmente buscamos reaccionar a ellos.● Definición de Evento Complejo

o Evento no atómico: Una abstracción, composición, o agregación de otros eventos (llamados eventos miembros)

Page 4: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Ejemplos de Eventos Complejos

● Caída de la bolsa de 1929: Composición de cotizaciones de acciones individuales

● Desastres naturales: Agregación de muchas variaciones medibles por sensores (temperatura, humedad, etc)

● Ataques DDOS: Agregación de información básica de pedidos HTTP y su relación temporal

Page 5: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Qué es Manejo Complejo de Eventos?● Manejo Complejo de Eventos (Complex Event Processing)

o Habilidad de detectar, relacionar, abstraer o agregar eventos simples, para reaccionar ante eventos complejos

o Usa razonamiento temporal: Secuencia discreta de puntos en el tiempo (o intervalos) para relacionar eventos simples entre sí

● Event Streaming Processingo Los eventos vienen en streams: Principalmente

relacionado a filtrar y encontrar eventos en un streamo En cuanto se empezó a agregar condiciones al filtrado de

eventos, se lo empezó a llamar CEP

Page 6: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Arquitectura Orientada a Eventos● Construir aplicaciones centradas en la generación de

eventos● Propone un set de componentes

o Productores: Mandan nuevos eventos al sistemao Consumidores: Escuchan eventos específicos del

sistemao Agentes de procesamiento: Trabajan con los eventos

complejos haciendo CEPo Canales: Conexiones y protocolos para transmitir

eventos

Page 7: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Arquitectura Orientada a Eventos

Page 8: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Características de EDA● Las aplicaciones se centran alrededor de eventos● Diseño desacoplado

o Los productores no conocen a los consumidoreso Los agentes de procesamiento no conocen a los

productores ni a los consumidores● La aplicación tendrá la posibilidad de reaccionar en base a

eventos● Propone un enfoque no invasivo para extender aplicaciones

o Escalabilidad y tolerancia a fallos sin agregadoso Ideal para la naturaleza dinámica de la nube

Page 9: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

EDA y SOA● SOA propone un diseño basado en componentes

compartidos y reusables con interfaces bien definidas● Cada servicio SOA puede generar eventos que consuma los

componentes EDA, para analizar o extender el sistemao Ejemplo: monitoreo de ESBs

Page 10: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

EDA y BPM● Las actividades de los procesos de negocio pueden producir

eventos, y mandarlos fuera del alcance del proceso● Los procesos de negocio pueden esperar a recibir eventos

de fuentes externas para cambiar su estado interno

Page 11: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

EDA y BAM● Business Activity Monitoring: Sistemas relacionados siempre

con indicadores de performance (KPIs)● Agregaciones de eventos nos permitirán proveer mejores

feeds a nuevos indicadores

Page 12: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

EDA y BRMS● BRMS: Business Rule Management System● Las Reglas de negocio pueden usarse para filtrar, enrutar y

componer eventos● Los agentes de procesamiento pueden usar reglas

o Los eventos pueden disparar reglas

Page 13: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Aplicación en la nube

Page 14: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Arquitectura General

Page 15: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Características● Motor CEP basado en Reglas● Sistema de manejo de reglas de negocio (BRMS) para guardar y

cargar definiciones de reglaso Las reglas se actualizan en el runtime al pasar los tests

● Manejo de miles de eventos de múltiples fuenteso Eventos genéricoso Eventos tipados (clases específicas)

● Recibir eventos de múltiples aplicacioneso Streaming de eventos basado en AOP

● Suscriptores persistentes (con SLA) y no persistentes (sin SLA)

Page 16: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

La nube vs Manejo Complejo de Eventos● Servidores cloud: Tamaño limitado, servidores “ilimitados”

o La clave está en la escalabilidad● CEP basado en Drools: Todos los eventos están en una sola

red de procesamientoo Requieren mucha memoriao Usualmente corre en un único servidor

● Compromiso: Crear una red de procesamiento distribuida, agrupando las responsabilidades de cada nodoo Arquitectura basada en dividir el ambiente CEP en

múltiples servidores dependiendo de la demanda

Page 17: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Nodos CEP divididos por dominio● Red de procesamiento Distribuida

o Agrupamiento basado en responsabilidado CEP Broker node: Distribución de eventos a su nodo de

dominio (descarte casi inmediato)

Page 18: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Nodos CEP divididos por dominio● Implementado con Drools Fusion

o Basado en un motor de reglas, con soporte para operadores temporales

o BRMS: editores de reglas, procesos, y modelo▪ Expone las definiciones a través de Git y Maven

Page 19: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Qué son las reglas?● Estructura simple para diagramar requerimientos como

condiciones aisladas y su correspondiente acción

rule "nombre de la regla" when

una condición se cumple

thense toma una acción

end

Page 20: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Eventos y reglas CEP: Drools Fusion● Declaración simple de eventos

o Definir un evento puntual▪ default: al agregarlo

o Definir un evento de intervalo● Puede crear nuevas clases de eventos● Usualmente inmutables (no reforzado)● Pueden venir de distintas fuentes● Drools provee 13 operadores

temporales para comparar eventos entre si

import algun.paquete.Llamada;declare Llamada

@role( event )@timestamp( horaLlamada )@duration( duracion )

end

declare CotizacionAccion@role( event )simbolo: Stringprecio: double@expires( 2h30m )

end

Page 21: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Operadores Temporales

Page 22: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Regla ejemplo (CEP)● Drools provee maneras de agregar y acumular diferentes

grupos de hechos y eventos por las condiciones que cumplan

rule "5 llamadas en dos horas por el mismo cliente"when //tenemos 4 o más llamadas del mismo cliente 2 horas desde la primera

$vc: Llamada($cn: nroCliente)$c: Cliente(nroCliente == $cn)$count:: Number(intValue > 4) from accumulate(

Llamda(this != $vc, nroCliente == $cn, $vc before this, this after $vc, this meets[2h] $vc

),count())then //marcar este problema como urgente y requerir tratamiento avanzado

helperGlobal.mandarAlerta("usuario llama una y otra vez");helperGlobal2.setPrioridadCliente($cn, Prioridad.URGENTE);helperGlobal2.setDificultad(Dificultad.AVANZADA);

end

Page 23: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

BRMS y los nodos de CEP● JBoss BRMS 6

o Proyecto Open Source. Preparado para la nubeo Maneja grupos de reglas como proyectos Maven almacenados en

repositorios Git▪ Integración continua en todos los nodos

Page 24: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Manejando el volumen de eventos● Message Broker escalable basado en cloud

(can grow with necessity)● Nodos CEP múltiples

o Drools trabaja en memoriao Ambientes divididos por dominioo n nodos CEP - m servidores

● Nodo CEP global (reducido) para problemas cross-dominio

● Eventos viejos: persistidos en caché escalable (MongoDB)o Políticas de descarte más laxas que para eventos en memoriao Consultadas cuando nuevos eventos disparan reglas de consulta

Page 25: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Suscripciones a Eventos● Suscriptores persistentes

o SLA previamente acordadao Sin pérdida de mensajeso Políticas para rompimiento de SLA

▪ Descarte de mensajes▪ Guardar temporalmente y notificar

acción requerida● Suscriptores no persistentes

o No hay SLA o Posible pérdida de mensajeso Ideal para inicio rápido de proyectos

Page 26: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Integración en la nube● Fuse ESB: Fácil de instalar en la nube, y escalable● No soporta volúmenes altamente variables de eventos

o Eventos manejados a través de broker RabbitMQ

Page 27: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Integración entre Aplicaciones● Aplicaciones con arquitectura que permita AOP

o Eventos enviados a través de interceptors en servicioso Empezar a enviar eventos sin agregar código

Page 28: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Integración con motor BPM en la nube● JBoss BPM Suite: basado en jBPM6

o BPMN2: Definiciones extensibleso jBPM6: Parseo extensible para

configurar el runtimeo Conectores a envio de eventos

agregado a todos los pasos relevantes de los procesos

● Manejo especial de eventos complejos (ej: tareas humanas automatizadas para mantener SLAs)

Page 29: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Integración con motor BPM en la nube● JBoss BPM Suite y motor CEP

usan la misma tecnología● División basada en:

o CEP toma eventos de muchas fuentes ademas de BPM

o Requerimientos no funcionales● Los procesos delegan rápido y

persisten. Procesos longevos● CEP maneja miles de eventos

relacionados muy cerca en tiempo

Page 30: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Tareas operativas en la nube

● Manejo de ruptura de SLAso Planes PaaS que permiten picos de usoo DevOps: El monitoreo continuo es vital!o : : Cuando la SLA se viola, los mensajes extra pueden

manejarse y tomar acciones al respecto▪ Descarte de mensajes▪ Cambios en los SLA

● Todos los componentes en la nube se monitoreano Los resultados pueden retroalimentar el motor de CEP

Page 31: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Ingeniería de Conocimiento: Lecciones● Ingeniería de Conocimiento: Disciplina que agrupa la

transferencia, modelado e integración de conocimiento de humanos a sistemas de inteligencia artificial.

● Experiencias de captura de requerimientos de expertos de dominio llevó a identificar etapas de madurez:o Etapa 1: Analistas traducen conocimiento a reglaso Etapa 2: Analistas enseñan a expertos las estructuraso Etapa 3: Proveer herramientas para escribir reglas

directamente▪ DSL: Domain Specific Languages▪ Tablas de Decisión

Page 32: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

● Etapa 1 y 2: Definir conocimiento en estructuras

● Etapa 3o DSL: Provee traducciones del lenguaje natural a la

implementación técnica específica del motor de reglaso Tablas de Decision: Ideal para reglas muy

estructuradas con límites específicos.

REGLAS COMUNES REGLAS CEP

cuando una condición se cumpleentonces tomar una acción específica

detectar una correlación de eventosy tomar una acción relacionada

Ingeniería de Conocimiento: Lecciones

Page 33: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Factores de Riesgo● Generación de ambientes se realiza manualmente● Disponibilidad de memoria

o Incluso después de dividir los nodos por dominio, algunos dominios pueden requerir mucha memoria. Actualmente se sugiere correr en nube privada

● Los nodos no se replicano En caso de fallo de un nodo, se reiniciao Los eventos en memoria se pierdeno Pequeña ventana de tiempo en que las relaciones

entre eventos pueden perderse

Page 34: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Futuras mejoras● Generación automática de nodos

o Los proveedores PaaS cuentan con APIs para crear nuevos ambientes

o Basado en la detección de nuevos eventos complejos, pueden crearse nuevos ambientes▪ ej. Nuevo dominio de reglas creado → Generación

automática de ambiente● Extender el uso a más personas: Cobertura de DSL

Page 35: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Futuras mejoras● Replicación automática de nodos

o Eventos en memoria replicados en nodos extrao Ejecución de reglas en un nodo a la vezo Actualización continua de eventos y activaciones de reglas entre

nodoso Drools: Agenda Filters y WM Event Listeners

Page 36: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

Resumiendo● CEP puede manejarse en ambientes de nube

o Consideraciones de tamaños de dominios necesaria para poder escalar y evitar fallos

o Tareas operativas especiales se deben realizar▪ Integración de mejores prácticas de ambientes

empresariales es posible ▪ Continuous Delivery es muy factible

● Interacción CEP - arq. empresarial: mucho valor agregadoo Control automático antes de romperse SLAs con clienteso Mejor detección de comportamientos inesperados

Page 37: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

¿Preguntas?

Page 38: Manejo Complejo de - Meetup · Motor CEP basado en Reglas Sistema de manejo de reglas de negocio (BRMS) para guardar y cargar definiciones de reglas o Las reglas se actualizan en

¡Gracias!

[email protected]