AWS Step Functions es un servicio serverless de orquestación: coordina varios servicios de AWS y varias piezas de tu propia aplicación como un único flujo de trabajo, con un orden definido, manejo de errores incorporado y registro de cada paso. En Step Functions un flujo se modela como una máquina de estados, y cada paso de ese flujo se llama un estado.
Dicho en lenguaje de negocio: si tus procesos hoy son una cadena de llamadas entre componentes que alguien programó a mano —y que nadie se atreve a tocar—, Step Functions convierte esa cadena en un flujo explícito, visible y con reintentos automáticos.
¿Qué problema resuelve?
Cuando una aplicación crece, la lógica que coordina los pasos empieza a repartirse por todos lados: una función Lambda que llama a otra, un reintento programado a mano aquí, un if que decide si continuar allí, un estado del proceso guardado en una tabla porque no había dónde más ponerlo. El resultado es conocido:
- Nadie sabe en qué paso está un proceso cuando algo falla a mitad de camino.
- La lógica de reintentos se reescribe en cada componente, con criterios distintos cada vez.
- Un cambio en el orden de los pasos obliga a tocar código en varios servicios a la vez.
- No hay trazabilidad: reconstruir qué pasó en una ejecución concreta exige cruzar logs de varias fuentes.
Step Functions saca esa lógica de coordinación fuera del código y la vuelve una definición explícita del flujo. El orden, las condiciones, los reintentos y el manejo de errores dejan de estar dispersos y pasan a estar en un solo lugar.
Cómo funciona
Un flujo de Step Functions se define en Amazon States Language, un formato basado en JSON que describe los estados y cómo se pasa de uno a otro. Los tipos de estado más usados cubren casi cualquier proceso de negocio:
- Task: la unidad de trabajo real. Invoca una función Lambda, llama a otro servicio de AWS o incluso a una API HTTPS externa.
- Choice: una bifurcación. Según el dato que llega, el flujo toma un camino u otro.
- Parallel: ejecuta varias ramas al mismo tiempo y espera a que todas terminen.
- Map: repite los mismos pasos sobre cada elemento de una lista, por ejemplo cada archivo de un lote o cada ítem de un pedido.
- Wait: pausa el flujo un tiempo determinado o hasta una fecha, sin consumir cómputo mientras espera.
La integración con el resto de AWS es directa: a través de las integraciones del SDK de AWS, un flujo puede llamar a miles de acciones de API de los servicios de AWS sin que tengas que escribir una función intermedia solo para eso.
Reintentos y errores, incorporados
Esta es la parte que más código ahorra en la práctica. Step Functions trae dos mecanismos nativos:
- Retry: define una política de reintentos cuando un paso falla, con la cantidad de intentos y el intervalo entre ellos.
- Catch: define un camino alternativo cuando el error persiste —notificar, compensar la operación, registrar el caso para revisión— en lugar de dejar el proceso colgado.
Escribir esa misma lógica a mano dentro de cada función es posible, pero rara vez queda consistente entre componentes y casi nunca queda documentada.
Orquestación y coreografía: no son lo mismo
Es la confusión más común al diseñar arquitecturas basadas en eventos, y conviene separarla bien.
En la coreografía, cada componente reacciona a los eventos que le interesan sin que nadie dirija el conjunto: una cola o un bus de eventos mueve los mensajes y cada servicio decide qué hacer con los suyos. Es el terreno de SQS, SNS y EventBridge, que comparamos en detalle en SQS vs SNS vs EventBridge.
En la orquestación, hay una pieza que lleva el hilo del proceso completo: conoce el orden de los pasos, el estado de la ejecución y qué hacer si algo falla. Ese es el rol de Step Functions.
No compiten: se combinan. Lo habitual es que un evento llegue por un bus, dispare un flujo de Step Functions y que ese flujo coordine los pasos que siguen. La regla práctica: si necesitas mover mensajes entre componentes desacoplados, piensa en mensajería; si necesitas llevar el hilo de un proceso con estado, piensa en orquestación.
Standard y Express: cuál elegir
Step Functions ofrece dos tipos de flujo, y la elección se toma por proceso, no para toda la arquitectura.
| Criterio | Standard | Express |
|---|---|---|
| Duración máxima | Hasta 1 año | Hasta 5 minutos |
| Modelo de ejecución | Exactamente una vez | Al menos una vez |
| Un paso se repite | Solo si defines reintentos | Sí, por el modelo de entrega |
| Encaja con | Procesos largos y no repetibles | Alto volumen de eventos |
| Ejemplo típico | Un pago, el arranque de un clúster | Transformar datos de entrada en lote |
La pregunta que define la elección es simple: ¿repetir un paso de este proceso es inofensivo? Si lo es —transformar un dato y guardarlo, por ejemplo—, Express encaja y es eficiente para volumen alto. Si no lo es —cobrar dos veces no es una opción—, el modelo de exactamente una vez de Standard es el que corresponde.
Dónde aporta más valor
- Procesos de datos y ETL. Coordinar extracción, transformación y carga con reintentos por etapa y visibilidad de en qué paso quedó cada corrida. Es el complemento natural de un flujo de ETL.
- Orquestación de microservicios. Cuando una operación de negocio atraviesa varios microservicios, el flujo mantiene el estado y evita que cada servicio tenga que saber quién viene después.
- Procesos con aprobación humana. Un estado de espera permite pausar el flujo hasta que una persona apruebe, sin mantener nada corriendo mientras tanto.
- Flujos de IA. Encadenar recuperación de contexto, invocación del modelo, validación y acción sobre un sistema de negocio, con trazabilidad de cada paso. Es la base para llevar agentes de IA a un entorno productivo y auditable.
Cómo lo trabajamos en Caleidos
En Caleidos, como AWS Advanced Tier Services Partner, usamos Step Functions cuando un proceso deja de ser una llamada aislada y pasa a ser un flujo de negocio con varios pasos, condiciones y puntos de falla. Es parte de nuestra práctica de Cloud Native Apps: sacamos la lógica de coordinación del código, la volvemos un flujo explícito con reintentos y trazabilidad, y lo instrumentamos con observabilidad desde el inicio para que el equipo vea en qué paso está cada ejecución. Si recién estás entrando al modelo, explicamos la base en qué es serverless, y la lógica de cada paso suele vivir en AWS Lambda.
¿Tienes procesos críticos coordinados a mano entre varios servicios?
Conversemos sobre tu arquitectura: revisamos tus flujos actuales y te decimos dónde un orquestador reduce riesgo operativo y dónde no hace falta.