Skip to main content

Command Palette

Search for a command to run...

Script vs Pipeline: Por qué tu cronjob no es suficiente

Hoy: la diferencia que cambia todo.

Updated
3 min read
Script vs Pipeline: Por qué tu cronjob no es suficiente
A

Platform Engineer + CNCF Ambassador, AWS community builder. I design scalable cloud-native platforms and love making teams faster and safer.

Ayer te prometí explicar por qué tus herramientas de Platform Engineering no son suficientes para ML. Pero antes, hablemos de cuando alguien de PE pide automatizar o pregunta si ya esta automatizado, por alguna razón la respuesta es:

Por que? .. porque puedo y porque quiero:

# crontab
20 4 * * * cd /ml && python train.py

"Ya está automatizado", me dicen, no sean así, quieran a us PEs, hay algunos que siguen encerrados en su mundo donde yo mando, donde es mi infra, es mi workflow… pero somos mas los buenos xD.

Hace tiempo, un Data Scientist me mostró su trabajo (Los ilovesomucho a mis compañeros DS, de verdad xD ):

# train.py
import pandas as pd
from sklearn.ensemble import RandomForest

# Leer datos
df = pd.read_csv('data.csv')

# Entrenar
model = RandomForest()
model.fit(df[features], df['target'])

# Guardar
model.save('model.pkl')
```

"Solo ejecuta esto en producción", me dijo.

Yo, ingenuo, pensé: "Easy. Lo meto en un container, un cronjob, y listo", no ?.

3 meses después:

  • El modelo degradó y nadie sabe por qué

  • "data.csv" cambió y rompió todo

  • No sabemos qué versión del modelo está en producción

  • No podemos reproducir los resultados

  • Cada retrain es manual y reza para que funcione

¿El problema? Un script no es un pipeline.


La diferencia fundamental:

🔴 Script (train.py):

python train.py
# Todo en un solo archivo
# Sin separación de responsabilidades
# Sin trazabilidad
# Sin recuperación de errores

🟢 Pipeline orquestado:

1. INGEST    → Trae datos versionados
2. VALIDATE  → Verifica calidad
3. PREPROCESS→ Transforma de forma reproducible
4. TRAIN     → Entrena con hiperparámetros trackeados
5. EVALUATE  → Valida métricas vs baseline
6. REGISTER  → Solo si pasa el threshold

¿Por qué importa?

Con un script:

  • Si falla en el minuto 45, pierdes todo

  • No sabes qué datos usaste

  • No puedes reproducirlo

  • Debugging = rezar y print()

Con un pipeline:

  • Cada paso es independiente y reproducible

  • Falla el paso 3? Reinicia desde ahí

  • Trazabilidad completa: datos, código, parámetros

  • Debugging con logs estructurados de cada etapa


El día que aprendí esto:

Un modelo empezó a fallar en producción.

Con el script: "No sé qué cambió, vuelve a entrenar todo y cruza los dedos"

Con el pipeline: "Ah, los datos de entrada fallaron en validación. El modelo anterior sigue sirviendo. Arreglo los datos y solo re-ejecuto desde INGEST"

Esa es la diferencia entre firefighting y engineering.


Mañana te cuento: Qué hace que un pipeline sea realmente un pipeline (spoiler: no es solo dividir tu script en funciones)

Y te presento a los orquestadores: Airflow, Kubeflow, Prefect, Dagster.

¿Cuál usar? Depende. Mañana vemos por qué.


Pregunta para ti: ¿Tu equipo de ML tiene scripts o pipelines? (Pista: si no lo sabes con certeza, probablemente son scripts)

More from this blog

Alejandro Parra's Blog

16 posts

Script vs Pipeline: Por qué tu cronjob no es suficiente