07 diciembre 2016

Big Data LibreCon 2016 - Zylk Industry 4.0 - Compartiendo la experiencia de proyectos de Big Data

Aprovechando la participación Iñigo Sánchez Méndez de Zylk Industry 4.0 en el Librecon 2016 , donde nos explica junto a Angel Barrio de Euskaltel cómo darle valor a los datos recogidos en tiempo real y apoyándose en herramientas open source. Os dejamos la ponencia "Inteligencia del dato aplicada al negocio de las telecomunicaciones" :





Hemos aprovechado para realizar una entrevista a Gustavo Fernandez  Director Técnico en zylk.net :

En los proyectos de Big Data que has participado, que aspecto reseñarías como importante en el ámbito organizativo (implicación del cliente, infraestructuras, visión tecnológica a medio plazo,...)

Es necesario disponer de un caso de uso que aporte valor en un tiempo corto y que a su vez sea tractor del cambio cultural necesario que estos proyectos deben motivar en la organización. No hay que olvidar que este tipo de proyectos deberían ser algo más que artefactos tecnológicos, ya que conllevan un cambio organizativo y un cambio en los paradigma relacionado con el desarrollo IT. De la mano de estos proyectos de Big Data podría hacerse un plan a largo plazo para introducir el desarrollo ágil el devops etc.. si esto no se hace es probable que esta tipología de proyectos, a medio plazo, no puedan ser gestionados en las organizaciones de tamaño medio/grande. Por esa razón en el equipo de zylk hemos añadido ese tipo de perfiles, que facilitan la incorporación de estas nueva formas de hacer a las organizaciones. Por ejemplo es necesario que las organizaciones, a medio plazo, se planteen la necesidad de la figura del CDO.



Como ves actualmente, el posicionamiento y madurez de las soluciones basadas  en Software Libre para dar respuestas a los nuevos paradigmas en Big Data.


En el mundo de las soluciones de este tipo en la actualidad "o se es software libre o no se es". Es algo que en general ya está pasando con casi todo el software pero que en el mundo del Big Data reside en su propia génesis. O se es software libre o no se es. Son casos claros de este cambio todos los proyectos del ecosistema apache hadoop, o la empresa Hortonworks. Recientemente parte del equipo de zylk se desplazó a la apache europe Big Data (http://events.linuxfoundation.org/events/apache-big-data-europe) y en estas conferencias se podía ver claramente que todos "IBM, Microsoft incluso google" apuestan por los modelos de desarrollo abiertos y con licencias open. Allí también pudimos ver que los grandes consumidores, que a su vez son los grandes contributors, de estas tecnologías también usan las soluciones abiertas. Trivago, Linkedin, Soptify etc...

Todo esto se explica de manera bastante natural si entendemos que los desarrolladores que están contribuyendo al desarrollo de estas tecnologías, no las desarrollan con la finalidad última de desarrollar un software, como hacían las empresas de software privativo, sino que las desarrollan porque el core de sus negocios las necesita. Por esa razón son, y no pude ser de otra manera, desarrollos open en comunidad. Han visto la clara ventaja competitiva que supone el software abierto. Un ejemplo de este fenómeno, aunque no pertenece al mundo de apache, son los desarrollos open de Netflix. Casi todas las empresas que en la actualidad juegan un papel fundamental dentro "internet" liberan código y desarrollan en modelos abiertos. AirBnB, Netflix, Facebook, Twitter etc..  Para ser una empresa cool, antes tenías que tener futbolín (google rules), ahora hay que desarrollar proyectos open. Para mi todo se enmarca dentro de una suerte de, responsabilidad social corporativa, de las empresas que dan forma a internet; y no podría, ni debería, ser de otra manera.

En la Analítica de datos, hasta llegar a obtener las beneficios que para las organizaciones tiene el disponer de modelos predictivos de su negocio, por que fases consideras que hay que pasar?  "El reto de pasar del dato y de la información al modelado del negocio, para ser proactivos "

Bueno, creo que hay que pasar por varias fases, y estas cambian dependiendo de la fase de madurez en la que la organización se encuentre. En cualquier caso, desde zylk creemos que la única forma de afrontar proyectos es siguiendo metodologías ágiles. Hay que definir proyectos que resuelvan problemas de negocio y tiene que estar en producción desde el primer día. Un proyecto que no llega a producción, se marchita, y se queda obsoleto en muy poco tiempo. Esto en cuanto a la visión metodológica. También hay una visión técnica y una visión filosófica de todo esto. Hace poco me leí el libro La salvación de lo bello en el que, en una de sus partes, se reflexiona sobre el concepto de conocimiento, verdad e información (http://www.zylk.net/es/web-2-0/blog/-/blogs/la-salvacion-de-lo-bello). Y por último, desde el punto de vista técnico, creemos que hay que empezar por capturar los datos y disponer de un sistema de procesado en tiempo real y luego ir subiendo hacia las capas de Analítica avanzada y Machine Learning. En cualquier caso todo dependerá del proyecto y de la organización.



Entrando en la parte técnica, y comenzando por la ingesta d información de diferentes fuentes, que definición y característica seleccionarías de Apache Nifi?

Hay varias cosas que destacaría de Apache Nifi, la primera es que para una persona versada en BI clásico los conceptos que maneja son sencillos de aprehender. Por otro lado es una herramienta muy versátil que implementa la mayoría de los patrones necesarios a la hora de implementar un sistema de ingesta omnichannel. Backpresure, circuit break etc... Además dispone de un modelo para despliegue en dispositivos propios de lo que se conoce como IoT (https://nifi.apache.org/minifi/), esto es fundamental para poder desarrollar proyectos Big Data alineados con el "Internet de las cosas"


Habéis implementado Microservicios, que buenas practicas recomendarías:

Hemos usado microservicios siguiendo las buenas prácticas definidas Martin Fowler http://www.martinfowler.com/articles/microservices.html. Las características principales que en nuestro caso nos interesaban eran, la elasticidad, resiliencia, autodiscover y la integración dentro de una plataforma de gestión de recursos. En nuestro caso lo que hemos hecho ha sido usar AVRO IPC + YARN para poder desplegar y desarrollar los microservicios dentro de un cluster típico de hadoop. Lo hemos hecho así para no tener que desplegar un sistema de containers basados Docker con Kubernetes o Mesos o cualquiera de estas soluciones. Lo hemos hecho así porque los microservicios que desarrollamos son necesarios para el tratamiento de los datos y por tanto creíamos que lo mejor era definir una arquitectura de los mismos consistente con la tipología de cluster que desplegamos.


Que planteamiento técnico habéis utilizado para el dimensionamiento y monitorizacion de la carga de los procesos en tiempo real?

Principalmente no perder datos. La idea es que el sistema va a fallar en algún momento, las cosas no siempre funciona y lo principal es evitar el efecto bola de nieve. Por tanto siempre montamos sistemas desacoplados y las llamadas entre los sistemas desacoplados usa el patrón Circuit Breaker (http://martinfowler.com/bliki/CircuitBreaker.html)

Para la monitorización lo que hacemos es integrar los desarrollos realizados con el sistema de monitorización del gestor del cluster, en la mayoría de nuestras implantaciones Ambari (https://ambari.apache.org/)

---------------------------------------------------------------------------

Agradecer a Gustavo Fernandez, a Iñigo Sánchez Méndez  y  Angel Barrio por compartir su experiencia en Big Data.




7M9A0107