Docker y Big Data

“Docker está cambiando la forma de hacer desarrollo de software”

Álvaro Barbero, Chief Data Scientist en el Instituto de Ingeniería del Conocimiento (IIC), habla sobre Docker, la tecnología de código abierto que permite crear, ejecutar, probar e implementar aplicaciones distribuidas dentro de contenedores de software.

BBVAOpen4U
|
16 Feb. 2017

El mundo del desarrollo está sujeto a los constantes cambios y avances informáticos, y Docker se ha convertido en la última revolución. Esta tecnología ha cambiado la forma de desarrollar software y ha agilizado los procesos mediante su ingenioso sistema de contenedores.

Álvaro Barbero es experto en machine learning y director del Equipo de Ingeniería Algorítmica del Instituto de Ingeniería del Conocimiento. Ha sido el único español finalista en el Big Data World Championship (TEXATA) -competición mundial de análisis de datos-, consiguiendo un segundo puesto en el año 2015. Sobre análisis de datos y aprendizaje automático habla para BBVAOPEN4U tras el evento Using Docker in Machine Learning poryects, celebrado en el Centro de Innovación de BBVA.  

1.- ¿Cuáles son las ventajas de utilizar Docker?

Tiene muchas ventajas. Lo que más valoramos es que nos da reproducibilidad. Cuando tenemos que construir un modelo complicado de machine learning, necesitamos un montón de piezas y de dependencias, además de mucho software open source que conectamos entre nosotros con piezas que hemos hecho.

Cuando tienes que construir esto para aplicarlo en un sistema de producción o sigues los pasos exactamente que habías hecho cuando lo estabas desarrollando o no funciona. Docker te permite crear una especie de receta en la que sabes que siempre que construyas una solución va a ser exactamente igual y va a funcionar independientemente de si lo despliegas en un portátil, en un CPD o en una cloud. Esa es su principal ventaja.

2.- ¿Consideras que Docker es una plataforma de uso sencillo?

En mi experiencia personal la primera vez que vi Docker dije: “¿qué es esto?” porque es una de esas tecnologías que te cambia la manera de pensar en cuanto a desarrollar software. Por eso, cuesta un poco cambiar la forma en la que tú estás diseñando un sistema software para que encaje en Docker, pero creo que una vez que haces el cambio ves que las cosas son más fáciles. Es verdad que el cambio no es sencillo, sobre todo por ese cambio de mentalidad, pero una vez que te acostumbras es mucho más fácil construir aplicaciones grandes.

3.- ¿Cómo se aplica Docker al machine learning?

Como a cualquier desarrollo de software. Es decir, cuando quieres desarrollar una aplicación, hay dos grandes modelos de hacerlo:

  • uno que podríamos denominar el modelo monolítico, en la que está todo estable y concentrado
  • y otra que consiste en hacer muchas piezas pequeñas que se comuniquen entre sí, lo que te lleva a que cada pieza es más reducida, más fácil de mantener, y más fácil de que otra persona pueda aplicar cambios.

Sin embargo, la orquestación -hacer que todo encaje entre sí- es muy difícil. Aunque siempre te contaban desde la escuela de informática que es mejor hacer piezas independientes, luego en la práctica es muy difícil.

Con Docker todo eso lo puedes hacer de manera sencilla. En machine learning hay una innovación brutal y todo lo podemos hacer en librerías nuevas que mejoran lo que ya había. No podemos quedarnos con una librería concreta, debemos tener un ecosistema con muchas piezas que sean capaz de comunicarse entre sí y con Docker podemos hacerlo de una manera bastante fácil.

4.- ¿Por qué al hablar de Docker se habla de contenedores?

Cuando uno piensa en contenedores se imagina las cajas que van en los barcos. Esto es un poco distinto. El sentido de contenedor es porque contiene una aplicación y digamos que la aísla del entorno. Pero esa aplicación puede ser todo lo grande que quieras. Tu cuando ejecutas una aplicación dentro de un contenedor la ves como si estuviera aislada, sin embargo, el sistema operativo la ve como si fuera un proceso más, los límites que tiene del disco, de memoria, de procesador, solamente vienen dados por el propio sistema en sí.

Diría que es parecido a una máquina virtual, pero en Docker tu puedes escalar sin ningún problema, siempre y cuando no desbordes la máquina principal. Por ello creo que te da algunas ventajas adicionales, sobre todo comparado con el desarrollo en máquinas virtuales que ha habido en estos últimos años.

5.- ¿El uso de Docker supone una revolución?

Al principio es un cambio de mentalidad y eso es exactamente lo que define a una revolución: no hacer las cosas como las hacías hasta ahora, sino cambiar esa forma completamente. No es solo mi opinión, he oído opiniones de varios expertos que dicen que es que es así, que ya está cambiando como se hace el desarrollo de software. Antes, lo normal era que los programadores trabajaran en un repositorio de código y fueran añadiendo las versiones del código, etc. Luego, en un sistema de integración continua que cada vez que cambiabas el estado del código, ejecutabas pruebas y ahí se desplegaba.

Docker es una manera de hacer esto, que te añade un paso adicional y es que tienes una especie de contenedor, un repositorio de versiones estables del código. Con Docker los programadores siguen desarrollando en el repositorio del código, pero cuando terminan una versión estable, se prueba, y ya en el repositorio de artefacto es donde metes el contenedor Docker que está probado, que sabemos que está bien el código y ya te lo puedes llevar a cualquier máquina porque sabes que va a funcionar. Esto ya cambia la manera en la que tu despliegas aplicaciones. Ahora es mucho más sencillo, no es tan manual, sino que ya tienes un contenedor que tú puedes soltar donde quieras. Reduce mucho los tiempos en el despliegue de aplicaciones y en temas de mantenimiento. Ahora nos lleva más al paradigma de hacer grandes aplicaciones a base de muchas piezas pequeñas que se comunican entre sí.

<iframe width="780" height="439" src="https://www.youtube.com/embed/nbMnmZ3TLCc?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>

6.- ¿Cómo ves el futuro del machine learning/Big Data?

Los medios han puesto el foco en estos temas principalmente porque la industria se está moviendo aplicando todas estas técnicas. Antes el machine learning era algo que pertenecía exclusivamente al campo científico, pero ahora ya es una palabra común, sale en las noticias y por eso casi cualquier empresa tecnológica que esté en alza se ha dado cuenta de que es algo útil. Creo que a corto plazo es una tendencia que va a continuar. También es posible que haya una burbuja sobre esto porque cuando todo el mundo habla tanto del tema se crean expectativas demasiado infladas. Sí que es verdad que funciona, pero no para todo, porque yo no puedo predecir qué numero va a salir en la lotería, por ejemplo.

Además, muchos avances que están ocurriendo en machine learning son un poco fortuitos. Por ejemplo, ahora se habla mucho de deep learning, estas redes neuronales profundas, y es verdad que hay muchos grupos en universidades que llevan muchos años investigando en esto, pero algunos avances que se están produciendo simplemente son ideas que se han probado, sencillas, pero sin una parte teórica que muestre por qué eso funciona.

Hay una capa ahí que no se va a poder superar porque nos falta conocimiento básico. La verdad es que no sabemos cómo funciona el cerebro. Los sistemas que intentamos evitar, los sistemas inteligentes, todavía no sabemos cómo funcionan. Cuando se habla del largo plazo y a la vez de robots inteligentes, creo que falta algo a lo que todavía no hemos llegado. Por eso, no me extrañaría que todo este furor por el machine learning empiece a enfriarse un poco como ya ha pasado antes cuando se hablaba de la inteligencia artificial. Son booms que se dan cada cierto tiempo y sobre los que hay una ventaja tecnológica. Se aprovechan y luego se quedan fríos hasta que se produce el siguiente avance.

7.- ¿Consideras que la analítica de datos puede marcar la diferencia en una compañía?

La respuesta es sí. El año pasado estuve en un evento en Estados Unidos y uno de los ponentes dijo: “Os reto a que me digáis el nombre de 10 startups de éxito que no usen machine learning o análisis de datos”. Y es complicado, porque tú puedes pensar: Uber, lo usa; WhatsApp, probablemente algo también porque lo ha comprado Facebook y se caracterizan por la minería de datos, o sea, que parece que es algo que sí aporta mucho valor.

 ¿Tienen que implantarlo todas las compañías? Creo que le sacarán más valor las empresas que están más cerca de la generación de datos como la banca, telecomunicaciones, etc. Y también lo que se está observando es que se está propagando más a otros sectores, a lo mejor no tan tecnificados, como la agricultura, por ejemplo.

9.- Has sido el primer español finalista en el Big Data Analytics World Championship ¿qué consejo darías a los profesionales de este sector?

Formación. Yo empecé estudiando ingeniería informática porque me llamaba la atención, y luego oí hablar de estas cosas de inteligencia artificial, redes neuronales, y seguí con un máster y el doctorado. Luego tienes que seguir formándote porque este campo es muy nuevo y las tecnologías en 2 años se empiezan a quedar obsoletas. Tienes que tener pasión e interés por ver que está ocurriendo y cambiar lo que estás haciendo para hacerlo mejor. Creo que ese es el ingrediente fundamental: formación continua total. Tienes que pensar que este mes has aprendido algo nuevo, y si no es así, debes empezar a preocuparte.

10.- ¿Qué se necesita exactamente para ser analista de datos?

Depende mucho de cómo definas ser analista de datos. Lo que se solía decir es que un analista de datos -a los que antes se les llamaba antes los “unicornios de datos” porque eran muy difícil de encontrar- era alguien que supiera: de informática, de matemáticas, que tuviera conocimientos de negocios y capacidad de explicación para generar visualizaciones que pudiera entender la gente en general, por lo que es un perfil muy completo. Sin embargo, hoy día hay equipos muy completos con diferentes perfiles, conformando un equipo multidisciplinar que cubren este puesto.

11.- Hablar de análisis de datos nos lleva rápidamente a hablar de visualización de estos datos, ¿por qué este campo está tomando tanta relevancia? ¿Se han dado cuenta de su poder las empresas?

De lo primero que se han dado cuenta las empresas cuando han entrado al mundo del Big Data es de la visualización, porque entra por los ojos. A ti te pueden hablar mucho de algoritmos predictivos y estadísticas de los datos, pero cuando lo ves, cuando eres capaz de resumir muchísima información en un gráfico que te organice todo lo que tiene tu empresa y puedes ver si estas ganando por un motivo u otro... A partir de ahí es dode puedes tomar decisiones. Diría que en cualquier proyecto de Big Data lo primero es conseguir una visualización, y luego ya vienen los pasos de la algoritmia predictiva, etcétera.

¿Te interesan las APIs financieras? Descubre todas las que te ofrece BBVA

¡Suscríbete!

Recibe nuestro boletín semanal. No te pierdas nuestros trucos, consejos, artículos y los eventos más innovadores.