Publicado el

¿Qué es AWS Lambda? Computación sin servidor para aplicaciones

Autores

    ¿Qué es AWS Lambda? Computación sin servidor para aplicaciones

    Ejecutar código de backend tradicionalmente implica aprovisionar servidores, escalar recursos y gestionar la disponibilidad.
    Con AWS Lambda, puedes ejecutar código sin administrar ninguna infraestructura, pagando solo por lo que utilizas.

    ¿Qué es AWS Lambda?

    AWS Lambda es un servicio de computación sin servidor de Amazon Web Services.
    En lugar de ejecutar aplicaciones en servidores dedicados, escribes funciones que se ejecutan en respuesta a eventos como:

    Tu código se ejecuta dentro de contenedores efímeros administrados íntegramente por AWS.
    Solo proporcionas el código y la configuración de la función. Lambda se encarga del resto.

    ¿Por qué utilizar AWS Lambda?

    • Sin administración de servidores → No hay que aprovisionar, aplicar parches ni escalar servidores.
    • Escalado automático → Ejecuta al instante tantas instancias como sean necesarias, desde una solicitud hasta miles por segundo.
    • Pago por uso → Se factura únicamente el tiempo de computación (milisegundos) y las solicitudes, no el tiempo de inactividad.
    • Compatibilidad con múltiples lenguajes y entornos → Node.js, Python, Java, Go, Ruby, .NET y entornos de ejecución personalizados.
    • Integración sencilla → Funciona con fluidez con Amazon S3, Amazon DynamoDB, Amazon SNS, Amazon API Gateway y otros servicios de AWS.
    • Alta disponibilidad integrada → Se ejecuta en varias zonas de disponibilidad para ofrecer tolerancia a fallos.

    Casos de uso habituales

    • API web → Combina Lambda con Amazon API Gateway para crear API REST o GraphQL sin servidor.
    • Procesamiento de archivos → Procesa imágenes, vídeos o documentos automáticamente después de subirlos a Amazon S3.
    • Tareas programadas → Sustituye los servidores cron por Amazon CloudWatch Events o Amazon EventBridge para ejecutar tareas periódicas.
    • Chatbots y microservicios → Ejecuta lógica ligera de backend orientada a eventos a escala mediante servicios como Amazon SNS o Amazon SQS.

    AWS Lambda frente a servidores tradicionales

    • Servidores tradicionales → Requieren aprovisionamiento, supervisión y escalado para los picos de carga mediante servicios como Amazon EC2.
    • AWS Lambda → Está completamente administrado, escala automáticamente y solo cobra por el tiempo de ejecución.

    Limitaciones y consideraciones

    • Arranques en frío → Las funciones que no se han invocado recientemente pueden experimentar un breve retraso (un “arranque en frío”) cuando AWS inicia un nuevo contenedor.
    • Tiempos de espera → Cada invocación tiene un tiempo máximo de ejecución (actualmente 15 minutos). Las tareas de larga duración pueden necesitar otro servicio como Amazon ECS o Amazon EC2.
    • Límites de memoria y CPU → La asignación de memoria tiene un máximo de unos pocos GB (actualmente 10 GB), con una CPU proporcional a la memoria. Las cargas de computación intensiva pueden alcanzar estos límites.
    • Almacenamiento efímero → El almacenamiento predeterminado /tmp es limitado (512 MB por defecto, ampliable a 10 GB), por lo que los archivos temporales grandes requieren almacenamiento externo como Amazon S3 o Amazon EFS.
    • Dependencia del proveedor → La integración profunda con los servicios de AWS puede dificultar la migración a otro proveedor de nube.
    • Restricciones de red → Acceder a recursos dentro de una VPC añade complejidad a la configuración y puede aumentar la latencia de los arranques en frío.
    • Complejidad de depuración → La depuración local y el seguimiento de la ejecución pueden ser más difíciles que en un entorno de servidor tradicional.

    Conclusión

    AWS Lambda permite a los desarrolladores crear aplicaciones orientadas a eventos sin administrar servidores.
    Tanto si necesitas un backend rápido para una aplicación web como un procesador de archivos en tiempo real o una canalización de datos, Lambda ofrece computación bajo demanda que escala automáticamente.