Ir al contenido principal

Big Data & Cloud


Las soluciones de Big Data se suelen describir en torno al desafío de la administración y operación del dato, que debido al incremento en el volumen, velocidad y variedad de los datos, no pueden ser resueltos sobre bases de datos y aproximaciones tradicionales. En los últimos años han surgido diferentes compañías que aportan un set de soluciones en cloud con las cuales se pueden desarrollar y afrontar problemas en el desarrollo e implantación de una solución Big Data:
  • Amazon
  • IBM
  • Google
  • Microsoft


            Todas ellas aportan soluciones con diferentes enfoques en sus clouds,vamos a centrarnos en la solución propuesta por Amazon sobre su cloud Amazon Web Services. Proporciona una cartera amplia y totalmente integrada de servicios en la nube que permiten desarrollar e implantar soluciones de Big Data sin necesidad del aprovisionamiento de hardware, en referencia a su mantenimiento y la escalabilidad de infraestructura, focalizando los proyectos en el descubrimiento de nueva información. Además nos vamos a beneficiar de la incorporación de nuevas tecnologías sin que requiera una inversión a largo plazo.

Disponibilidad inmediata
La mayoría de las tecnologías de Big Data requieren clústeres de servidores de gran tamaño, lo que requiere largos ciclos de configuración y aprovisionamiento. Con AWS se puede implementar la infraestructura en tiempo reducidos. Se incrementa la productividad de los equipos reduciendo los ciclos de implantación de los proyectos.

Capacidades amplias y profundas
Las cargas de trabajo de Big Data son tan diversas como los recursos de datos que analizan. Por medio de una plataforma amplia se puede crear aplicaciones diversas con independencia de las "tres V". Desde AWS se proporcionan cada año nuevos servicios que pueden ser integrados en nuevas aplicaciones o las ya existentes.

Seguridad
Los Big Data a menudo emplean datos confidenciales, se requiere proteger los recursos y la infraestructura sin perder agilidad. Desde AWS se proporcionan capacidades en instalaciones, redes, software y procesos empresariales. Se realizan auditorías de los entornos, de acuerdo con certificaciones como ISO 27001, FedRAMP, DoD SRG y PCI DSS.

Reducción de Costes

Los Big Data tradicionales requieren amplias capacidades hardware, mantenimiento de software, así como coste energético. Desde AWS se proporciona, virtualización de servidores, arquitecturas orientadas a servicios por medio de pago por uso, midiendo los costes al segundo, con el consiguiente beneficio de no pagar siempre que no estemos usando los servicios e infraestructura donde resida nuestra aplicación.


Arquitectura

Para la definición de una arquitectura que podamos emplear en las soluciones de Big Data debemos contestar a una serie de preguntas:
¿Existe una arquitectura de referencia?
¿Qué herramientas debemos de usar?
¿Cómo? y ¿Por qué?



Las soluciones de Big Data se basan en cuatro fases o principios que debemos resolver:
  • Ingesta de datos, se trata de una primera fase sobre la cual se procede a la captura y procesamiento de los mismos. Estos datos pueden generarse de forma dinámica o bien cargados desde otras fuentes, requiriendo un proceso de ETL, que en función de si se trata de datos estructurados o no estructurado (como pueden ser textos, imágenes, video, etc) dará como resultado un stream de información que será almacenado en nuestro data lake de información.
  • Almacenamiento. Los datos serán almacenados en la nueve y en función de su temperatura podrán estar persistido por medio de diferentes servicios que nos permitan un acceso acorde a los mismos, desde un punto de vista de latencia y costes de almacenamiento.
  • Análisis y procesamiento de los datos. Si queremos extraer conocimiento deberemos aplicar algoritmos sobre los datos que nos permitan su extracción. Podemos realizar un análisis descriptivo, que permiten al usuario responder a la pregunta ¿Qué ha pasado y por qué?, otro enfoque sería desarrollar un análisis predictivo, que ayuda a los usuarios a determinar probabilidades de que se produzca un evento determinado a partir de una variable, y por último podemos desarrollar recomendaciones al usuario que responden ¿Qué debería de hacer si pasa "x"?
  • Consumir y visualizar datos. Consiste en obtener información procesable y valiosa a partir de los recursos de datos. Las herramientas deben permitir una visualización ágil aportando un componente de inteligencia empresarial de autoservicio que permita a los usuarios explorar el conjunto de datos de forma rápida y sencilla desde diferentes planos. En función del role del usuario podrán consumir la información como "predicciones" estadísticas (análisis predictivo) o como acciones recomendadas (análisis prescriptivo).



Los principios de arquitectura de una solución se van a basar:
  • Bus de datos desacoplado. En AWS por medio de la integración de un conjunto de servicios vamos a dar solución a los 4 principios que nos muestra la imagen previa.
  • Uso de las herramientas adecuadas para cada una de las tareas, por ejemplo debemos analizar si vamos a disponer de datos en tiempo real, que latencia puede admitir nuestra solución, si vamos a disponer de datos estructurados, etc.
  • Al aprovechar servicios administrados dentro de AWS vamos a disponer de una serie de características como son escalabilidad, disponibilidad, confiabilidad, seguridad.
  • No tenemos por qué diseñar la arquitectura basada únicamente en servicios, podemos introducir infraestructura dentro de AWS proporcionada sobre EC2 sobre la cual podemos disponer de clúster específicos que nos aporten la solución que más convenga.

Arquitectura Serverless

Una de las primeras preguntas que nos podemos hacer a la hora de diseñar una solución de Big Data ¿es posible construir la sin servidores? la respuesta es sí, por medio de arquitecturas  de tipo Serverless. La informática sin servidor (Serverless) permite crear y ejecutar aplicaciones y servicios sin disponer de una infraestructura física que nos de apoyo. Estas aplicaciones no requiere que se aprovisione, escale y administren servidores, pudiendo crear cualquier aplicación de este tipo o servicios backend. Nos centraremos en el problema a resolver, no en la infraestructura.
Para diseñas estas arquitecturas debemos resolver 3 aspectos:
  • Deben ser totalmente administradas. Sin aprovisionamiento, alta disponibilidad.
  • Escalado continuo. Debe funcionar de forma automática sin que se produzca una degradación significativa en los tiempos de respuesta, además debe ser ascendente y descendente.
  • Centrarnos en la productividad de los desarrollos. Lo importante es el código que soluciona los problemas a resolver, no la plataforma y sus problemas, esto reduce el tiempo de acceso de las soluciones al mercado.


Estas arquitecturas dentro de AWS se centran en 4 ejes fundamentales:
  • Computación, aportado por AWS Lambda.
  • API Proxy, aportado por Amazon API GateWay, permite a los desarrolladores la creación, publicación, mantenimiento, monitorización y protección del API.
  • Almacenamiento, aportado por medio de Amazon S3, permite el almacenamiento de objetos  en un entorno seguro, persistente y altamente escalable.
  • Base de Datos, aportado por Amazon DynamoDB, se trata de un servicio de BD NoSQL, rápido y flexible con latencias de milisegundos. Compatible con modelos de almacenamiento de clave valor y documentos. En caso de emplear bases de datos SQL podemos emplear Amazon Aurora.
   

Escenarios

AWS proporciona un conjunto de servicios que permiten crear e implementar aplicaciones de Big Data de forma rápida y sencilla, permitiendo una escalabilidad desde diferentes planos: almacenamiento de datos, análisis de flujos en tiempo real, procesos de ETL y procesamiento de IoT. A lo largo de este post hemos hablado de un conjunto de servicios presentes en la plataforma que nos permiten dar respuesta a la construcción de  estas soluciones.

Una de las posibilidades más interesantes es la construcción de una solución siguiendo arquitecturas de tipo Serverless (Sin servidor) que nos ofrecen un conjunto de ventajas:

  • No hay que administrar servidores, recudiendo sensiblemente los costes de inversión, mantenimiento y administración de los mismos.
  • Escalado flexible. La aplicación escala de forma automática en función de sus necesidades, por ejemplo incremento de memoria. etc.
  • Alta disponibilidad. Las aplicaciones disponen de disponibilidad y tolerancia a errores integradas, no se requiere diseñar el software teniendo en cuenta estas necesidades.
  • Reducción de costes. Se paga por el consumo real, no se requiere aprovisionar previamente ni en exceso la capacidad de los elementos como por ejemplo computo y almacenamiento.
  • Tiempos de desarrollo y despliegues muy cortos. Nos centramos en la resolución del problema, no en la infraestructura de soporte y sus procesos de despliegue.



Se pueden plantear soluciones tipo con el conjunto de servicios en AWS:

  • Una solución básica, si partimos de la base de que en nuestra organización no hemos desarrollado ningún proyecto Big Data, sería construir la misma a partir de  Amazon S3 y Athena, de esta forma podríamos de forma rápida empezar a trabajar sobre nuestros datos.
  • Una solución compleja introduciría no sólo datos, también flujos de información procedentes de otras fuentes de información, junto con un procesamiento de la misma, situando a QuickSight como herramienta para consumir la información.


En la primera solución podemos partir de un conjunto de Data Stores, que podrán ser de diferentes tipos, incluido Amazon S3, que por medio de AWS Glue Data Catalog podremos componer los metadatos necesarios para que podamos trabajar con Athena comenzando el análisis de los datos.



En el siguiente ejemplo, la arquitectura es más compleja. Dispondremos de dos puntos de entrada una aplicación web que por medio de un API REST almacenará información relevante dentro de una base de datos NoSQL, en nuestro caso DynamoBD (aunque podríamos haber partido de Aurora) y por medio de un flujo de información junto con su función de proceso AWS Lambda asociada va a recoger por medio de Kinesis Firehose información relevante dentro de un Bucket determinado en Amazon S3. Otro flujo de entrada sería desde dispositivos IoT (podrían también ser aplicaciones móviles) que por medio de Kinesis Firehose y Kinesis Analytics permitirían almacenar la información procesada en su Bucket correspondiente (podríamos tener formatos estructurados como en este caso, ficheros JSON o bien CSV) que posteriormente van a ser procesados desde QuickSight.




Otra posibilidad es el desarrollo de una arquitectura por medio de Amazon EMR, que en caso de disponer ya de una infraestructura Big Data, por ejemplo, disponemos ya de un conjunto de algoritmos desarrollados sobre una plataforma de tipo Spark. Nos va a permitir integrar estas piezas de software, añadiendo nuevas funcionalidades. En la imagen siguiente vemos algunas de las posibilidades de integración de Amazon EMR, por medio de conectores, sobre herramientas que hemos mencionado en puntos anteriores, accediendo a Amazon S3 directamente o manejando flujos de información procedentes de Kinesis o Kafka.




La escalabilidad de las soluciones queda de manifiesto en los ejemplos propuestos. Además debemos tener en cuenta que se ha planteado un conjunto mínimo de los servicios presentes en la plataforma. Como vemos las posibilidades son significativas, además no hemos mencionado en ningún momento como integrar Machine Learning dentro de nuestras soluciones, aún cuando ya las tendremos disponibles, por medio de Spark y su librería MLLib, sobre Amazon EMR, AWS está comenzando a desplegar servicios como Amazon Lex, Amazon Rekognition que deben ser tenidos en cuenta dentro de este ámbito.

En próximos post vamos a plantear el análisis de algunos de los servicios propuestos, en cualquier caso la mejor fuente de información será la web de Amazon.

https://aws.amazon.com/es/

Comentarios

Entradas populares de este blog

Machine Learning soluciones a los problemas

  El aprendizaje automático, o Machine Learning (ML), es una rama de la inteligencia artificial que se centra en la creación de sistemas que pueden aprender y mejorar a partir de la experiencia sin ser explícitamente programados para cada tarea específica. Este campo ha ganado una gran relevancia en los últimos tiempos debido a los avances en el procesamiento de datos, la disponibilidad de grandes volúmenes de información y el incremento en la capacidad de computación y soluciones Cloud. Vamos a explorar algunos conceptos fundamentales de ML, que problemas surgen en la práctica, como podemos limpiar los datos y que técnicas podemos emplear, que es la validación cruzada y algunos desafíos específicos que plantean los algoritmos. Conceptos Fundamentales de Machine Learning Tipos de Aprendizaje Aprendizaje Supervisado : En este tipo de aprendizaje, el modelo se entrena utilizando un conjunto de datos etiquetados, lo que significa que cada ejemplo de entrenamiento viene con una etiquet...

Despliegue de un IDP en Cognito AWS e Integración con una Web en Sprint Boot

  Introducción En este artículo vamos a describir el proceso de despliegue de un proveedor de identidad (IDP) en Amazon Cognito e integración con una aplicación web desarrollada en Sprint. Se detallan las fases necesarias, las tareas principales dentro de cada fase, junto con recomendaciones para asegurar un proceso exitoso. Fases Necesarias Configuración de Cognito En esta fase se creará el pool de usuarios, el grupo de usuarios y las políticas de autenticación y autorización en Cognito. Tareas Principales: Crear un pool de usuarios en Cognito para gestionar las identidades de los usuarios. Definir los atributos de usuario necesarios para la autenticación y autorización. Configurar las políticas de autenticación para determinar los métodos de acceso (por ejemplo, nombre de usuario y contraseña, autenticación social). Crear un grupo de usuarios para agrupar a los usuarios con permisos específicos. Definir las políticas de autorización para determinar los permisos de acceso a los re...

El Falso Mito de la Planificación en Scrum

 Introducción Hoy nos vamos a salir un poco del tema principal y vamos a hablar un poco de Scrum (y el mito para algunos de porque no tienen planificaciones).  Scrum es un marco de trabajo ágil para la gestión de proyectos, ha ganado popularidad en los últimos años debido a su enfoque flexible y adaptativo. Sin embargo, un mito común que rodea a Scrum es que no requiere planificación. Este artículo tiene como objetivo desmitificar esta idea explorando los elementos que apoyan y contradicen el mito de la planificación en Scrum, y llegar a conclusiones sobre la importancia de la planificación en este marco de trabajo. Elementos que Apoyan el Mito Énfasis en el Empirismo: Scrum promueve un enfoque empírico, donde el aprendizaje y la adaptación se basan en la experiencia y la retroalimentación. Esto puede llevar a la idea de que la planificación detallada no es necesaria, ya que los planes pueden cambiar a medida que avanza el proyecto. Ciclos Cortos de Desarrollo: Scrum se basa ...