Diseño de máquinas de estado - Orquestación de flujos de trabajo con Step Functions
Se explican los métodos de diseño de máquinas de estado que aprovechan AWS Step Functions y se presentan los flujos de trabajo visuales, la gestión de errores y la orquestación de flujos de trabajo mediante la integración con Lambda.
Los problemas de la gestión de flujos de trabajo en sistemas distribuidos
En las arquitecturas de microservicios y serverless, la gestión de procesos de negocio complejos que coordinan varios servicios se convierte en un problema. Cada función de Lambda o servicio tiene una única responsabilidad, pero si se implementan por cuenta propia el control del flujo de trabajo completo que los combina, la gestión de errores, los reintentos y la gestión del estado, la complejidad del código aumenta bruscamente. AWS Step Functions es un servicio totalmente administrado que define / ejecuta flujos de trabajo basándose en el concepto de máquina de estado, y resuelve este problema. Los flujos de trabajo se definen de forma declarativa con un lenguaje basado en JSON llamado Amazon States Language (ASL), y el flujo de procesamiento se puede revisar / editar visualmente en el editor visual.
Flujos de trabajo Standard y Express
Step Functions ofrece dos tipos de flujo de trabajo, Standard y Express, y permite una elección óptima según el caso de uso. Los flujos de trabajo Standard admiten ejecuciones de hasta 1 año y garantizan el registro completo del historial de ejecución y la semántica exactly-once. Son adecuados para el procesamiento por lotes de larga duración, los flujos de trabajo que incluyen aprobaciones humanas y los procesos de negocio que requieren una gestión de errores compleja. El precio es de 0.025 USD por cada 1,000 transiciones de estado (a fecha de agosto de 2026 / Este de EE. UU. (Norte de Virginia)), y el historial de ejecución se conserva durante 90 días. Los flujos de trabajo Express tienen ejecuciones de hasta 5 minutos y admiten un procesamiento de alto rendimiento de 100,000 ejecuciones o más por segundo. Son óptimos para cargas de trabajo que requieren un gran número de ejecuciones en poco tiempo, como el procesamiento de datos de IoT, la transformación de datos de streaming en tiempo real y el procesamiento de solicitudes de API de alta frecuencia. La facturación de los flujos de trabajo Express combina el número de ejecuciones (1.00 USD por cada millón) y el tiempo de ejecución (GB-segundo), y su modelo de precios en sí es distinto del de Standard, que se cobra por número de transiciones de estado. Por ello, en las cargas de trabajo que ejecutan procesos con muchas transiciones de estado en poco tiempo / con alta frecuencia, con Express resulta más fácil contener los costes. En cambio, elegir Standard es adecuado para los flujos de trabajo con pocas ejecuciones y de larga duración, o para los casos en que el historial de ejecución completo es un requisito. Qué opción resulta más barata cambia según la combinación de número de transiciones / tiempo de ejecución / uso de memoria, por lo que se comparan las cifras reales de la carga de trabajo aplicándolas a ambos modelos de precios.
Tipos de estado y gestión de errores
Step Functions ofrece 8 tipos de estado y permite expresar diversos patrones de flujo de trabajo. El estado Task se encarga de la invocación de funciones de Lambda y servicios de AWS; el estado Choice, de las bifurcaciones condicionales; el estado Parallel, de la ejecución en paralelo; y el estado Map, del procesamiento iterativo de datos de matrices. El estado Wait controla la espera durante un tiempo especificado; el estado Pass, la transformación / transmisión de datos; y los estados Succeed y Fail, la finalización del flujo de trabajo. En el modo distribuido del estado Map se pueden realizar hasta 10,000 ejecuciones en paralelo, y se pueden construir de forma eficiente pipelines de procesamiento de datos a gran escala. La gestión de errores se logra con dos mecanismos: Retry y Catch. A continuación se muestra un ejemplo de definición de la gestión de errores en ASL.
{
"ProcessOrder": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:123456789:function:process",
"Retry": [
{
"ErrorEquals": ["States.TaskFailed"],
"IntervalSeconds": 3,
"MaxAttempts": 3,
"BackoffRate": 2.0,
"JitterStrategy": "FULL"
}
],
"Catch": [
{
"ErrorEquals": ["States.ALL"],
"Next": "HandleError"
}
]
}
}Retry ofrece un backoff exponencial mediante IntervalSeconds (tiempo de espera inicial) / MaxAttempts (número de reintentos) / BackoffRate (tasa de aumento del tiempo de espera) y automatiza la recuperación ante fallos temporales. El jitter, que añade una variación aleatoria al tiempo de espera, no se aplica de forma predeterminada y solo se activa cuando JitterStrategy se especifica de forma explícita como FULL, como en el ejemplo anterior. Cuando muchas ejecuciones fallan al mismo tiempo, sin jitter los momentos de los reintentos coinciden y vuelven a presionar a los servicios downstream, por lo que en los flujos de trabajo con un alto grado de paralelismo se considera la especificación explícita. Catch define el procesamiento alternativo para cuando se sigue fallando después de los reintentos y hace posible la bifurcación hacia notificaciones de error o procesos de limpieza.
Integración directa con los servicios de AWS
Con la integración del AWS SDK de Step Functions, se pueden invocar directamente más de 9,000 acciones de API de más de 200 servicios de AWS sin pasar por funciones de Lambda (a fecha de agosto de 2026). La escritura de datos en DynamoDB, el envío de mensajes a SQS, las notificaciones mediante SNS, el inicio de tareas de ECS, la ejecución de trabajos de Glue, etc., se pueden describir directamente dentro de la definición de la máquina de estado. Gracias a esta integración directa, ya no es necesario crear funciones de Lambda solo para llamadas simples a la API, y se logran la simplificación de la arquitectura y la reducción de costes. En las integraciones Optimized, la integración con servicios principales como DynamoDB, SQS, SNS, EventBridge, etc. se hace aún más eficiente, y se incorporan el filtrado de respuestas y la gestión de errores. Si se usa el patrón Callback, también se pueden construir flujos de trabajo asíncronos que esperan la respuesta de sistemas externos, lo que da soporte a los flujos de trabajo que incluyen procesos de aprobación humana o la espera de la finalización de API externas. La integración del SDK de Step Functions permite acceder sin problemas a los servicios de AWS mediante la autenticación basada en roles de IAM, y no requiere configuración de autenticación adicional.
Gestión y operación de máquinas de estado con IaC
Las máquinas de estado de Step Functions se pueden gestionar de forma declarativa con SAM (Serverless Application Model) o CDK (Cloud Development Kit). En una plantilla de SAM, el archivo de definición de la máquina de estado (ASL JSON) se referencia de forma externa y se puede desplegar en una sola pila junto con las funciones de Lambda y las políticas de IAM relacionadas.
Resources:
OrderStateMachine:
Type: AWS::Serverless::StateMachine
Properties:
DefinitionUri: statemachine/order.asl.json
DefinitionSubstitutions:
ProcessFunctionArn: !GetAtt ProcessFunction.Arn
OrderTableName: !Ref OrderTable
Policies:
- LambdaInvokePolicy:
FunctionName: !Ref ProcessFunction
- DynamoDBCrudPolicy:
TableName: !Ref OrderTableCon la integración con las métricas de CloudWatch, se pueden supervisar en tiempo real las estadísticas del número de ejecuciones, la tasa de éxito, la tasa de fallos y el tiempo de ejecución. Si se configura una alarma en la métrica ExecutionsFailed, se pueden detectar de inmediato los fallos del flujo de trabajo y notificarlos a través de SNS. Con la integración con X-Ray, se puede rastrear en detalle la latencia de cada paso dentro de la máquina de estado e identificar los cuellos de botella de rendimiento. Si se activa la salida de los registros de ejecución a CloudWatch Logs, se puede conservar a largo plazo un historial detallado de las transiciones de estado y aprovecharlo para auditorías y resolución de problemas.
Precios de Step Functions
(A fecha de agosto de 2026 / precios de la región Este de EE. UU. (Norte de Virginia)) Los flujos de trabajo Standard se cobran por uso, a 0.000025 USD por transición de estado. Si se ejecutan 1 millón de transiciones de estado al mes, se cobran las 996,000 que quedan tras descontar las 4,000 de la capa gratuita, lo que supone unos 24.9 USD. La capa gratuita es de 4,000 transiciones de estado al mes, y se ofrece como una asignación continua que no caduca a los 12 meses de la creación de la cuenta de AWS. Los flujos de trabajo Express se cobran por la combinación del número de ejecuciones (1.00 USD por cada millón) y el tiempo de ejecución. El tiempo de ejecución sigue un sistema escalonado según el uso (los primeros 1,000 GB-hora a 0.06 USD, los siguientes 4,000 GB-hora a 0.03 USD y, a partir de ahí, 0.01642 USD). Convertido a GB-segundo, el primer tramo equivale a unos 0.00001667 USD. Como la memoria se mide redondeando hacia arriba en unidades de 64 MB y el tiempo de ejecución en unidades de 100 milisegundos, cuando se ejecuta una gran cantidad de procesos extremadamente cortos, predomina la facturación por número de ejecuciones. No hay capa gratuita para el número de ejecuciones / el tiempo de ejecución de los flujos de trabajo Express. En las ejecuciones cortas de alto rendimiento, el modelo de precios de Express tiende a ser ventajoso, y para los flujos de trabajo en los que las ejecuciones de larga duración o la conservación del historial de ejecución completo son un requisito, elegir Standard es adecuado. Como el precio unitario varía según la región, compruebe la estimación real en la tabla de precios oficial de la región que se utilice.
Resumen - Elección en el diseño de máquinas de estado
AWS Step Functions, como servicio de orquestación de flujos de trabajo basado en el concepto de máquina de estado, define / gestiona de forma declarativa los flujos de procesamiento complejos de los sistemas distribuidos. Ofrece dos tipos de flujo de trabajo: Standard (ejecución de hasta 1 año / 0.025 USD por cada 1,000 transiciones de estado) y Express (rendimiento del orden de 100,000 ejecuciones por segundo / facturación por número de ejecuciones y tiempo de ejecución). Con ellos da soporte a una amplia gama de casos de uso, desde el procesamiento por lotes de larga duración hasta el procesamiento en tiempo real de alto rendimiento. Con la integración directa del SDK con más de 200 servicios de AWS, hace posible una arquitectura simple que no pasa por funciones de Lambda, y con la gestión de IaC mediante SAM/CDK mejora la eficiencia de desarrollo y la eficiencia de costes.
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.
Si esta página y la documentación oficial difieren, prevalece la documentación oficial.