Uno de los servicios más potentes y usados de AWS para la ejecución de código es AWS Lambda. En este artículo, exploraremos cómo AWS Lambda permite una ejecución de código serverless, ofreciendo function as a service en varios lenguajes de programación, y cómo su modelo de pago por uso lo convierte en una opción eficiente y escalable para diversas aplicaciones. También abordaremos sus límites, beneficios, características y casos de uso más comunes.
Ejecución de código serverless
> Function as a service
Function as a service con varios lenguajes de programación.
> Serverless
No hay VM o contenedor arriba constantemente.
> Pago por uso
Solo se paga mientras se ejecuta la función.
Límites de AWS Lambda
AWS Lambda tiene unos límites predefinidos que se pueden configurar (soft limits), y tiene unos límites absolutos del servicio (hard limits) que no se pueden superar:
Beneficios de AWS Lambda
1. Simplicidad: Evita gestión de VM’s o Contenedores.
2. Coste y eficiencia: Pago por uso.
3. Escalabilidad: Automática.
4. Flexibilidad: Disponible para varios lenguajes de programación.
5. Orientado a eventos: Ideal para todas arquitecturas, especialmente orientada a eventos.
6. Sinergias: Integración con otros servicios, de AWS o externos.
Características de AWS Lambda
Entre las principales características de este servicio podemos destacar:
- Capas: Para encapsular lógica común de diferentes funciones.
- Alias y versiones: Para tener diferentes alias de una misma función ligados a diferentes versiones.
- Monitorización y logs: Multitud de métricas, capacidad de registrar en log y de hacer debug sobre otros servicios que se invocan dentro de la función.
- Configuración de máquina: Para elegir la potencia y tiempos deseados.
- Variables de entorno: Para evitar valores “hardcodeados” dentro de la función.
- Máquinas de estado: Para realizar flujos de varias funciones.
- Seguridad: Se necesitan permisos para los servicios que disparan la función lambda y para los servicios usados dentro de la función lambda.
Usos de AWS Lambda
Hay una larga lista de servicios dentro de AWS que pueden disparar Lambda de forma nativa, siendo algunos de ellos síncronos y otros asíncronos (“invoco y me olvido”).
Por ejemplo, hay 3 disparadores muy comunes:
- API GATEWAY: Una petición a la API se pasa a Lambda para ejecutar una lógica.
- DYNAMODB: La modificación de un registro dispara la ejecución de una lambda.
- S3: La escritura de algún fichero dispara la ejecución de una lambda.
Por otro lado, dentro de una función Lambda podemos incluir la lógica que deseemos, pudiendo realizarse contra servicios nativos de AWS o contra servicios externos que sean accesibles desde AWS.
En definitiva, AWS Lambda es un servicio ideal para muchísimos tipos de cargas de trabajo, que puede interactuar con multitud de servicios, estando presente en casos de uso como los siguientes (y muchos otros más).
- API Backend
- File processing
- Data processing
- IoT
- Scheduled tasks
- Image & Video processing / transcoding
- Cryptography
- ETL
Blogs Relacionados:
> Serverless, la solución ganadora