#dotNetSpain2015: Análisis masivo de datos en la era de IoT

Este post resume la sesión ofrecida durante el pasado evento de dotNetSpain Conference 2015 en la que se habló sobre procesado de datos para IoT utilizado Azure.

IoT y la generación de datos

En esta nueva era de Internet of Things todos los dispositivos están conectados a Internet ofreciendo servicios, facilitando la vida de las personas y generando información que permite a las empresas mejorar en todos los aspectos.

Todos esos datos que se generan desde todos esos dispositivos, ya sean software o hardware, hay que analizarlos para extraer inteligencia de negocio que utilizar en las decisiones del mismo, pero con toda la cantidad de datos generan es todo un desafío poder hacerlo de una forma organizada. Además de eso hay que distinguir entre datos almacenados y estáticos y datos en movimiento. ¿Por qué esta distinción? Bueno puede que los datos que se generen se deseen almacenar para después utilizar alguna plataforma de datos Big Data en la que extraer información sobre esos datos. Pero hay otro tipo de datos, los datos en movimiento, que solamente son necesarios durante un periodo de tiempo muy corto, entre minutos, horas o incluso días, pero que después no es necesario almacenarlo o procesarlo.

Datos en movimiento

En este tipo de datos, en movimiento, tener la posibilidad de analizar esos datos en tiempo real es una necesidad fundamental para poder darle sentido a ese flujo de datos. Se puede pensar por ejemplo en una planta donde se siembran verduras donde hay unos sensores que miden la humedad relativa del ambiente y del sustrato donde están plantadas las verduras. Estos sensores se conectan a un sistema que almacena y posteriormente analiza esta información para ver la calidad del sustrato y del ambiente. Pero, ¿no sería mejor, que el sistema pudiera tener un mecanismo de compensación para aumentar la humedad del ambiente y del sustrato en base a los datos que se producen en tiempo real sobre los sensores?, eso es justamente a lo que se refieren los datos en movimiento.

Pero analizar esos datos en movimiento es todo un desafío, porque representa crear toda una infraestructura para poder analizar esos datos en tiempo real, conforme se generen, y tomar una decisión de negocio.

clip_image002

Por suerte en ese sentido Azure ofrece un sistema muy flexible multiplataforma que permite que las empresas integren sus soluciones de IoT y análisis de datos.

Se puede resumir las acciones a hacer en ingesta de datos, análisis de datos y acciones de negocio.

clip_image004

Ingesta de datos

En este primer paso de ingesta de datos, lo que se desea es tener un mecanismo flexible y extensible a todo tipo de dispositivos, que permita que los dispositivos sean capaces de enviar toda la información de una forma cómoda utilizado formatos de documento, como JSON, CSV o Avro.

Dentro de Azure existe un servicio llamado Azure Event Hubs que permite la ingesta de datos.

Events Hubs

Events Hubs es un servicio de conexión de eventos que forma parte de Service Bus, el servicio de mensajería de bus empresaria ofrecida como servicio dentro de Azure.

Event Hub es el servicio que va a permitir que todos los dispositivos, envíen información a Azure para que después se pueda analizar en tiempo real.

clip_image006

En esta imagen se puede ver la arquitectura del servicio, en la que hay dos partes bien diferenciadas los producidores de eventos y los consumidores de eventos.

Los producidores se encargar de enviar la información al hub de eventos utilizado una de las particiones que tenga el servicio creado.

Los consumidores utiliza un concepto de grupo de consumo que permite tener diferentes vistas del estado del hub de evento en base a diferentes configuraciones. Como el servicio utiliza el concepto de tiempo para ordenar los eventos que se producen, los consumidores pueden especificar en qué posición en el tiempo de hub de evento desean empezar a consumir los eventos. Esta información es diferente para cada grupo de consumo.

De esta manera se tiene una infraestructura flexible, para poder enviar datos utilizando un endpoit HTTP o TCP, dependiendo de las capacidades del dispositivo, y tener un mecanismo para poder leer esos mensajes conforme se van generando.

Análisis de datos

El siguiente paso del proceso, es el análisis de todos esos datos generados a través del Event Hub. Para ello Azure ofrece el servicio de Stream Analytics que permite que los usuarios sean capaces de analizar esa información conforme se envía al Event Hub y genera una salida con datos que utilizar para todas decisiones de negocio.

Stream Analytics

Stream Analytics es un servicio que permite procesar millones de eventos por segundo y que es muy fácil de poner en marcha para empezar a trabajar. Todo se configura directamente desde el portal de administración de Azure y no es necesario configurar nada más.

Este servicio utiliza un lenguaje de consulta muy parecido al SQL con la que se pueden construir las consultas que el sistema ejecutará para analizar los datos provenientes de Event Hub.

clip_image008

Este es el tipo de consultas que se pueden definir en el sistema.

Como se ha comentado la forma de empezar a trabajar es directamente desde el portal de Azure, aquí se muestra una captura de la vista de consulta de una de los Stream Analytics.

clip_image010

Cuando se define una entrada de datos para el servicio se ha definir el formato de entrada de los elementos, así como la codificación, de esta manera Stream Analytics podrá saber el formato del contenido y así se podrán hacer consultas en base a los datos. En el ejemplo que se muestra en pantalla se procesa datos basados en JSON.

clip_image011

Demo Twitter

En la demo del evento se utilizó el flujo de Twitts en tiempo real del propio evento. Se pensó en esta demo para tener un flujo de datos en movimiento y poder hacer preguntas sobre ese flujo de Twitts. El código fuente está dividido en tres secciones, un proyecto llamado DotNetSpain.StreamAnalytics.TwitterSender que se encarga de utilizar la API de Streaming de Twitter para enviar esos Twitts directamente al Event Hubs para que se puedan analizar.

El proyecto Web DotNetSpain.StreamAnalytcis.Web se encarga de visualizar la información utilizando SignalR.

El código fuente de la solución se puede clonar desde GitHub

ver-github1 

Descarga la presentación de PowerPoint.

Luis Guerrero.

Technical Evengalist Azure.

@guerrerotook