Contenido del curso
Buenas prácticas en serverless
Serverless no es solo lambda
Lambda layers
Asegurando nuestra app serverless
Conectando ApiGateway con SQS
Bonus
Cierra del curso
Cuándo y cómo usar asincronismo en Lambda
Resumen
El asincronismo en AWS Lambda permite optimizar aplicaciones serverless delegando responsabilidades entre servicios sin bloquear procesos. Si trabajas con funciones Lambda y quieres escalar sin saturar tu infraestructura, entender cuándo aplicar procesos asíncronos y cómo configurar la concurrencia es clave para construir arquitecturas eficientes.
¿Qué significa realmente el asincronismo en aplicaciones serverless?
Mucha gente confunde asincronismo con lentitud, pero no son lo mismo. El asincronismo se trata de optimización, delegación y buenas prácticas.
Piensa en aplicaciones de pagos: muchas procesan transacciones de forma asíncrona. Las redes sociales, por su volumen de tráfico, delegan procesos para que se ejecuten en segundo plano. El usuario no nota qué corre síncrono o asíncrono, pero por detrás hay una orquestación pensada para reducir bloqueos.
Un caso muy común a nivel de desarrollo aparece cuando múltiples Lambdas quieren acceder directamente a una base de datos para modificar un registro. Eso puede tener implicaciones serias y, según el caso de negocio, conviene volverlo asíncrono.
¿Qué es el asincronismo en Lambda? Es la capacidad de delegar tareas a otros servicios o colas para que se ejecuten en paralelo, sin que tu aplicación quede esperando una respuesta inmediata.
¿Cuál es la diferencia entre reserved concurrency y provisioned concurrency?
Lambda ofrece dos opciones de configuración que se confunden con facilidad, pero cumplen funciones distintas.
La reserved concurrency es un número que le indica a una función cuántas Lambdas en paralelo pueden ejecutar un proceso. Por ejemplo, si tienes la función thumbnail que redimensiona imágenes, puedes establecer una concurrencia reservada de tres y solo tres imágenes se procesarán al mismo tiempo. Si no la defines y llegan muchas imágenes al bucket, puedes saturar Lambda y golpear el límite flexible de 1000 ejecuciones concurrentes por defecto, que no se puede aumentar fácilmente.
La provisioned concurrency es distinta. Imagínala como el equipo de fútbol en la banca: son las Lambdas que ya están calentando, listas para entrar cuando algo se sobrecargue [03:30]. Mientras la reserved concurrency define cuántas Lambdas se ejecutan, la provisioned concurrency mantiene Lambdas precalentadas para responder cuando aparece un cuello de botella.
¿Cuándo usar reserved concurrency? Cuando quieras limitar cuántas funciones se ejecutan en paralelo y proteger recursos como una base de datos relacional.
¿Cómo decides qué procesos volver asíncronos en tu arquitectura?
Una buena regla mental: cuando construyes aplicaciones, pregúntate siempre ¿esto puede ser asíncrono?. Si la respuesta es sí, hazlo asíncrono.
Determinar qué se puede delegar viene con la experiencia y el conocimiento del negocio. En algunos casos vas a necesitar conectarte sí o sí a una base de datos, y ahí entra otro actor importante.
¿Qué es RDS Proxy y por qué importa con Lambda?
El RDS Proxy es un servicio de Amazon creado para conectar múltiples Lambdas a bases de datos relacionales que no escalan con la misma flexibilidad que las bases serverless. Muchas bases de datos relacionales nacieron antes del paradigma serverless y presentan problemas con conexiones simultáneas masivas.
Tienes dos caminos cuando enfrentas esto:
- Convertir las funcionalidades que requieren acceso a base de datos en procesos asíncronos.
- Implementar RDS Proxy para gestionar las conexiones de manera eficiente.
¿Qué servicios de AWS puedes integrar para procesos asíncronos?
Más allá de S3 y SQS, AWS ofrece un ecosistema amplio para construir flujos asíncronos. Cada uno cubre un caso distinto y se conecta naturalmente con Lambda.
Los servicios que pueden generar eventos asíncronos incluyen:
- S3, ideal para procesar imágenes o archivos cuando se suben a un bucket.
- SQS, perfecto para colas de mensajes como sistemas de likes o reacciones.
- CloudWatch, para reaccionar a métricas y alarmas.
- EventBridge, para orquestar eventos entre múltiples servicios.
- DynamoDB, que puede emitir eventos ante cambios en los datos.
- RDS, integrable con eventos de base de datos.
- Auto Scaling Groups, para reaccionar a cambios de capacidad.
¿Por qué tu front-end y back-end deben ser compatibles con la asincronía?
No basta con volver asíncrona la infraestructura. Si tu back-end espera siempre respuestas síncronas mientras la lógica corre asíncrona, vas a generar cuellos de botella que afectan toda la plataforma.
Un ejemplo concreto: cuando das un corazoncito en Instagram, ese like no va directo a la base de datos. Se coloca en una cola, y luego un worker o backend recoge esos documentos y los persiste. Así se sostiene el volumen masivo de interacciones simultáneas en publicaciones virales.
Esta arquitectura es la que vas a replicar al integrar SQS para construir un sistema de likes en tu aplicación serverless. Cuéntame en los comentarios qué procesos de tu aplicación crees que podrías volver asíncronos.