Arquitectura Big Data en la nube

A medida que nos convertimos en una sociedad más digital, la cantidad de datos que se crean y recolectan crecen significativamente. La velocidad a la que esto sucede responde a una aceleración vertiginosa, de modo que el manejo de estos datos se convierte en un desafío imposible abarcar mediante las herramientas de analítica tradicionales.

No sorprende que la computación en la nube haya arrasado literalmente al mundo. Para la mayoría de las empresas el reto era cerrar la brecha entre los datos que se generan y los datos que pueden finalmente pueden analizarse de manera efectiva. Se trataba de innovar para sobrevivir y los tiempos en los que esta lucha se gestaba en enormes salas de servidores locales han terminado por paso a la nube.

Más rentables, potentes y seguras, las herramientas y tecnologías de Big Data ofrecen oportunidades para poder para analizar los datos de manera eficiente y comprender mejor las preferencias del cliente, obtener un ventaja competitiva en el mercado y hacer crecer su negocio.

Las arquitecturas de gestión han evolucionado a partir del almacenamiento de datos tradicional a arquitecturas más complejas que aborden más requisitos, como procesamiento en tiempo real y por lotes; datos estructurados y no estructurados; alta velocidad, etc.

No es de extrañar por tanto que los principales proveedores de la industria estén invirtiendo ingente cantidad de recursos en renovar su hardware, software e infraestructura de red global para mantenerse en vanguardia y obtener una mayor participación en el mercado, lo que ha resultado en una mejora competitiva en rendimiento y precios que posibilita su democratización.

En esta “guerra”, cuando pensamos en proveedores de computación en la nube, resulta fácil referirnos a los tres gigantes de la industria: Azure, Google Cloud y AWS. Hoy vamos a hablar de ellos y diferentes casos de uso para los distintos entornos cloud.

Antes de continuar conviene hacer una pequeña tabla de equivalencias entre los diferentes proveedores para no perdernos y que pueda servirnos de referencia más adelante.


 
Amazon   Microsoft Azure Google Cloud
Amazon EC2         Azure Virtual Machines Google Compute Engine
Amazon Kinesis Azure Eventhubs Google PubSub
Amazon Glue Azure Function / Databricks Google Cloud data Flow

Amazon S3

Azure Data Lake gen2 Google Cloud Storage
Amazon ML Azure Machine Learning Studio Google Cloud AI
Amazon Simple Notification Service Azure Notification Hub Google Firebase Cloud Messaging

Ejemplo 1: Análisis de sentimientos de las redes sociales

Supongamos el siguiente escenario. Una gran empresa de alimentación está lanzando diferentes productos al mercado como parte de su estrategia de expansión y diversificación. La compañía necesita monitorizar las redes sociales para entender qué productos los consumidores disfrutan y cuáles no. El objetivo es centrarse en la experiencia que describen los consumidores con sus productos y asegurarse que éstos sigan siendo relevantes de modo que sea posible planificar el futuro y centrar su estrategia en aquellos productos que funcionan y mejorar o reemplazar aquellos que no basándose en los comentarios de los clientes. La compañía necesita por tanto capturar las siguientes ideas de las redes sociales:

  • Comprender cómo los consumidores usan sus productos
  • Garantizar la satisfacción del cliente.
  • Planificar futuras hojas de ruta

Capturar los datos de varias redes sociales es relativamente fácil, pero el desafío es construir la inteligencia mediante programación. Una vez que los datos llegan, la empresa quiere poder analizarlos y clasificarlos de manera rentable y programática.

Una vez delimitadas que redes sociales serán monitorizadas, es posible, mediante el uso de sus API, crear una aplicación en Amazon EC2 que sondee esos sitios. Con Amazon Kinesis creamos una transmisión que nutrirá nuestro aplicativo mediante múltiples fuentes de datos de manera simultánea.

Los datos sin procesar se almacenan en Amazon S3 que son procesados en lote mediante modelos basados en Amazon ML (machine learning) para realizar análisis predictivos y rastrear las tendencias de compra y opinión de los consumidores.

Para procesar y normalizar y solicitar predicciones de Amazon ML los datos será necesario utilizar Lambda.

Análisis de sentimientos de las redes sociales

 

Amazon ML se utiliza para hacer predicciones sobre los datos de entrada. Por ejemplo, se puede construir un modelo ML para analizar un comentario en las redes sociales para determinar si el cliente expresó un sentimiento negativo sobre un producto.

Finalmente, los datos procesables se envían a Amazon SNS utilizando Lambda, y se entregan a los recursos adecuados por mensaje de texto o correo electrónico para una mayor investigación. Las métricas adicionales sobre un modelo específico se pueden mostrar gráficamente a través de la consola, como: precisión, tasa de falsos positivos, precisión y recuperación.

Mediante el uso de una combinación de Amazon Kinesis Data Streams, Lambda, Amazon ML y Amazon SES, dispondremos de una plataforma de escucha social escalable y fácilmente personalizable.

Ejemplo 2: Arquitectura de IoT

Llega el momento de hablar del Internet de las cosas. En un mundo conectado los sensores, aplicaciones y dispositivos inteligentes tienen la capacidad de poder transformar el mundo en el que vivimos, posibilitando nuevos negocios y oportunidades de crecimiento con los servicios de Internet de las cosas (IoT).

Las aplicaciones de IoT se pueden describir como Cosas (o dispositivos), enviando datos o eventos que se utilizan para generar Insights, que se utilizan para generar acciones para ayudar a mejorar un negocio o proceso.

En el siguiente ejemplo podemos hablar de una empresa que llamaremos “cocheCar”, que se dedica a la fabricación de maquinaria de alta precisión para la fabricación de vehículos, sabe que si una de sus máquinas falla, toda la fábrica deja de producir. Invierten mucho en monitorizarlas constantemente, y poder advertir con tiempo de sobra un posible, fallo, para que el tiempo de parada sea mínimo.

Datos como consumo eléctrico, presión, temperatura, horas de uso, tiempo en realizar una tarea y otros parámetros son de vital importancia para evaluar si alguna de las máquinas de la cadena de montaje está funcionando como se esperaba. La información proporcionada luego se utilizará priorizar proactivamente el cronograma de mantenimiento ahorrando costes a corto, medio y largo plazo.

Microsoft Azure ofrece una ingente cantidad de recursos y documentación para diseñar y desplegar nuestra solución IoT.

En el núcleo, una aplicación IoT consta de los siguientes subsistemas:

  1. Dispositivos (y/o puertas de enlace de borde locales) que tener la capacidad de registrarse de forma segura en la nube y opciones de conectividad para enviar y recibir datos con la nube.
  2. Un servicio de puerta de enlace en la nube, o centro, para aceptar de forma segura esos datos y proporcionar capacidades de administración de dispositivos.
  3. Estos dispositivos procesan los procesadores que consumen esos datos, se integran con los procesos comerciales y colocan los datos en almacenamiento.
  4. Una interfaz de usuario para visualizar datos de telemetría y facilitar la administración de dispositivos.

Azure IoT Edge proporciona la capa necesaria para poner la primera pieza de nuestro proyecto al facilitar la integración y conexión de nuestro dispositivos on-premise con nuestro proyecto en la nube.

Una vez establecida la comunicación a través de nuestra pasarela (IoT Hub) podemos utilizar diferentes protocolos para la comunicación de datos (por ejemplo podemos transmitir los datos de telemetría mediante JSON) combinando diferentes servicios.

Los datos obtenidos pueden ser almacenados en un “storage” o base de datos basada en Azure Cosmos DB que proporciona funcionalidades avanzadas para la gestión de datos y un entorno seguro a un precio relativamente bajo si lo comparamos con lo que podría llegar a costar intentar realizar nuestro propio despliegue de servidores en local y su infraestructura de red.

Para manejar estos datos por supuesto necesitaremos un subsistema basado en Machine Learning (ML) que permitirá el aprendizaje automático frente a los datos capturados previamente. Con el tiempo esto permitirá un mantenimiento predictivo a través de Azure Machine Learning.

Ya por último queda encargamos del análisis y representación de datos. Azure cuenta con el servicio Azure Time Series Insights (TSI) que permite un análisis interactivo de datos, presentación en diferentes vistas como mapas de calor, dashboards, etc. Pero quizá lo mejor es que TSI también proporciona la posibilidad de interconectar otras aplicaciones web a través de sus REST APIs permitiendo implementar otras aplicaciones desarrolladas, por ejemplo, mediante controles JavaScript. Lo cual permite que podamos realizar un desarrollo personalizado de forma muy ágil en función de nuestras necesidades.

El resultado es que mediante una arquitectura Big Data sencilla basada en cloud, en este ejemplo con Azure pero podríamos utilizar otras opciones equivalentes con proveedores como Amazon o Google, podemos monitorizar el comportamiento de nuestros dispositivos IoT en cualquier lugar.

Ejemplo 3: Distribución de datos a nivel global

Cuando una empresa crece no sólo lo hace a nivel de facturación, también su infraestructura se vuelve más compleja y con diferentes ubicaciones dispersas de forma geográfica. Mientras esto sucede la empresa genera datos propios y gestiona las solicitudes de sus clientes casi en tiempo real.

Por ejemplo, imaginemos una empresa dedicada a la distribución, a la atención al cliente o a la publicidad digital, en donde los clientes esperan tiempos de respuesta muy cortos desde que se abre un ticket de soporte hasta recibir respuesta sin importar su ubicación geográfica. Esto ocurre muy a menudo pues cada vez más se tiende a la deslocalización e implementar una solución basada en una única base de datos centralizada ya no es posible. La necesidad de un servicio resistente a fallas y picos de demanda hacen necesario la migración a la nube en combinación con otras soluciones híbridas.

En este ejemplo pondremos como ejemplo lo que Google Cloud puede ofrecer.

Existen tres arquitecturas de distribución de datos de ejemplo:

  • Implementación híbrida, que consiste en GCP y servicios locales. Cuando se quiere mantener servicios locales, pero también aprovechar las características de GCP.
  • Implementación híbrida, que consiste en GCP y otras plataformas de proveedores de servicios en la nube. Cuando se quiere mantener las operaciones de tu proveedor de servicios en la nube actual, pero también incluir algunas características de GCP y configurar los dos sistemas para que se comuniquen.
  • GCP que usa varias regiones. Cuando se quiere admitir una transferencia de datos casi síncrona, tal vez a escala global. Configurar GCP en varias regiones permite una transferencia de datos muy rápida y casi simultánea en todo el mundo.

Quizá la más común es la primera. En donde una organización combina servicios locales con GCP en la nube aprovechando las ventajas de ambas. En el diagrama siguiente, se muestra un ejemplo de una arquitectura híbrida de este tipo.

Google Cloud Platform

Fuente imagen: Google

Mediante Google Cloud Storage los datos están presentes en ambos entornos. En este nivel una empresa puede simplemente usar la nube como una copia de seguridad de sus archivos locales o ir un poco más allá mediante aplicaciones de App Engine y así procesar los datos que se almacenan y mantenerlos sincronizados con las redes locales.

La interconexión puede hacerse de diferentes maneras, lo más común es usar una API REST aunque hay que tener en cuenta que las solicitudes de REST suelen ser síncronas y bloquean a los clientes hasta que se muestren los resultados. Para mitigarlo App Engine proporciona un ajuste de escala para aumentar la capacidad de nuestro entorno y así mantener la latencia de llamadas síncronas lo más baja posible.

Las aplicaciones envían mensajes de forma directa a Google Cloud. Estos mensajes se pueden recuperar y procesar de forma asíncrona con Cloud Functions, Cloud Dataflow, aplicaciones que se ejecutan en Compute Engine y otros métodos. Los datos son almacenados en las bases de datos tanto locales como las administradas por por Cloud SQL.

Para completar el conjunto se puede añadir otra capa adicional. Mediante Google Cloud AI es posible añadir capacidades Machine Learning a las API disponibles en su nube. Esto es simplemente ideal para las compañías que buscan capacidades de ML personalizadas y muy específicas.

Conclusiones:

A medida que se generan y recopilan cada vez más datos, el análisis y tratamiento de datos requiere herramientas escalables, flexibles y de alto rendimiento para proporcionar información de manera oportuna. Sin embargo, las organizaciones se enfrentan a un creciente ecosistema de big data donde surgen nuevas herramientas y "mueren" muy rápidamente.

Por lo tanto, puede ser muy difícil mantener el ritmo y elegir las herramientas adecuadas. La nube y gracias a las soluciones que ofrecen diferentes proveedores como Amazon, Microsoft o Google posibilitan ahorrar costes al tiempo que ayuda a cumplir los estrictos requisitos analíticos de big data y comerciales combinando ambos de la manera más rentable, eficiente y resistente posible. El resultado es una arquitectura flexible y escalable evidenciando lo que comentábamos al comienzo del artículo. El futuro será en la nube o no será.

 

Guía de Posibilidades Profesionales en el Ecosistema de Java