Data Engineer: poniendo orden en el caos de los datos

Ismael Rihawi    13 enero, 2020
Data Engineer

Vivimos en una sociedad digital e hiperconectada, volcada en las redes sociales, acostumbrada a convivir entre sensores inteligentes y una nueva realidad con múltiples facetas (virtual, ampliada, mixta). En este contexto, apremia la inmediatez en el uso de los servicios, la improvisación y espontaneidad en la generación y consulta masiva informacional, la ausencia de miramientos en la exposición de contenido sensible en la red salvaguardados por la nueva ley de protección de datos. Por ello, cobran especial importancia roles como el data engineer o ingeniero de datos, cuyo papel no siempre está muy claramente definido en las organizaciones. El objetivo de este artículo es arrojar luz sobre esta cuestión.

La realidad implícita en esta vorágine de sobreconsumo es la del incremento exponencial de nuevas plataformas de datos de cada vez mayor diversidad de naturaleza, fiel reflejo de la interacción de humanos, servicios y máquinas. En el ánimo de dar respuesta a las nuevas necesidades que el mercado demanda a cada instante, y que derivan en conocer al mayor nivel de detalle posible al usuario final y su entorno para así proveerle de la mejor experiencia de uso, es preciso preguntarse entonces qué rol profesional es capaz de cumplir con ese cometido. Esa figura es la del ingeniero de datos, pieza central de todo equipo multidisciplinar de soluciones de Big Data e Inteligencia Artificial dedicado a las labores de recolección, modelización y normalización de la información clave para describir el presente y predecir el futuro.

Perfil todoterreno: experto técnico, especialista en negocio e impacto social

Cada revolución tecnológica trae consigo nuevas destrezas a adquirir, renovados mecanismos de operabilidad a integrar sobre los ya existentes, profesiones emergentes que reúnen un abanico de responsabilidades de reciente incorporación.

Desde aquel Big Bang que convergió en el universo Big Data, que unos remontan a cuando Google presentó su sistema de ficheros distribuido Google File System o GFS (2003), y otros a la publicación en 2004 del paper que enunciaba el paradigma de procesamiento en paralelo MapReduce (lo que posteriormente constituiría la primera plataforma open-source Hadoop), el collage y superposición de roles ha sido de aúpa.

El ingeniero de datos, proveniente en sus inicios de funciones recurrentes de desarrollo backend y/o administración de bases de datos, se ha llevado la palma todo este tiempo, representando a un profesional con infinitas acepciones en la red, propiciando en muchas organizaciones un halo de misticismo ante el desconocimiento de no saber qué papel real encomendarle.

Funciones del data engineer y conocimientos necesarios

Con amplios conocimientos en ingeniería de software, estructuras de datos de la información y paradigmas de computación distribuida, entre otras habilidades técnicas, un data engineer es el encargado de la implementación de los procesos de captura masiva de información provenientes de múltiples orígenes, así como de las etapas de normalización, anonimización y limpieza de la misma. Automatización, operativización, minería de datos, exportación de insights e interfaces de aplicaciones (API) son términos de funciones que también nos acompañan en nuestro día a día.

El objetivo primordial de este perfil es el de hacer uso de la infraestructura tecnológica desarrollada por la figura del arquitecto Big Data para aprovisionar las siguientes formas de explotación de los datos una vez procesados:

  • Modelos analíticos para la identificación de patrones conductuales y la predicción de tendencias resultantes del histórico recogido desde el origen de los tiempos por parte de los científicos de datos.
  • La puesta en valor de las conclusiones extraídas o insights, a través de múltiples vías de representación (siendo las más frecuentes el dashboarding y los chatbots) que permitan facilitar la toma de decisiones en base a escuchar lo que el dato siempre ha tratado de decirnos y hasta hace no mucho ni habíamos reparado.

Por si aún no era suficiente, no solamente de tecnicismos vive un Data Engineer. Es preciso conocer el estado del arte de la información que manejan con propósito multisectorial, al ritmo de la célebre expresión “saber del negocio”, cuestión vital para modelar contenido desestructurado de distinta procedencia bajo unos criterios de estandarización coherentes y versátiles en el tiempo.

Labores recurrentes de ingeniería en soluciones de Big Data e Inteligencia Artificial

A continuación, se indican 4 pilares considero claves que agrupan distintas funciones a las que todo data engineer hace frente de manera cotidiana en todo ciclo de vida del dato. Para cada supuesto se aporta un listado de tecnologías, servicios y/o lenguajes asociados que sirven para ejemplificar la etapa que comprenden, entre un portfolio de alternativas innumerable, citando únicamente las implementaciones base en su versión Open Source, omitiendo para sintetizar su comprensión los servicios análogos de los principales proveedores de Cloud Computing. Por descontado, otras tareas adicionales pudieran verse añadidas a las siguientes expuestas, no viéndose excluidas por ello (como la implementación de API’s de consulta de las métricas obtenidas, como interfaz puente a la renderización en una capa de presentación al uso).

Figura 1: Funciones del ciclo de vida del dato.
Figura 1: Funciones del ciclo de vida del dato.
  • Captura masiva de la información: extracción desde fuentes externas e internas al proyecto según casuística, persistencia de los datos en bruto en sistemas de almacenamiento distribuido on-premise (Hadoop Distributed File System o HDFS) o en la nube (véase S3 en Amazon Web Services o Azure Storage en la plataforma de Microsoft). Las tecnologías requeridas para dicha labor son de tres tipos: a partir de peticiones de servicios a métodos de consulta tipo API REST, mediante técnicas de extracción a través de arañas de rastreo de contenido web (scraping), o con servicios dedicados Big Data según el tipo de dato a capturar (eventos, logs, bases de datos relacionales) y su frecuencia de generación (Batch vs Near-Real Time vs Real Time).
  • Transformación, limpieza, anonimización y consolidación: Procesos de refinamiento del contenido ingestado hacia la calidad del dato, antesala de las etapas analíticas y de visualización de las conclusiones extraídas. La utilización de frameworks de computación distribuida como Apache Spark, Apache Flink o Apache Storm resultan vitales para el aprovechamiento de los recursos de la infraestructura Big Data y su capacidad de reparto del trabajo entre múltiples nodos paralelamente. A destacar también servicios para la consulta, agregación y análisis de datos y metainformación como Apache Hive o Cloudera Impala, administrados bajo la interfaz de usuario web Apache Hue. Todo ello sustentado por lenguajes de programación (Java, Scala) y consulta (SQL) robustos, escalables, extensibles, orientados a su uso en entornos productivos, y bajo el amparo de una gran comunidad de desarrolladores comprometidos con su evolución y mantenimiento.
  • Automatización de procesos de ingesta y normalización: Orquestación de trabajos de manera programática, acotando el esfuerzo computacional de los procesos según intervalos de vigencia del dato, facilitando en consecuencia la ejecución secuencial de tareas que aprovisionen con información un Data Lake, como antesala a los procesos de gobernanza de los mismos. Apache Oozie y Apache Airflow son dos grandes servicios que cumplen la misión de programación de workflows.
  • Integración y despliegue continuo al servicio de la eficiencia operativa: Papel determinante en la evolución del software que se despliega en un entorno productivo partiendo de un estado inicial, cumpliendo debidamente a cada iteración con las etapas de revisión estática, pruebas funcionales (unitarias, aceptación, integración y regresión) y no funcionales (carga, estrés, escalabilidad, portabilidad) que acreditan su validez y minimizan el riesgo adherido. Todos los componentes indicados en esta sección forman parte de conglomerado de piezas que todo ciclo de operativización ha de contar, en cuyo diseño e implementación el data engineer ha de respaldar a la figura del DevOps en su consecución. Git como repositorio de control de versiones del software; Jenkins como servidor de integración continua, SonarQube como servidor de revisión de código estático; Junit y JMeter como librerías de soporte de pruebas unitarias y rendimiento (QA); Docker como proyecto de despliegue de contenedores efímeros (“sandboxes”) para la abstracción de dichas validaciones; Openshift como plataforma de despliegue de los mismos (Platform as a Service o PaaS); Nexus como servidor gestor de repositorios y artefactos finales de los aplicativos productivos.

Queriendo fomentar que los equipos de transformación digital dedicados al tratamiento del dato cuenten con los integrantes precisos para no verse frenados en la consecución de sus propósitos de proyecto, si veis a alguien por la oficina presentar dudas al respecto, ¡hacedle saber quién pone orden en el caos de los datos!

Para mantenerte al día con LUCA, visita nuestra página web,  suscríbete a LUCA Data Speaks o síguenos en TwitterLinkedIn YouTube.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *