Cold start
La espera extra cuando una función serverless tiene que arrancar antes de responder.
Un cold start (arranque en frío) es la demora que aparece cuando llega un pedido y no hay ninguna copia de tu código lista para atenderlo. En plataformas serverless como AWS Lambda, no corre nada mientras nadie llama. Cuando entra un pedido, la plataforma tiene que conseguir una máquina, crear un entorno aislado chiquito, cargar tu código y sus librerías y correr tu configuración inicial, todo antes de ponerse con el trabajo en sí.
Una vez que ese entorno existe, la plataforma lo guarda un rato. Los pedidos que caen ahí son warm starts (arranques en caliente) y se saltean toda esa preparación. Entonces el primer pedido después de un rato sin uso, o los pedidos de más en un pico repentino que necesitan copias nuevas, pagan el cold start; el resto no.
Cuánto tarda varía muchísimo: desde decenas de milisegundos para una función chica hasta varios segundos para una grande con librerías pesadas o un runtime que arranca lento. Para un proceso que corre de noche no importa; para una API que una persona está esperando, sí. Los arreglos típicos son paquetes más chicos, hacer menos cosas al arrancar y pagar para tener algunas copias siempre calientes, lo que AWS llama provisioned concurrency.
Para quedarse
- Pasa cuando no hay una copia lista del código y hay que crear una.
- Los warm starts reusan un entorno que ya existe y se saltean la preparación.
- Va de milisegundos a segundos según el tamaño del código y el runtime.
- Código más chico y capacidad siempre caliente lo achican.
Para seguir leyendo
- Ciclo de vida del entorno de ejecución de Lambda (documentación de AWS)
- Cold start (computing) en Wikipedia (en inglés)