Un par de términos de jerga, descifrados
- Cold start (arranque en frío) — Cuando el código no ha corrido en un rato, la plataforma tiene que despertarlo. Esa primera solicitud es más lenta (de una fracción de segundo a unos pocos segundos). Las funciones casi no sufren esto; las funciones a veces sí; los contenedores y VMs siempre activos no lo sufren. Para la mayoría de las apps esto es invisible; para un flujo de pago que debe sentirse ágil, puede importar.
- Escalado — Manejar más usuarios sin caerse. El escalado automático significa que la plataforma añade capacidad por ti. El escalado manual significa que tú haces clic en botones o simplemente se rompe bajo carga. "Escala a cero" es una frase relacionada que verás mucho: cuando nadie usa tu app, no cuesta nada.
- Estado — Datos que necesitan persistir (una , archivos subidos, una de usuario). Las capas estáticas y serverless suelen ser "sin estado" (stateless): olvidan todo entre solicitudes, así que el estado vive en una base de datos o servicio de almacenamiento separado. Por eso casi toda app real es "tu hosting más una base de datos en algún lugar", no una sola caja mágica.
- Región — En qué parte del mundo se encuentran físicamente tu código y tus datos. Afecta la velocidad (más cerca es más rápido) y a veces la ley (algunos datos deben permanecer en un país específico). Para un primer proyecto, elige la región más cercana a tus usuarios y sigue adelante.
Aquí está todo el recorrido de una solicitud, y dónde vive cada pieza. El navegador habla con un edge cercano, que sirve archivos en o despierta tu código, el cual acude a la base de datos por cualquier cosa que deba recordar:
┌─────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ BROWSER │ ───▶ │ EDGE / CDN │ ───▶ │ SERVER CODE │ ───▶ │ DATABASE │
│ user │ │ near user │ │ function/box │ │ state │
└─────────┘ └──────────────┘ └──────────────┘ └──────────┘
▲ │ │ │
│ cache HIT │ stateless │ remembers │
└──────────────────┘ (forgets between │ things │
fast reply requests) ◀───────┘ ◀─────────────────┘