Ajuste de rendimiento y optimización

Aplicaciones sin servidor con AWS Lambda

Claudio Canales

Senior DevOps Engineer

Rendimiento = latencia + coste

  • Pagas por tiempo.
  • Afinar rendimiento también reduce costes.
  • Mide antes de ajustar.
  • Cambia una cosa cada vez.

Cronómetro y coste

Aplicaciones sin servidor con AWS Lambda

Dónde se va el tiempo

  • Inicialización.
  • Ejecución del handler.
  • Tiempo esperando llamadas externas.

Init vs handler vs llamadas externas

Aplicaciones sin servidor con AWS Lambda

Arranque en frío vs caliente

Arranque en frío

  • Lambda necesita un entorno nuevo.

Arranque en caliente

  • Reutiliza un entorno existente.
  • El handler corre con menos sobrecarga.

Cronología: frío vs caliente

Aplicaciones sin servidor con AWS Lambda

Trabajo en init vs en el handler

  • Imports y configuración global van en init.
  • Mucho trabajo en init = arranques en frío más lentos.
  • La duración de init aparece en métricas.

División entre init y handler

Aplicaciones sin servidor con AWS Lambda

Reutiliza clientes en invocaciones calientes

  • Crear un cliente en cada invocación repite el coste.
  • Reutilízalo cuando el entorno esté caliente.

Reutilización de cliente global

Aplicaciones sin servidor con AWS Lambda

Patrón: cliente fuera del handler

import boto3
sts = boto3.client("sts")
def handler(event, context):
    return sts.get_caller_identity()

Cliente creado una sola vez

Aplicaciones sin servidor con AWS Lambda

Cachea lo que puedas

  • Mantén datos en memoria.
  • Usa /tmp para archivos temporales pequeños.
  • Cachea con cuidado e invalida cuando toque.

Caché en memoria y /tmp

Aplicaciones sin servidor con AWS Lambda

Mantén las dependencias ligeras

  • Paquetes grandes tardan más en cargar.
  • Elimina lo que no uses.
  • Mantén dependencias lo más ligeras posible.

Paquete ligero vs pesado

Aplicaciones sin servidor con AWS Lambda

Registra con cabeza

  • Demasiado logging añade coste y ruido.
  • Apunta a mensajes pequeños y estructurados.
  • Que sea buscable; ayuda a trazar y depurar.

Volumen de logs vs señal

Aplicaciones sin servidor con AWS Lambda

Reduce la sobrecarga de llamadas externas

  • Las llamadas a otros servicios son lo más lento.
  • Reduce llamadas; agrupa cuando puedas.
  • Pon timeouts para que los fallos no cuelguen.

Minimizar llamadas externas

Aplicaciones sin servidor con AWS Lambda

La memoria también afecta a la CPU

  • La CPU escala con la memoria.
  • Código limitado por CPU puede acabar antes.
  • Más memoria puede bajar duración o coste.
  • Prueba para hallar el valor óptimo.

Memoria -> CPU -> runtime más rápido

Aplicaciones sin servidor con AWS Lambda

Encuentra el punto óptimo de coste

  • El mejor ajuste de memoria minimiza el coste total.
  • La curva cae y luego se aplana o sube.
  • Repite pruebas tras cambios.

Curva de coste vs memoria

Aplicaciones sin servidor con AWS Lambda

Mide con CloudWatch

  • Sigue Duration y Init duration.
  • Controla errores y throttles.
  • Vigila latencias cola (p95, p99).

Métricas de rendimiento en CloudWatch

Aplicaciones sin servidor con AWS Lambda

Reducir arranques en frío

  • Reduce lo que corre en init.
  • Mantén el paquete ligero.
  • Reutiliza configuraciones costosas.
  • Considera entornos aprovisionados.

Checklist para reducir arranques en frío

Aplicaciones sin servidor con AWS Lambda

Puntos clave

  • Sabe a dónde se va el tiempo.
  • Reutiliza clientes y cachea con cuidado.
  • La memoria cambia CPU y duración.
  • Mide cada cambio.

Puntos clave de rendimiento

Aplicaciones sin servidor con AWS Lambda

¡Vamos a practicar!

Aplicaciones sin servidor con AWS Lambda

Preparing Video For Download...