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]