Saltar al contenido

lección 8

Cuándo usar qué: Step Functions vs Airflow vs cron

Compara las tres herramientas: cuándo brilla cada una, cuándo es overkill y cómo elegir para tu caso.

45 min

### No existe la herramienta perfecta — solo la adecuada

Después de 7 lecciones de orquestación, podrías pensar que siempre necesitas Step Functions o Airflow para todo. Pero la realidad es que a veces un simple cron es la mejor solución. Y a veces Step Functions es mejor que Airflow. Y a veces Airflow es la única opción razonable. La madurez como ingeniero está en saber elegir la herramienta correcta para el problema correcto.

Voy a contarte una historia real (con nombres cambiados). En 2019 un equipo de datos migró 15 scripts de cron a Airflow. Tardaron 3 meses. ¿El resultado? Los mismos 15 scripts haciendo lo mismo, pero ahora con una UI bonita y un sistema complejo que mantener. Los scripts corrían cada hora, no tenían dependencias entre ellos, y nunca fallaban. Cron era perfecto. El equipo cayó en lo que yo llamo "resume-driven development": eligieron la herramienta que queda bien en el CV, no la que resolvía el problema.

La herramienta más simple que resuelve tu problema ES la mejor herramienta. No necesitas un martillo pilón para clavar una chincheta. Pero tampoco intentes clavar un poste con un destornillador. El arte está en calibrar.

### La tabla de decisión rápida

Ninguna es mejor que las otras — cada una brilla en un contexto diferente

### Cuándo usar cron (y no sentir vergüenza)

Cron es la navaja suiza que viene de serie en todo sistema Unix desde 1979. No tiene UI, no tiene reintentos, no gestiona dependencias. Pero es gratis, ubicuo y zero-maintenance. Usa cron cuando:

  • Tienes un script aislado sin dependencias de otros scripts
  • El script es idempotente por sí mismo (puede reejecutarse sin problemas)
  • No necesitas monitorización sofisticada (un email al fallar es suficiente)
  • No tienes infraestructura de orquestación y el problema no lo justifica
  • Es un script temporal o un backup que lleva 5 años funcionando sin problemas

Ejemplo perfecto para cron: un script que cada noche exporta un CSV del CRM y lo sube a un SFTP. Lleva 3 años funcionando. No tiene dependencias. Si falla, el equipo se entera por la mañana y lo relanza. No justifica un Airflow.

### Cuándo usar Step Functions

Step Functions brilla cuando ya estás en el ecosistema AWS y necesitas orquestación serverless. No hay infraestructura que mantener, pagas por ejecución, y se integra nativamente con Lambda, S3, DynamoDB, ECS, etc. Usa Step Functions cuando:

  • Tu empresa ya está all-in en AWS y no planea salir
  • Necesitas orquestación serverless (cero servidores que mantener)
  • Tu workflow es event-driven: se dispara cuando llega un archivo a S3 o un evento a EventBridge
  • Necesitas integraciones nativas AWS (llamar a Glue, ECS, DynamoDB, SQS directamente)
  • Quieres ejecución visual y trazabilidad sin montar infraestructura
  • Tu flujo tiene lógica condicional compleja (Choice, Parallel, Map)

Ejemplo perfecto para Step Functions: cuando un archivo llega a S3, se dispara un workflow que lo valida con Lambda, lo transforma con Glue, notifica via SNS y actualiza DynamoDB. Todo serverless, todo AWS, zero maintenance.

### Cuándo usar Airflow

Airflow es el estándar cuando tienes un equipo de datos con múltiples pipelines interdependientes, necesitas visibilidad centralizada y no quieres vendor lock-in. Usa Airflow cuando:

  • Tienes 10+ pipelines con dependencias cruzadas
  • Necesitas scheduling complejo basado en tiempo (no solo eventos)
  • Tu equipo es multi-cloud o on-premise (no puedes depender de AWS)
  • Necesitas la mejor UI de monitorización del mercado
  • Tienes un equipo de datos de 3+ personas que necesita colaborar
  • Los pipelines usan herramientas variadas: Spark, dbt, scripts Python, APIs externas, bases de datos múltiples
  • Necesitas backfills (reejecutar DAGs para fechas históricas)

Ejemplo perfecto para Airflow: una empresa con 30 pipelines diarios donde el pipeline de ventas depende del de clientes, el de clientes depende del de CRM, algunos corren en Spark, otros en Python, y el equipo de 5 ingenieros necesita ver qué está pasando en un solo dashboard.

### Alternativas que deberías conocer (pero no enseñamos)

  • Prefect: Airflow moderno. Mejor DX, Python-native, menos configuración. Ideal si empiezas de cero.
  • Dagster: centrado en el "data asset". Piensas en DATOS, no en TAREAS. Muy opinionado pero elegante.
  • Temporal: para workflows distribuidos de larga duración. Más infra que datos.
  • AWS MWAA: Airflow gestionado por AWS. Lo mejor de ambos mundos si estás en AWS y quieres Airflow sin mantener la infra.
  • dbt Cloud: orquestación específica para transformaciones SQL. Perfecto si tu pipeline es solo SQL.

Y el dato que falta para elegir: el coste. Cron es gratis (corre en una maquina que ya tienes). Step Functions cobra $0,025 por cada 1.000 transiciones de estado, con 4.000 gratis al mes — el pipeline de esta skill son unas 180 transiciones al mes, asi que gratis. Airflow autogestionado cuesta la maquina mas tu tiempo de mantenimiento. Airflow gestionado (MWAA) cuesta $0,49/hora del entorno mas pequeno, que son unos $358 al mes encendido o vacio. Ojo con el cambio de escala: Step Functions cobra por trabajo y Airflow por tiempo, asi que la comparacion se invierte cuando pasas de decenas de pipelines a cientos.

No te cases con una herramienta. En mi carrera he visto equipos con Airflow para todo (incluyendo cosas que no deberían ser DAGs) y equipos con cron para todo (incluyendo pipelines de 20 pasos). El dogmatismo técnico es el enemigo de la buena ingeniería.

### Framework de decisión: 5 preguntas

Cuando tengas que elegir un orquestador para un proyecto nuevo, hazte estas 5 preguntas en orden:

  1. 01.¿Cuántos pasos tiene y tienen dependencias entre sí? Si es 1 paso sin dependencias → cron. Si son N pasos dependientes → necesitas un orquestador.
  2. 02.¿Estás en AWS y quieres zero-maintenance? Sí → Step Functions. No → sigue preguntando.
  3. 03.¿Es event-driven (reacciona a algo) o time-driven (corre a una hora fija)? Event-driven → Step Functions + EventBridge. Time-driven → Airflow o Step Functions con EventBridge Rules.
  4. 04.¿Cuántos pipelines tendrás y cuántas personas los mantienen? <5 pipelines, 1-2 personas → Step Functions o cron. >10 pipelines, 3+ personas → Airflow.
  5. 05.¿Necesitas backfills (reejecutar para fechas pasadas)? Sí → Airflow (diseñado para esto). No → cualquiera.

### Lo que aprendiste en esta skill: el resumen

Empezamos con un dolor real: "mi script solo funciona si lo ejecuto yo". Terminamos con tres herramientas que resuelven ese dolor de formas diferentes. El concepto clave transversal a las tres es la idempotencia: diseña cada paso para que pueda reejecutarse sin efectos duplicados. Con eso, cualquier orquestador que elijas hará bien su trabajo.

  • Lección 1: El problema (ejecución manual) y el concepto de idempotencia
  • Lecciones 2-5: Step Functions — máquinas de estado, Tasks, Retry, Catch, Choice
  • Lecciones 6-7: Airflow — DAGs, Operators, scheduling, XCom
  • Lección 8 (esta): cuándo usar cada herramienta

Mi consejo final: empieza con lo más simple que funcione. Si un cron basta, usa cron. Si necesitas dependencias y reintentos, usa Step Functions (especialmente si estás en AWS). Si tu equipo crece y necesitas el dashboard definitivo, migra a Airflow. No al revés — no empieces con lo más complejo "por si acaso".

## ejercicios

[01]

Elegir el orquestador correcto para cada escenario

Para cada escenario de empresa, elige la herramienta más adecuada (cron, Step Functions o Airflow) y justifica tu decisión en un comentario.

💡 Resultado esperado

escenario_1: cron              ok
escenario_2: step_functions    ok
escenario_3: airflow           ok
escenario_4: step_functions    ok
Cargando editor...
[02]

Migrar un crontab a un DAG de Airflow

Tienes estos 3 cron jobs que se ejecutan en secuencia (el segundo depende del primero, etc.). Mígralos a un solo DAG de Airflow con dependencias explícitas.

Cargando editor...
[03]

Diseñar la arquitectura de orquestación de una empresa

Una empresa mediana tiene estos pipelines. Diseña qué herramienta usarías para cada uno y justifica. Bonus: ¿usarías una sola herramienta para todo o mix?

Cargando editor...

Regístrate para guardar tu progreso.

## comentarios

Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.

Inicia sesión para comentar y responder.

cargando comentarios...