Pronóstico en AWS

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.

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.

Mi estimación estaba mal por 57%. Lo dejo escrito porque la diferencia entre estimar y medir es el trabajo.

52 → 15minutos Serial contra el techo de plataforma
1.78 mssnapshot Fuera del handler. Dentro: 707.5 ms
0.1476AR(1) Walk-forward expansiva. Boosting: 0.1711declarar la métrica
Dónde se rompe

Se rompe a los 510 productos

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.