Publicado: 22/06/25
Pipelines, scheduling y una pizca de batch vs streaming
En el primer post de esta serie de Data Engineering vimos que un/a Data Engineer es un profesional IT encargado de construir sistemas y arquitecturas capaces de ingestar datos desde una fuente y llevarlos a un destino, como por ejemplo una base de datos, para que dichos datos sean consumidos por otros profesionales. Estos sistemas deben automatizar todo lo que sea posible el tratamiento de los datos, de modo que estos produzcan todo el valor necesario y ofrezcan toda la utilidad posible.
En la segunda parte hablamos sobre los distintos profesionales que hacen uso de los datos producidos por los sistemas y arquitecturas construidos por los Ingenieros de Datos. Estos profesionales contribuyen, cada uno con su respectivo conjunto de habilidades, al ciclo de vida general de los datos y trabajan en estrecha colaboración con los Data Engineers.
Por ahora todo parece medianamente claro. Pero el sabor está en los detalles. Decimos que el/la Data Engineer construye sistemas encargados de procesar datos. Estos sistemas ingieren datos y los llevan a cierto lugar. La preguntas que ahora surgen son:
SPOILER: una pipeline.
Hoy vamos a hablar de qué es el procesamiento de datos en general y en qué consiste, qué es una pipeline, y algo llamado scheduling. No te hagas problemas con tantos términos si nunca los viste, intentaré hacerte la lectura lo más informativa, clara y amena posible para que te lleves un aprendizaje y te despierte la curiosidad por profundizar más por tu cuenta.
En 2017, el diario The Economist publicó un artículo titulado “El recurso más valioso del mundo ya no es el petróleo, sino los datos”. Es una interesante afirmación que creo tiene muchísimo sentido. Ponete a pensar por un instante en la cantidad de información que producimos las personas, ya sea de manera voluntaria e involuntaria: datos en redes sociales, las compras que hacemos, los sitios que visitamos, las cuentas que creamos, etc. Hay empresas multimillonarias que basan sus modelos de negocio y toman decisiones a partir de toda esa información disponible.
Siguiendo esta idea, vamos a usar un ejemplo que ilustra muy bien cómo los datos y el petróleo se parecen, y no solo en valor, sino en cómo son tratados. El petróleo crudo se extrae de un yacimiento petrolífero. Luego este petróleo crudo se mueve a una unidad de destilación, donde se separa el petróleo en distintos productos. Algunos de estos productos son enviados directamente al usuario final. Por ejemplo:
El/La Data Engineer sigue un proceso similar al procesamiento de petróleo. Las compañías ingieren datos desde distintas fuentes, que necesitan ser procesados y almacenados de distintas maneras. Antes de introducirnos brevemente al concepto de pipeline, creo que es pertinente hablar un poquito sobre el procesamiento de datos en general. ¿A qué hacemos referencia? ¿Qué involucra? ¿Qué significa “procesar” datos?
En resumidas cuentas, el procesamiento de datos es convertir datos en formato crudo a información que tenga un significado. Sin embargo, es importante reparar en el porqué es importante procesar datos.
Algunas razones para procesar datos son:
En términos de procesamiento de datos, los Ingenieros de Datos poseen distintas responsabilidades. Entre algunas de ellas, se encuentran:
Para lograr todo esto son necesarias las pipelines, que eficientemente automatizan el flujo de datos de una estación a la otra. De esta manera, otros profesionales en Data (parte 2 de esta serie, guiño guiño) pueden utilizar datos actualizados, precisos y relevantes para realizar su trabajo.
En resumen, una pipeline (o tubería o canalización) de datos asegura que los datos fluyan de manera eficiente en una organización, automatizando:
…y de esta manera, reducir:
El concepto clave que quiero que te lleves es que una pipeline tiene como objetivo proveer una vía, un canal, para mover datos de un lugar a otro, priorizando la automatización, la eficiencia y por supuesto la seguridad.
Como te habrás dado cuenta, una pipeline es un sistema con varias etapas. Sería extraño que una pipeline sea exactamente igual a otra, ya que depende mucho de qué tipo de enfoque se haya utilizado para construirla, o cuáles son las reglas de negocio que definieron su construcción. Lo que sí es seguro, es que estas etapas deben ser coordinadas de manera secuencial para lograr el resultado deseado, y ahí es donde entra en juego el scheduling.
El scheduling actúa como un “pegamento” que mantiene a todas las partes de un sistema de procesamiento de datos (una pipeline) unidas de manera coherente.
Recordá que el principal beneficio y objetivo de un sistema de procesamiento de datos es la automatización. Pensemos por un segundo:
Acá es donde entra en juego el scheduling, que no es otra cosa que la ejecución de tareas cada cierto intervalo de tiempo específico (horas, días, semanas, etc) o al cumplirse cierta condición o condiciones.
Cuando una tarea se ejecuta automáticamente al cumplir cierta condición, estamos hablando de sensor scheduling
Te doy un ejemplo. Tenés un sistema que:
¿Qué lío no? ¿Seguís queriendo hacer todo esto de manera manual? No tiene ninguna clase de sentido. Es mejor definir nuestra pipeline teniendo estos requisitos y escenarios en mente, y coordinar la distinta ejecución de estos componentes.
El ejemplo que te compartí es una descripción muy resumida de un proyecto que me tocó definir desde sus cimientos, donde tuve que pensar y coordinar estos pasos en una pipeline robusta y escalable. Si te interesa saber y tenés algo de idea de AWS, la solución a esto vino de la mano de AWS Lambda (función serverless para ejecutar código en la nube) + EventBridge (un servicio de scheduling basado en eventos). Cada Lambda ejecutaba una parte del proceso:
Lo que me gustaría que te lleves de esta sección, es que hacer scheduling o “schedulear” es una parte a tener muy presente de toda pipeline que quieras implementar. Coordinar cada paso, cada componente, es de vital importancia.
Otro concepto importante a tener en cuenta es cómo los datos son ingeridos. Los datos pueden ser ingeridos principalmente de dos maneras:
Si bien podría literalmente hacer otro post hablando de batch y streaming nomás, incluyo estas ideas en este post para que puedas tener la noción de que más allá de que una pipeline consiste básicamente en extraer datos de un lugar para llevarlos a otro, son varias las etapas que la componen. La ingestión es la primera, y planificar con cuidado esta etapa resulta imperante. Por eso quiero dejarte dos citas del libro Fundamentals of Data Engineering para que la próxima vez que te toque armar una pipeline (o incluso si es tu primera vez), puedas pensar en algunos detalles interesantes.
"Virtualmente todos los datos con los que lidiamos son inherentemente de tipo streaming o de flujo. Los datos son casi siempre producidos y actualizados constantemente en su fuente. La ingestión de tipo batch (o por lotes) es una manera especializada y conveniente de procesar dicho flujo en grandes lotes o partes".
"La ingestión por streaming (o de flujo) nos permite proveer datos a sistemas que los consumen - ya sean otras aplicaciones, bases de datos o sistemas de analíticas - de una manera continua y en tiempo real. ‘En tiempo real’ significa que los datos están disponibles para los sistemas que los consumen en un período corto luego de ser producidos (por ejemplo, menos de un segundo después). La latencia requerida para calificar como tiempo real puede variar por dominio y los requerimientos".
Ufff, bueno. Sé que es mucho para digerir, y más si es tu primer contacto con el mundo de las tuberías. Suelo hacer las conclusiones en formato de párrafos, pero probemos simplemente abarcar los puntos clave de lo visto hoy.
Ahora, lograr todo esto que vimos no es una tarea fácil y es la razón por la que los Ingenieros de Datos son tan importantes cuando una empresa u organización quiere trabajar con datos. Existen patrones o arquitecturas que permiten construir una pipeline de manera eficiente y con la suficiente robustez para lidiar con diferentes escenarios: ETL y ELT. Te los explico en detalle, en el próximo post de la serie 😉
Data Engineer | Developer | Musico | Nerd de yerbas varias