DEV Community

kevin
kevin

Posted on

Optimizaciones Lambda AWS 👨‍💻

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.

Image description

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

Image description

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

Image description

Image description

Image description

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

Image description

Image description

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" }
Enter fullscreen mode Exit fullscreen mode

Se inicia la ejecución

Image description

Image description

Tenemos el siguiente resultado el cual nos brinda información muy útil para realizar ajustes en nuestra lambda

Image description

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

Top comments (0)