Estimé 25 segundos. Medí 39.17.
- Trabajo
- Pronóstico distribuido sobre Step Functions
- Rol
- Diseño de la arquitectura y construcción
- Periodo
- 2025
- AWS
- Step Functions
- CDK
- Series de tiempo
El encargo
El cálculo de pronósticos corría en serie y tardaba 52 minutos, contra un techo de plataforma de 15. Había que repartirlo sin perder trazabilidad ni disparar el costo de observabilidad. Diseñé la máquina de estados, la desplegué con CDK y medí cada decisión antes de dejarla.
Cómo está construido
La versión serial tardaba 52 minutos contra un techo de plataforma de 15, así que la partí con un estado Map sobre Step Functions, 6 Lambdas, S3 y DynamoDB, desplegado con CDK. Puse max_concurrency=8 porque la cuota de la cuenta era 10, no porque 8 fuera el número óptimo.
Probé gradient boosting esperando que ganara. Ganó AR(1). Para las métricas elegí DynamoDB sobre CloudWatch porque a esa cardinalidad CloudWatch costaba 44 USD al mes.
Una advertencia
Mi estimación estaba mal por 57%. Lo dejo escrito porque la diferencia entre estimar y medir es el trabajo.
Dónde se rompe
Se rompe a los 510 productos
Dónde y por qué
514 bytes por elemento del Map contra el tope de 256 KB de estado de Step Functions. Sobre ese número hay que paginar el Map o mover la carga a S3.