Real Time Analytics

Breve definición y estado del arte

Analítica en tiempo real permite hacer análisis de datos inmediatamente (real-time) o lo más cercano en el tiempo posible (near real-time), a cuando sucedió algún hecho concreto o se generó un escenario particular en el que se necesite reaccionar. 

Tradicionalmente se aplicaban estos análisis sobre datos que se generaban únicamente en la organización y las herramientas que habilitaban a hacer estos análisis tenían costos que no todas las organizaciones podían afrontar.

Hoy en día, los datos pueden ser internos o también externos a la organización, por ejemplo podrían ser obtenidos de las redes sociales.

Normalmente cuando se habla de análisis en tiempo real, tiene sentido que los datos se generen en streaming, es decir se generan contínuamente (como por ejemplo: logs, click streams, sensores, etc) y también se procesan en streaming, es decir se procesan ni bien llegan sin necesidad de persistirlos previamente.

Estos dos aspectos traen asociados sus complejidades y por consiguiente hay que tener ciertos mecanismos para tratar los posibles problemas que puedan surgir en el momento en que se procesan. Por ejemplo, los datos podrían llegar en desorden, podrían llegar desde diversas fuentes y cada una puede tener diversos problemas, pueden tener sus problemas de calidad de datos, etc.

Hoy en día la diversidad de herramientas disponibles es muy interesante: propietarias, open-source, con/sin costo de licencia, con/sin costo de soporte, etc. En otras palabras, actualmente las herramientas están, falta que las organizaciones hagan uso de las mismas para beneficiarse de los resultados que se podrían obtener de ellas. 

Casos de uso

No es cuestión solamente de ser rápidos en detectar un evento, sino de tener la oportunidad de ser proactivos y poder sacar una ventaja competitiva por haber detectado el evento tempranamente. A veces es cuestión de ser mejor que la competencia, otras es cuestión de poder mitigar un problema cuanto antes, antes de que se dilate o agrave por el paso del tiempo.

Hay casos en que cuanto más tiempo pase desde que surge el evento hasta que se reaccione, pierde valor el hallazgo de dicho evento, por lo que se vuelve muy relevante detectarlo tempranamente. En otras palabras, el valor de los datos es dependiente de tiempos pequeños; siendo D los datos en cuestión y t el tiempo tenemos:

Hay diversos intereses por los que una organización puede querer aplicar analítica en tiempo real, algunos ejemplos: 

  • una organización de e-commerce va a querer disponibilidad absoluta de su sitio, para no perder ventas.
  • una organización que ya tenga conocimiento de ciertos comportamientos fraudulentos, va a querer detectar cuanto antes un nuevo hecho y anticiparse al mismo.
  • un área de soporte de TI, va a querer tener monitoreados todos los recursos que tienen a su cargo y poder reaccionar cuanto antes de una falla,
  • en cualquier escenario de mantenimiento de máquinas, al ganar madurez en análisis predictivo, poder predecir una falla.

Requerimientos

Qué necesitan las organizaciones para estar listas para poder aplicarlas exitosamente, algunos ejemplos:

  • para toda fuente que sea necesario que estén los datos para el análisis en tiempo real, que esté la capacidad de una vez generado un dato, sea enviado lo antes posible al sistema que hace el procesamiento en tiempo real. Es deseable que se envíe de a registros, evitando el clásico buffer de datos en x tiempo.
  • que los encargados de implementar el análisis en tiempo real, cuenten con las tecnologías adecuadas para recibir y procesar los datos cuanto antes.
  • tener claro qué tipos de análisis se quieren hacer. Veremos más adelante algunas opciones.
  • contar con la red necesaria en la organización, para que los datos puedan transferirse adecuadamente con la menor latencia posible.
  • contar con hardware y software necesarios. Es posible que se necesite llevar adelante una estrategia de alta disponibilidad y minimizar los impactos de todos los puntos posibles de fallas.
  • poner en marcha el primer pipeline en tiempo real, analizar problemas que surjan, solucionarlos e iterar. 

Por lo mencionado anteriormente, hay muchos puntos posibles de falla o que pueden impactar en la performance de la solución. Por lo que hay que analizar el pipeline completo y también una vez puesto en marcha el pipeline, analizar el comportamiento en cada punto.

Tipos de análisis en tiempo real

Hay muchos tipos de análisis que pueden llevarse adelante, pueden darse híbridos o también surgir nuevos tipos en base a las necesidades de la organización.

  • Monitorización: ver los datos que se van generando en tiempo real. Un caso podría ser analizar la flota de vehículos de una empresa en tiempo real.
  • Transformar y enriquecer  datos: modificar los datos que van llegando para que tengan más sentido en los análisis, por ejemplo filtrarlos, aplicar reglas simples a los diferentes campos.
  • Agregaciones: hacer agregaciones en ventanas de tiempo, ejemplo cantidad de ventas cada 30 minutos. También podría ser usar herramientas que ingesten los datos ni bien llegan en un modelo de tiempo, dimensiones y medidas; al estilo cubos de BI pero agregando al modelo cada registro que va llegando y pudiendo consultarlos ni bien llegan con un mínimo delay.
  • Análisis cruzando con históricos: se podría querer cruzar datos que van llegando con datos históricos, persistidos en bases de datos/big data/herramientas de indexado/etc. Hoy en día las herramientas soportan Streaming SQL, por lo que se usaría una herramienta muy utilizada en los análisis tradicionales y bajando los requerimientos de aprendizaje de nuevas herramientas.
  • Detectar hechos particulares con patrones: en datos en reposo se puede buscar patrones que ayuden a detectar escenarios deseados y ejecutar un proceso en la herramienta de streaming con esos patrones para detectar esos escenarios deseados cuanto antes.
  • Inferir nuevos patrones: por ejemplo utilizando series de tiempo se podrían identificar comportamientos que están sucediendo.

Hay muchísimos ejemplos de cosas que se podrían hacer, y hay casos que son más simples de llevar adelante y se puede comenzar con ellos para empezar a generar cultura de tiempo real en la organización.

Hoy en día hay herramientas que dan muchas posibilidades y flexibilidad, para hacer análisis en tiempo real adaptados a lo que necesita la organización.

Acciones

En caso de que se desee reaccionar ante la detección de un evento puntual, va a ser deseable disparar una o varias acciones.

Algunos ejemplos

  • disparar alerta cuando se alcance un límite (threshold) en concreto. Por ejemplo, si un vehículo de la empresa sobrepasa la velocidad permitida. Una alerta puede ser, enviar un mail, sms, llamada, etc.
  • disparar alerta utilizando los datos que van obteniéndose en tiempo real con otros datos históricos o definidos previamente. Siguiendo el caso de los vehículos de una empresa, definiendo zonas por donde puede andar cada vehículo, se puede generar una alerta en caso de que algunos de ellos salgan de las zonas definidas.
  • ejecutar un proceso al detectar cierto escenario o evento. Por ejemplo si detecto un problema de calidad de datos, puedo lanzar un proceso que se encargue de hacerle el tratamiento correspondiente. 
  • reaccionar elásticamente: en un escenario que sean eventos esporádicos y se cuente con una solución serverless (muy común en entornos cloud), al detectar un escenario particular en la llegada de los datos, se puede disparar un proceso puntual sin tener un servidor dedicado, lo que hace que la organización se ahorre tener un servidor corriendo todo el tiempo para esos eventos esporádicos.
  • también podría ser de interés armar un pipeline tan complejo somo se quiera, en base a la detección de un evento puntual.

Herramientas

No se puede cubrir todos los escenarios posibles con las mismas herramientas, y depende principalmente del tipo de análisis de datos en tiempo real se quiera hacer, del volúmen que se quiera manejar.

Desde el punto de vista del sistema de análisis en tiempo real, una buena base, sería:

  • contar con un broker de mensajes: sería el encargado de hacer un buffer de registros 
  • engine de procesamiento de datos en tiempo real: sería el encargado de hacer el análisis y disparar acciones/generar resultados (algunos ejemplos: Spark Structured Streaming, Flink, Storm)

En suma, con herramientas que cubran los puntos anteriores, analizando el tipo de análisis que se quiere llevar a cabo y analizando las herramientas que se tiene disponible en la organización (ejemplo herramientas de movimientos de datos, herramientas de visualización, etc), se puede armar una buena solución de análisis de datos en tiempo real.

Gustavo Gabrielli