# Cold start

> La espera extra cuando una función serverless tiene que arrancar antes de responder.

- Nivel: Intermedio
- Temas: Cloud
- URL: https://tidbit.legios.com.ar/es/cold-start/
- En inglés: [Cold start](https://tidbit.legios.com.ar/cold-start/)

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**.

## Una analogía

Como un café que apaga la máquina de espresso cuando no hay nadie. El primer cliente de la mañana espera a que caliente; todos los que vienen después tienen el café al toque.

## 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)](https://docs.aws.amazon.com/es_es/lambda/latest/dg/lambda-runtime-environment.html)
- [Cold start (computing) en Wikipedia (en inglés)](https://en.wikipedia.org/wiki/Cold_start_(computing))

## Términos relacionados

- [Serverless](https://tidbit.legios.com.ar/es/serverless/): Código que corre solo cuando alguien lo llama; el servidor no lo ves nunca.
- [AWS Lambda](https://tidbit.legios.com.ar/es/aws-lambda/): Correr un pedazo de código solo cuando pasa algo, sin ningún servidor que administrar.
- [Sandboxing](https://tidbit.legios.com.ar/es/sandboxing/): Correr un programa en una caja cerrada para que no pueda dañar nada afuera.
- [API](https://tidbit.legios.com.ar/es/api/): El menú de cosas que un programa le deja pedir a otro programa.
- [Paquete](https://tidbit.legios.com.ar/es/packet/): El pedacito en que se corta cada dato de internet antes de viajar.
