¿Docker para la ingeniería de datos?

Estos días de receso navideño da para hablar de todo en las largas sobremesa, ¿verdad? En mi caso, algo inaudito, pero …. ¡así es la vida!. En concreto, sobre si explicar “dockers” era de valor o no a un ingeniero/ingeniera de datos.  ¿rara avismi caso? Conozco casos más complejos y temas más delicados. Intento aquí plasmar un resumen, sobretodo para mi hemeroteca particular, que es en el fondo el propósito de este blog, y poder recordar dentro de unos años que tipo de sandeces salen en fechas de guardar.

Todo sale de una reflexión en voz alta debido a que tengo el honor de estar preparando el contenido de una de las asignaturas para el próximo curso 2018-2019 para unos alumnos del Grado en Ciencia e Ingeniería de Datos (la UPC lo ha iniciado en este curso 2017-2018), y que a pesar de que no les imparto todavía clase, los conozco gracias a una visita al supercomputador Marenostrum del pasado Octubre (foto adjunta). La primera impresión es que son todos y todas unos genios con los que disfrutaré enseñando y aprendiendo de ellos a la vez.

Según la página oficial de la Facultad “El grado quiere formar así profesionales expertos en análisis e ingeniería de datos estructurados y no estructuradas (texto, audio, vídeo, pruebas médicas, indicadores financieros, etc.), con una base matemática y habilidades propias de la ingeniería que los permitan modelitzar y resolver problemas complejos. Es un ámbito de trabajo emergente con aplicaciones tan diversas como por ejemplo la analítica financiera, el estudio de fenómenos físicos, el comercio electrónico, las ciudades inteligentes, la informática biomédica, la genómica o las redes sociales, entre otras.

¿Entonces, donde entran los dockers?  Un docker es una herramienta que simplifica el proceso de instalación para los ingenieros de software en general, y para el ingeniero de datos en particular, que en general suele importarle muy poco sobre cómo instalar el software y que actualmente dedica demasiado tiempo (a mi entender) a tratar de resolver los problemas de configuración del sistema.  Propongo Dockers porque en estos momentos es la plataforma de “contenedores” de software líder en el mundo que muchas empresas utilizan para construir software que permita desplegar de forma rápida y segura sus aplicaciones, independientemente de que las plataformas sean Linux o Windows. Piense en Docker como una “máquina virtual” liviana que permite precrear (por parte de un experto sistemas) de un “Docker Image”que contenga las herramientas y librerías  que necesita un ingeniero de datos para un proyecto concreto, olvidándose de las pesadas “dependencias” de paquetes que a menudo se necesitan y nos marean los preparatorios de nuestro entorno. Creanme, esto ahorra un montón de tiempo de instalación de paquetes, y simplifica la vida a cualquiera al permitir distribuir un código determinado a la vez que el entorno en el que este código se ejecuta correctamente.Yo lo uso en los laboratorios del curso sobre Deep Learning para Inteligencia Artificial ( DLAI Labs – Master Course at UPC)  en el que imparto la parte del curso que trata sobre  los principios básicos del Deep Learning desde la perspectiva computacional. Creo que en este caso se ve el valor de simplificar todos los pormenores de instalación dada la diversidad de plataformas que disponen los estudiantes (Linux, Windows, MacOS, …)  y permitir que el estudiante (y el profesor) se centre en lo que realmente és importante para el (en este curso el Deep Learning).  

Ahora bien, ¿solo disponemos de Dockers como alternativa? ¡No!  En otras asignaturas que imparto también usamos otras como Vagrant, Kubernetes, Mesosentre muchas otras alternativas, cada una con sus características. En resumen, lo importante que quería resaltar en este post es que en estudios de grado como este, los entornos de software de que dispone un científico de datos actualmente, le permiten centrarse en sus temas y abstraerse de los pormenores de los entornos de ejecución.