Optimizaciones Lambda AWS

Kevin L
4 min readOct 5, 2024

--

Utilizar empaquetadores como esbuild o webpack, en varias pruebas realizadas se evidencio mejora usando esbuild por tiempos y tamaño de compilación aquí una referencia. Ambos tienen soporte offline.

npm: serverless-esbuild

Serverless Webpack — Serverless Framework: Plugins

Uso de Graviton2

Cargas de trabajo

  • Multithreading o realizar muchas operaciones de E/S
  • Inferencia de aprendizaje automático basada en la CPUs
  • Codificación de vídeo
  • Gaming
  • Procesamiento

Costo

  • 20% más económico, incluida la concurrencia aprovisionada
  • Apoyado en Compute Savings Plans

Configuración en Serverless Framework

Se debe agregar el la siguiente linea architecture: 'arm64'

# serverless.yml provider: architecture: 'arm64'

Uso de AWS Lambda Power Tunning

Medir el tamaño de memoria costo eficiente es una de las practicas de optimización muy fáciles y útiles.

Por defecto usando frameworks como serverless framework o SAM se puede definir de forma granular la cantidad de memoria a cada lambda pero es bueno cuanta memoria y vCPU (Virtual CPUs) brindan mejores tiempos de respuesta y con ello mejor.
Tenemos una lambda que realiza una operación de lectura en una BD y trae 50 registros para la cual se tiene un cuadro comparativo con las diferentes configuraciones de memoria, tiempos de respuesta y el costo.

Un dato muy importante es que la configuración de 128 MB tiene un costo similar a la opción de 1536 MB pero la diferencia en tiempos es significativa 10 a 1.

No siempre mas memoria significan incrementar costos

Guía de uso

Opte por la opción que implique menor esfuerzo opción #1. Abrir el siguiente link

Application Search — AWS Serverless Application Repository teniendo iniciada sesión en la cuenta AWS.

En la siguiente plantilla se pueden configurar el rango de memoria RAM permitida para la evaluación

Una vez termine el proceso de creación se debe dar clic en el link powerTuningStateMachine

Se ingresa el json con la información de la lambda a probar

{ "lambdaARN": "your-lambda-function-arn", "powerValues": [128, 256, 512, 1024, 2048, 3008], "num": 10, "payload": "{}", "parallelInvocation": true, "strategy": "cost" }

Se inicia la ejecución

Tenemos el siguiente resultado el cual nos brinda información muy útil para realizar ajustes en nuestra lambda https://lambda-power-tuning.show/#gAAAAQACAAQACMAL;AACJQ6uqGUMAAIhBAAA4QVVVPUEAAEBB;ERP6NIWNDDXGP/gzEzwvNBM8rzQesAA1

Interpretación de resultado

Una vez finalizado se debe eliminar el stack para ello nos vamos a CloudFormation > Stacks seleccionar el stack de power Tunings y se lo elimina con eso se borraran todos los recursos creados, para evitar incurrir en gastos adicionales.

Referencias:

Performance optimization — AWS Lambda

Lambda execution environments — AWS Lambda

Memory and computing power — AWS Lambda

Optimizing static initialization — AWS Lambda

Architecture and Best Practices — AWS Lambda

Profiling functions with AWS Lambda Power Tuning — AWS Lambda

GitHub — alexcasalboni/aws-lambda-power-tuning: AWS Lambda Power Tuning is an open-source tool that can help you visualize and fine-tune the memory/power configuration of Lambda functions. It runs in your own AWS account — powered by AWS Step Functions — and it supports three optimization strategies: cost, speed, and balanced.

--

--

Kevin L
Kevin L

Written by Kevin L

Desarrollador fanático de las nuevas tecnología y apasionado de la automatización de procesos de todo tipo

No responses yet