Casi siempre tenemos la costumbre de pensar que Tecnología es todo aquello que es grande, caro y complicado. Bueno, no es cierto! Básicamente la tecnología es el bolígrafo que nos permite dibujar aquello que nos imaginamos, ya sea mediante un lenguaje de programación, mediante un hardware que lo sustenta todo, etc… en éste breve artículo veremos como afrontar la construcción de una pequeña infraestructura de Big Data basada en AWS (Amazon Web Services). Veamos como:
Lo primero que tenemos que hacer es resolver tres simples preguntas:
- ¿Qué tenemos?
- ¿Qué necesitamos?
- ¿Dónde queremos ir?
Quizás, también, tendríamos que añadir: ¿Qué presupuesto tenemos?, pero parto con la idea que: muy poco. Ésta arquitectura no será superior a 1000€ de coste anuales.
Muchas veces nos ponemos a construir cosas sin antes pensarlo bien, ya hemos visto anteriormente las preguntas que vienen a ser la base del todo. Pero, también, es muy importante conocer nuestros Flows de Datos. ¿Realmente los conocenos? O ¿simplemente hemos empezado a construir la arquitectura sin saber que tipología de datos tenemos?. Vayamos más allá, ¿para nosotros que es un Dato?. No olvidemos que un Dato no es lo mismo para nosotros que para otras personas, puede ser algo muy grande o algo muy, muy, muy pequeño.
Quizás, por ejemplo, para nosotros el número de ID que figura en la tarjeta de fidelización de la tienda de electrónica que frecuentamos, pues ya no es válido como dato, simplemente tenemos que guardarlo; pero, para ellos, ese simplemente es un dato que enlazará a muchos otro datos nuestros como por ejemplo: ficha de cliente, facturas, carritos perdidos de la compra, etc… no despreciemos nunca un dato pero tampoco nos estresemos con ello.
Por lo tanto, ¿Qué es el Big Data?. ¿Es aquella típica situación de tenerlo todo guardado en una enorme base de datos? Miremos de diferenciar el Tipo de entrada. Sólo con ello ya tendremos muchas mejoras y, también, enfocada como podría ser nuestra infraestructura más inicial. Por ejemplo supongamos que tenemos éstos tres tipos de datos o, mejor dicho, de Tipología de Datos:
- Datos Transaccionales
- Datos Realtime
- Datos Analíticos
Pensad que un dato, por ejemplo, de facturación no es un dato en Realtime. ¿Qué lo podría ser?. Pues por ejemplo los datos de Google Analytics, que están dándonos información al minuto de lo que está pasando en nuestra web. En realidad si nuestra ficha de cliente no está actualizada al minuto, tampoco pasa nada (depende del tipo de negocio que tengamos, claro…).
Al final, un proceso de Big Data se puede descomponer en tres grandes bloques:
- Ingesta de datos (entrada y primer filtro)
- Almacenamiento de datos (Según tipología de los datos)
- Proceso y explotación de los datos (con aquello datos, ya limpios, podemos lanzar procesos de cálculo posteriores)
Para cada uno de los pasos, tenemos soluciones simples que nos pueden ayudar. Mi recomendación para el primer punto es “Fluentd” que nos permitirá, a partir de un proceso BPM, ir cargando datos a la base de datos que le indiquemos, aplicarle unos mínimos filtros y, luego, mediante los procesos que podemos desarrollar ya sea en “R” o “Python”, por ejemplo, pues acabar de optimizarlos y sacarle el máximo jugo posible.
También, no olvidemos que tenemos posibilidades como “Elasticsearch”, fusionado con “Kibana” (ELK), que nos pueden sacar de más de un apuro si los tenemos correctamente configurados. Aunque Elasticsearch no es propiamente una base de datos, si nos puede ayudar en la indexación de éstos y, luego, mediante Kibana, permitirnos extraer datos analíticos. Aunque, se requerirá de una cocina de los mismos para no pincharlo directamente a los datos en sucio (raw).
En la presentación que se adjunta, a continuación, se pueden observar gráficas que complementa el artículo y que nos permitirán montar en simples máquinas de talla T2.medium o M4.medium auténticos procesos de Big Data por un coste menor de 1000€ anuales en AWS.
Por supuesto que tenemos muchas posibilidades que no hemos contemplado pero, la gracia era poder construir una Arquitectura simple, sin complicaciones y relativamente económica. Aunque, estaré encantado de tener vuestro feedback para mejorar el artículo.