AWS Lambda

Servicio de computación serverless que ejecuta código sin gestión de servidores, con facturación completamente por uso basada en número de solicitudes y tiempo de ejecución

Descripción general

AWS Lambda es un servicio de computación serverless que permite ejecutar código sin provisionar ni gestionar servidores. Ejecuta funciones automáticamente en respuesta a eventos de más de 200 servicios de AWS, como subida de archivos a S3, solicitudes HTTP a API Gateway o cambios de datos en DynamoDB. Soporta los principales runtimes incluyendo Python, Node.js, Java, Go y .NET, y también permite despliegue mediante imágenes de contenedor. Con una capa gratuita permanente de 1 millón de solicitudes y 400,000 GB-segundos mensuales, las aplicaciones pequeñas pueden operarse prácticamente gratis. El límite de tiempo de ejecución es 15 minutos y la memoria configurable hasta 10 GB.

Uso diferenciado de invocación síncrona, asíncrona y event source mapping

Lambda tiene 3 modelos de invocación que deben seleccionarse apropiadamente según la naturaleza de la carga de trabajo. La invocación síncrona es representada por solicitudes HTTP vía API Gateway, donde el invocador espera la respuesta. Como la latencia impacta directamente la experiencia del usuario, la supresión del cold start es importante. La invocación asíncrona se usa con triggers de notificaciones de eventos S3 o temas SNS, donde Lambda recibe eventos en una cola y los procesa secuencialmente. En caso de fallo, se reintenta automáticamente hasta 2 veces, y si aún falla, puede enviarse a una dead-letter queue (SQS o SNS). Event source mapping obtiene mensajes en lotes de colas SQS o streams Kinesis, controlando el balance entre throughput y costo ajustando batch size y batch window. La concurrencia simultánea es de 1,000 por defecto por región, expandible a decenas de miles mediante solicitud de aumento.

Causas del cold start y contramedidas

El cold start es un retraso de cientos de milisegundos a varios segundos que ocurre cuando se crea un nuevo entorno de ejecución. Las causas son la inicialización del runtime, la extracción del paquete de despliegue y el procesamiento de inicialización fuera del código de función (como establecer conexiones a BD). La contramedida más fiable es Provisioned Concurrency, que mantiene caliente un número especificado de entornos de ejecución, eliminando completamente el cold start. Sin embargo, genera cargos incluso en espera, por lo que es racional limitarlo a casos con requisitos estrictos de latencia como backends de API con tráfico constante. Para el runtime Java, la función SnapStart permite restaurar desde un snapshot inicializado, reduciendo el tiempo de cold start hasta un 90%. Azure Functions tiene el mismo problema de cold start pero no tiene equivalente a SnapStart, siendo la principal contramedida mantener instancias calientes con el plan Premium. Además, el plan de consumo de Azure Functions tiene un límite de ejecución predeterminado de 10 minutos, mientras que Lambda permite hasta 15 minutos. Libros sobre desarrollo serverless (Amazon) explican en detalle ejemplos prácticos de este tipo de ajuste de rendimiento.

Integración con Step Functions y estrategia de despliegue

Para flujos de trabajo que no se completan con una sola función Lambda, Step Functions es efectivo. Permite definir máquinas de estado que coordinan múltiples funciones Lambda con control de secuencia, ejecución paralela, bifurcación condicional y manejo de errores, configurando políticas de reintento y timeouts de forma declarativa. Un caso típico es gestionar como flujo de trabajo la secuencia "generación de thumbnail → extracción de metadatos → registro en BD → envío de notificación" tras la subida de una imagen. Para el despliegue se recomienda la gestión IaC con AWS SAM o Serverless Framework. Definiendo funciones Lambda, API Gateway y tablas DynamoDB juntos en templates SAM e integrándolos en pipelines CI/CD, se automatiza desde el cambio de código hasta el despliegue. Aprovechando el versionado y aliases de funciones, también son posibles despliegues canary y blue/green.

共有するXB!