Orquestación de flujos de trabajo diseñada con AWS Step Functions - Cómo elegir entre Standard y Express
Se aclaran los criterios para elegir entre los flujos de trabajo Standard y los flujos de trabajo Express, y se presentan la gestión de errores declarativa con Retry/Catch y el procesamiento en paralelo a gran escala con el mapa distribuido.
Conceptos básicos de Step Functions
Step Functions es un servicio serverless de orquestación de flujos de trabajo. El flujo de trabajo se define como una máquina de estado, y cada estado ejecuta invocaciones de servicios de AWS, bifurcaciones condicionales y procesamiento en paralelo. Cuando se encadenan funciones de Lambda, es necesario implementar dentro de cada función el orden de las llamadas entre funciones, la gestión de errores y la lógica de reintentos. En cambio, con Step Functions estos elementos se describen de forma declarativa en la definición del flujo de trabajo (ASL). En el editor visual se pueden construir flujos de trabajo arrastrando y soltando, y se puede consultar el estado de ejecución en un gráfico en tiempo real.
Elección entre los flujos de trabajo Standard y Express
Los flujos de trabajo Standard conservan de forma persistente el historial de ejecución en cada transición de estado y admiten ejecuciones de larga duración de hasta 1 año. El precio es de unos 0.000025 USD por transición de estado (a fecha de agosto de 2026). Son adecuados para cargas de trabajo que requieren auditar el historial de ejecución y que se ejecutan con una frecuencia relativamente baja, como el procesamiento de pedidos, los flujos de aprobación y los pipelines de datos. Los flujos de trabajo Express no conservan de forma persistente el historial de ejecución y están especializados en ejecuciones cortas de hasta 5 minutos. Su precio se basa en el número de ejecuciones y el tiempo de ejecución, y para grandes cantidades de ejecuciones cortas su coste es considerablemente menor que el de los flujos de trabajo Standard. Son óptimos para cargas de trabajo de alto rendimiento / corta duración, como el procesamiento de eventos de dispositivos IoT, los backends de API Gateway y la transformación de datos de streaming.
Gestión de errores y procesamiento en paralelo
En el campo Retry de Step Functions se pueden definir de forma declarativa, para cada tipo de error, el número de reintentos, el tiempo de espera inicial y la tasa de backoff. Por ejemplo, es posible un control como reintentar Lambda.ServiceException hasta 3 veces con backoff exponencial y, en cambio, no reintentar los errores de la lógica de negocio y pasar a otro estado con Catch. Para los errores capturados en el campo Catch, se pueden ejecutar en un estado de reserva el envío de notificaciones o los procesos de limpieza. El estado Map ejecuta en paralelo el mismo procesamiento para cada elemento de una matriz. En el modo de mapa distribuido se puede ejecutar procesamiento por lotes a gran escala con hasta 10,000 ejecuciones en paralelo, tomando como entrada archivos CSV o JSON de un bucket de S3.
Precios de Step Functions
Los flujos de trabajo Standard cuestan unos 0.000025 USD por transición de estado, lo que supone unos 0.10 USD por 4,000 transiciones de estado. Los flujos de trabajo Express se cobran por la combinación del número de ejecuciones (unos 1.00 USD por cada millón) y el tiempo de ejecución (unos 0.00001667 USD por GB-segundo). En las cargas de trabajo de alto rendimiento que se ejecutan miles de veces por segundo, la facturación por transiciones de estado de los flujos de trabajo Standard aumenta bruscamente, por lo que con Express el coste es considerablemente menor. A la inversa, en los flujos de trabajo de larga duración que se ejecutan unas pocas veces al día, Standard es más barato. La capa gratuita es de 4,000 transiciones de estado al mes para los flujos de trabajo Standard y de 25,000 ejecuciones al mes para Express.
Integraciones de servicios y patrones de invocación
El punto fuerte de Step Functions es que permite conectar muchos servicios de AWS con poco código. No solo la invocación de Lambda, sino también diversos servicios, como la escritura en bases de datos o el envío de mensajes, se pueden llamar directamente desde los pasos del flujo de trabajo. Existen las llamadas síncronas, que esperan a que termine el procesamiento antes de pasar al siguiente paso; las asíncronas, que solo inician el procesamiento y no esperan; y las de callback, que esperan a que termine un procesamiento externo, entre otras. Se puede elegir la forma de invocación que se adapte a cada situación. Como se pueden combinar servicios sin escribir código de unión, es posible concentrarse en el diseño del propio flujo de procesamiento y construir flujos de trabajo fáciles de mantener.
Gestión del estado y transmisión de datos
En un flujo de trabajo, el procesamiento avanza mientras se transmiten datos entre los pasos. Step Functions cuenta con un mecanismo que transforma la salida del paso anterior y la pasa como entrada del paso siguiente, y permite extraer o dar formato solo a las partes necesarias. Esto permite controlar de forma declarativa el flujo de datos entre los pasos. No obstante, el tamaño de los datos que se pueden transmitir entre pasos tiene un límite, por lo que se diseña de modo que los datos grandes se coloquen en un almacenamiento y solo se pase una referencia. Al diseñar con claridad el flujo de datos, cada paso recibe de forma fiable la información que necesita, y se puede mantener un flujo de trabajo fácil de entender incluso en procesos complejos.
Observabilidad y depuración
Una gran ventaja de Step Functions es que permite comprender visualmente el estado de ejecución de los flujos de trabajo. Para cada ejecución se registra un historial de qué pasos se ejecutaron, cuándo, y si tuvieron éxito o fallaron. En el flujo de trabajo representado como diagrama se puede ver de un vistazo hasta dónde avanzó el procesamiento y dónde se detuvo, lo que facilita aislar los problemas. También se pueden rastrear las entradas y salidas de cada paso e identificar la causa de un fallo provocado por datos no previstos. Si se combinan los registros y las trazas de ejecución con la supervisión, se pueden detectar anomalías en producción. Poder visualizar flujos de procesamiento complejos resulta útil tanto en el desarrollo como en la operación.
Casos de uso representativos
Step Functions se aprovecha en situaciones en las que se quiere ejecutar varios procesos en orden y de forma fiable. Son ejemplos típicos la orquestación de ETL que realiza en secuencia la extracción / transformación / carga de datos, la coordinación de procesos que conectan varios microservicios y los flujos de negocio que incluyen una aprobación humana a mitad del proceso. También se puede incorporar un procesamiento de compensación que, cuando falla una parte de una serie de procesos, deshace las operaciones realizadas hasta ese momento para mantener la coherencia. También admite usos que procesan grandes cantidades de datos en paralelo. Su valor como plataforma de flujos de trabajo reside en que permite montar con alta fiabilidad procesos de varios pasos con estado que una función aislada no puede expresar por completo.
Resumen
Step Functions es un servicio que gestiona la complejidad de los flujos de trabajo en las arquitecturas serverless. Separa del código la lógica de coordinación entre funciones de Lambda y permite visualizarla / gestionarla con definiciones declarativas de flujos de trabajo. Al optimizar los costes eligiendo entre Standard y Express y estandarizar la gestión de errores con Retry/Catch, se pueden construir aplicaciones serverless robustas.
Referencias (recursos oficiales de AWS)
Las fuentes primarias de esta página son el sitio web y la documentación oficiales de AWS. Consulta las páginas oficiales siguientes para conocer las especificaciones y los precios más recientes.
- AWS Step Functions (página oficial)
- AWS Lambda (página oficial)
- Amazon EventBridge (página oficial)
- Documentación de AWS (oficial)
Si esta página y la documentación oficial difieren, prevalece la documentación oficial.