Atlasingeniería

Fundamentos de cloudSemi-SeniorTema 5Semi-Senior

Funciones serverless y sus trade-offs

Serverless no es no tener servidores: es no administrarlos y pagar por ejecución. Eso cambia el modelo de costo, el de concurrencia y el de latencia, y cada uno tiene un caso donde conviene y otro donde sale carísimo.

Datos de proveedores verificados contra la documentación oficial el 19 de sept de 2026.

La promesa es difícil de resistir: subís una función, el proveedor la ejecuta cuando alguien la llama, escala sola y cuando nadie la usa no se paga nada. Sin instancias, sin parches, sin balanceador.

Todo eso es cierto. Lo que la promesa no dice es que a cambio cambian tres reglas del juego —cómo se cobra, cómo escala y cuánto tarda la primera invocación— y que hay arquitecturas donde esas tres reglas juegan en contra.

Qué cambia respecto de una instancia

  1. Datos

    Lo que cargan tus usuarios y su clasificación

    Tu equipo
  2. Identidad y permisos

    Quién entra, con qué rol y hasta dónde llega

    Compartida
  3. Aplicación

    Tu código y su configuración

    Tu equipo
  4. Runtime y dependencias

    Intérprete, bibliotecas, servidor de aplicaciones

    Proveedor
  5. Sistema operativo

    Kernel, parches, usuarios del sistema

    Proveedor
  6. Virtualización

    Hipervisor, aislamiento entre inquilinos

    Proveedor
  7. Hardware y red física

    Servidores, discos, switches, cableado

    Proveedor
  8. Instalaciones

    Edificio, energía, refrigeración, acceso físico

    Proveedor

5 de 8 capas las opera el proveedor · 1 compartida · 2 quedan de tu lado · 5 menos que con un servidor propio

Movelo a IaaS y mirá cuántas capas vuelven a quedar de este lado.
Instancia o contenedor siempre prendidoFunción serverless
Unidad de cobroTiempo encendidoInvocaciones y tiempo de ejecución por memoria asignada
Con cero tráficoSe paga igualNo se paga
EscaladoAutoescalado, de minutosPor invocación, de milisegundos
Estado en memoriaPersiste entre requestsSólo mientras el entorno siga tibio
Duración máximaLa que haga faltaUn tope del servicio, del orden de minutos
Primera invocaciónYa está calientePuede pagar un arranque en frío
AWS Lambda, Cloud Run functions y Azure Functions comparten el modelo; los topes concretos difieren.

La consecuencia que más sorprende: la memoria asignada también determina la CPU. Subir la memoria de una función que hace trabajo de cómputo puede bajar el costo total, porque termina proporcionalmente más rápido. Es el único caso donde pedir más recursos sale más barato.

El arranque en frío, sin mitología

Cuando no hay un entorno listo, el proveedor tiene que crear uno: descargar el código, levantar el tiempo de ejecución, correr la inicialización del módulo y recién ahí ejecutar el manejador.

Qué domina el tiempo de arranque

  1. El tamaño del paquete: un artefacto con cien megabytes de dependencias tarda en bajarse y descomprimirse.
  2. El tiempo de ejecución: los lenguajes interpretados y los binarios nativos arrancan rápido; una JVM o un .NET con mucha inicialización, no tanto.
  3. Lo que se hace fuera del manejador: leer secretos, abrir conexiones y construir clientes al cargar el módulo se paga una vez por entorno nuevo, y conviene que sea así.
  4. Estar dentro de una red privada: históricamente era el costo más grande; hoy los proveedores lo resolvieron en gran medida con interfaces de red preasignadas.

Antes de seguir, predecí

Una API serverless recibe tráfico constante de 50 requests por segundo. ¿Cuántos usuarios sufren el arranque en frío?

Concurrencia: escala sola hasta que choca contra algo

El modelo de concurrencia de una función es simple: una invocación por entorno a la vez. Diez requests simultáneas son diez entornos. Eso es lo que hace que escale sin configurar nada, y también lo que hace que el sistema de al lado sufra.

Los tres límites que aparecen en orden

  1. El límite de concurrencia de la cuenta, compartido entre todas las funciones de la región. Una función que se dispara puede dejar sin capacidad a las demás; por eso existe reservar concurrencia por función.
  2. Lo que hay detrás: la base, la API de terceros, el sistema heredado. Escalar a mil invocaciones concurrentes sobre un servicio que tolera cincuenta no es escalar, es un ataque propio.
  3. El presupuesto: con pago por ejecución, un bucle de invocaciones o un evento que se retroalimenta se traduce en factura, no en caída. Conviene un tope de concurrencia y una alerta de gasto.

Dónde está el cruce de costos

Con pago por uso, la pregunta no es “¿cuánto sale?” sino “¿a partir de qué nivel de uso deja de convenir?”.

  • Bajo demanda

    US$ 10,00

    Pagás lo encendido. Apagar ahorra.

  • Compromiso a 1 año

    US$ 21,90

    Se paga el mes entero. Conviene a partir de 438 h.

  • Compromiso a 3 años

    US$ 14,60

    Se paga el mes entero. Conviene a partir de 292 h.

  • Capacidad interrumpible

    US$ 2,00

    Te la pueden sacar con poco aviso. Sólo para trabajo que tolera cortes.

Sobre un precio de referencia de US$ 0,05 por hora. Los descuentos son órdenes de magnitud típicos: el número real sale de la calculadora del proveedor.

El mismo razonamiento del compromiso contra el pago por hora: bajá las horas de uso y mirá cuándo conviene no comprometerse.

La regla práctica que resume el cruce: a tráfico bajo o muy irregular, serverless es imbatible; a tráfico alto y parejo, una instancia o un contenedor siempre prendido sale menos. En el medio pesan más otras cosas: cuánto tiempo de operación se ahorra y qué tan bien encaja el trabajo en el modelo de ejecución.

Antes de seguir, predecí

Un trabajo procesa video, tarda 40 minutos por archivo y corre dos veces por día. ¿Va en una función?

Cuándo conviene y cuándo no

CasoEncajaPor qué
Reaccionar a un evento del proveedorMuy bienEl disparador ya existe y el trabajo es corto
API de tráfico bajo o irregularBienCon cero tráfico no se paga y escala sin configurar
Tareas programadasBienCorren minutos por día y una instancia estaría ociosa
API de latencia muy estrictaMalEl arranque en frío es difícil de acotar del todo
Proceso largo o que necesita estadoMalTope de duración y entorno efímero
Tráfico alto y parejoRegularFunciona, pero el costo por invocación deja de convenir
Más a fondo · nivel seniorEl costo que no está en la factura: probar y observar

Lo que más se subestima de una arquitectura de funciones no es el precio por invocación sino la dificultad de entenderla cuando falla. El flujo deja de ser una pila de llamadas y pasa a ser una cadena de eventos entre servicios gestionados, así que hace falta trazado distribuido desde el primer día: sin un identificador de correlación que viaje con el evento, reconstruir qué pasó es leer logs de cinco servicios y adivinar el orden.

Y probar localmente deja de ser gratis: los emuladores cubren una parte, pero los permisos, los disparadores y los límites de concurrencia sólo se comportan de verdad en la nube. La respuesta habitual es un entorno desplegable por rama —barato justamente porque con cero tráfico no se paga— y tests de integración contra ese entorno en vez de simulaciones locales que dan falsa confianza.

Cierre

Autoevaluación

¿Lo entendiste?

¿Por qué conviene construir el cliente de la base fuera del manejador?
En una función, ¿qué efecto tiene subir la memoria asignada?
¿Cuándo es un problema real el arranque en frío?
Mil invocaciones concurrentes contra una base que acepta 200 conexiones. ¿Qué se hace?