Manejo Complejo de Eventos en la nube de Openshift

Transcripción

Manejo Complejo de Eventos en la nube de Openshift
www.plugtree.com
[email protected]
Manejo
Complejo de
Eventos en la
nube de
Openshift
Agenda
● Que es Manejo Complejo de Eventos?
o Definiciones y ejemplos
● Event Driven Architecture
o EDA y BPM, SOA, BAM, BRMS
o Manejo Complejo de Eventos como componente de EDA
● Aplicación en la nube
o BRMS: Sistemas de manejo de reglas de negocio
o Streaming de eventos en la nube
o Manejando eventos en la nube
o Ingeniería de conocimiento: Lecciones
o Posibles mejoras
Qué es Manejo Complejo de Eventos?
● Definición de Evento
o Un cambio significativo del estado de algo, en un
momento específico, sobre un dominio específico
o 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 Processing
o Los eventos vienen en streams: Principalmente
relacionado a filtrar y encontrar eventos en un stream
o 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 sistema
o Consumidores: Escuchan eventos específicos del
sistema
o Agentes de procesamiento: Trabajan con los eventos
complejos haciendo CEP
o 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 consumidores
o 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 agregados
o 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 sistema
o 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 reglas
o Las reglas se actualizan en el runtime al pasar los tests
● Manejo de miles de eventos de múltiples fuentes
o Eventos genéricos
o Eventos tipados (clases específicas)
● Recibir eventos de múltiples aplicaciones
o 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 procesamiento
o Requieren mucha memoria
o Usualmente corre en un único servidor
● Compromiso: Crear una red de procesamiento distribuida,
agrupando las responsabilidades de cada nodo
o 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 responsabilidad
o 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
then
se 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: String
precio: 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 nube
o
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 memoria
o
Ambientes divididos por dominio
o
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 memoria
o
Consultadas cuando nuevos eventos disparan reglas de consulta
Suscripciones a Eventos
●
●
Suscriptores persistentes
o
SLA previamente acordada
o
Sin pérdida de mensajes
o
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 mensajes
o
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 servicios
o 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 extensibles
o jBPM6: Parseo extensible para
configurar el runtime
o 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 SLAs
o Planes PaaS que permiten picos de uso
o 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 monitorean
o 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 reglas
o Etapa 2: Analistas enseñan a expertos las estructuras
o Etapa 3: Proveer herramientas para escribir reglas
directamente
▪ DSL: Domain Specific Languages
▪ Tablas de Decisión
Ingeniería de Conocimiento: Lecciones
● Etapa 1 y 2: Definir conocimiento en estructuras
REGLAS COMUNES
cuando
una condición se cumple
entonces
tomar una acción específica
REGLAS CEP
detectar
una correlación de eventos
y
tomar una acción relacionada
● Etapa 3
o DSL: Provee traducciones del lenguaje natural a la
implementación técnica específica del motor de reglas
o Tablas de Decision: Ideal para reglas muy
estructuradas con límites específicos.
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 replican
o En caso de fallo de un nodo, se reinicia
o Los eventos en memoria se pierden
o 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 extra
o
Ejecución de reglas en un nodo a la vez
o
Actualización continua de eventos y activaciones de reglas entre
nodos
o
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 agregado
o Control automático antes de romperse SLAs con clientes
o Mejor detección de comportamientos inesperados
¿Preguntas?
¡Gracias!
[email protected]

Documentos relacionados