Este post ha sido escrito con el apoyo de Alexis Polo @aledpolo
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.
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
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
Top comments (0)