Escalado y controles de simultaneidad

Aplicaciones sin servidor con AWS Lambda

Claudio Canales

Senior DevOps Engineer

Escalado en una imagen

  • Más demanda -> más ejecuciones en paralelo.
  • Cada ejecución usa un entorno de ejecución.
  • Simultaneidad = ejecuciones ocurriendo ahora.

Pico de demanda -> más entornos

Aplicaciones sin servidor con AWS Lambda

¿Qué es la simultaneidad?

  • Una invocación = una unidad de trabajo.
  • Simultaneidad = cuántas se ejecutan ahora.
  • Si hay 10 en ejecución, simultaneidad = 10.

Invocaciones en paralelo

Aplicaciones sin servidor con AWS Lambda

Estimar simultaneidad necesaria

  • Regla práctica: concurrency = rps * duration.
  • Reduce duración para bajar la simultaneidad.
  • Úsalo para dimensionar límites con seguridad.

Fórmula de simultaneidad

Aplicaciones sin servidor con AWS Lambda

Ejemplo: 50 rps a 200 ms

  • 200 ms = 0,2 segundos.
  • 50 * 0,2 = 10 ejecuciones concurrentes.
  • Código más rápido = menos ejecuciones en paralelo.

Ejemplo de cálculo de simultaneidad

Aplicaciones sin servidor con AWS Lambda

Límites: pool de cuenta vs por función

  • La simultaneidad se limita a nivel de cuenta.
  • Reserva parte del pool para una función crítica.
  • Las demás comparten el resto.

Pool de simultaneidad de la cuenta

Aplicaciones sin servidor con AWS Lambda

Simultaneidad reservada: tope duro

  • Una válvula de seguridad.
  • Limita el trabajo en paralelo.
  • Por encima del tope, se estrangula.
  • Una función ruidosa no agota la capacidad.

Tope de simultaneidad reservada

Aplicaciones sin servidor con AWS Lambda

Estrangulamiento: cómo se ve

  • Lambda estrangula al llegar al límite.
  • La llamada no obtiene ejecución normal.
  • Verás estrangulamientos en el monitoreo.

Señales de estrangulamiento

Aplicaciones sin servidor con AWS Lambda

Simultaneidad aprovisionada: capacidad en caliente

  • Un pool de entornos preinicializados.
  • A menudo detrás de un alias.
  • Las solicitudes arrancan más rápido.

Pool tibio de simultaneidad aprovisionada

Aplicaciones sin servidor con AWS Lambda

Arranque en frío vs aprovisionada

Arranque en frío

  • Retraso de inicialización único.
  • La primera solicitud paga el costo de arranque.

Aprovisionada

  • Inicialización hecha por adelantado.
  • La primera solicitud no paga ese costo.

Cronograma: frío vs aprovisionada

Aplicaciones sin servidor con AWS Lambda

Reservada vs aprovisionada (problemas distintos)

  • La reservada controla la carga.
  • La aprovisionada controla la latencia de arranque.
  • Muchas funciones en producción usan ambas.

Comparación: reservada vs aprovisionada

Aplicaciones sin servidor con AWS Lambda

Protege sistemas downstream

  • La base de datos soporta pocas conexiones.
  • Un tope de simultaneidad lo evita.
  • Un pico de tráfico puede causar caída.

El tope de simultaneidad protege la base de datos

Aplicaciones sin servidor con AWS Lambda

Ráfagas vs tráfico estable

  • Los picos crean muchos entornos en paralelo.
  • Handlers lentos mantienen alta la simultaneidad.
  • Los topes suavizan el pico.
  • Reducir duración también escala.

Tráfico en ráfagas vs estable

Aplicaciones sin servidor con AWS Lambda

Fallos y reintentos aumentan la carga

  • Los reintentos amplifican el tráfico.
  • Los límites de simultaneidad reducen el impacto.
  • Un bucle de fallos puede saturar dependencias.

Los reintentos multiplican la carga

Aplicaciones sin servidor con AWS Lambda

Flujo simple de ajuste

  • Empieza midiendo.
  • Pon tope cuando haya estrangulamientos o presión.
  • Añade capacidad aprovisionada si el frío sube la latencia.

Medir -> tope -> pre-calentar

Aplicaciones sin servidor con AWS Lambda

Ideas clave

  • La simultaneidad ayuda a pensar el escalado.
  • Estima: rps * duration.
  • La reservada pone tope; vigila estrangulamientos.
  • La aprovisionada reduce la latencia por arranque en frío.

Conclusiones sobre simultaneidad

Aplicaciones sin servidor con AWS Lambda

¡Vamos a practicar!

Aplicaciones sin servidor con AWS Lambda

Preparing Video For Download...