Manejo Complejo de - Meetupfiles.meetup.com/1780859/slides.pdfGeneración automática de nodos o Los...
Transcript of Manejo Complejo de - Meetupfiles.meetup.com/1780859/slides.pdfGeneración automática de nodos o Los...
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
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)
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
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
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
Arquitectura Orientada a Eventos
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
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
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
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
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
Aplicación en la nube
Arquitectura General
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)
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
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)
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
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
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
Operadores Temporales
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
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
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
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
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
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
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)
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
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
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
● 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
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
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
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
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
¿Preguntas?
¡Gracias!