AWS Lambda bajo el capó

Rate this content
Bookmark
Slides

En esta charla explico cómo funciona el servicio AWS Lambda, explicando la arquitectura, cómo escala y cómo un desarrollador debería pensar cuando diseñan su software utilizando funciones Lambda

FAQ

Una función Lambda en AWS es un servicio que te permite ejecutar código sin preocuparte por la gestión del servidor. Proporcionas el código, y AWS se encarga de la provisión y gestión del servicio, permitiéndote pagar solo por el tiempo de ejecución que utilices.

Las funciones Lambda escalan automáticamente. AWS Lambda ajusta la cantidad de recursos computacionales asignados en milisegundos, dependiendo del patrón de tráfico, asegurando que todas las solicitudes sean atendidas adecuadamente.

Puedes subir tu código a AWS Lambda mediante un archivo ZIP para tamaños de hasta 250 megabytes o utilizar imágenes de contenedor para tamaños de hasta 10 gigabytes.

AWS Lambda soporta varios lenguajes de programación como Java, Go, Node.js, .NET, Python, entre otros. Además, puedes crear y usar tu propio tiempo de ejecución personalizado si tienes un caso de uso específico.

Existen dos métodos principales de invocación de funciones Lambda: síncrono y asíncrono. En el método síncrono, la función Lambda devuelve inmediatamente una respuesta al cliente. En el método asíncrono, los eventos se almacenan en una cola interna y se procesan de manera secuencial.

El inicio en frío ocurre cuando una función Lambda se ejecuta por primera vez o después de estar inactiva. Durante este tiempo, AWS prepara un entorno de ejecución para tu función, lo cual puede causar una ligera demora inicial en la respuesta.

Para optimizar el tiempo de inicio de las funciones Lambda, puedes reducir el tamaño de tu paquete de código utilizando herramientas como Webpack, y considerar el uso de concurrencia provisionada para mantener las funciones precalentadas durante períodos de tráfico predecible.

El mapeo de fuentes de eventos es un servicio de AWS Lambda que extrae automáticamente mensajes de fuentes de datos como MSK, Kinesis, SQS o DynamoDB Streams, y luego invoca tu función Lambda de manera sincrónica para procesar esos mensajes.

Las zonas de disponibilidad en AWS Lambda son centros de datos que permiten que tu código esté disponible en múltiples ubicaciones físicas dentro de una región de AWS, garantizando alta disponibilidad y resistencia de la infraestructura.

Luca Mezzalira
Luca Mezzalira
22 min
17 Apr, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

En esta charla, se cubren las características clave de las funciones de AWS Lambda, incluyendo la arquitectura del servicio, la composición y la optimización del código Node.js. Se explican los dos modelos operativos de Lambda, la invocación asíncrona y síncrona, destacando la escalabilidad y disponibilidad del servicio. Se discuten las características de las funciones Lambda, como los reintento y el mapeo de la fuente del evento, junto con el ciclo de vida del micro VM y las tres etapas de una función Lambda. Se explican las técnicas de optimización de código, incluyendo la reducción del tamaño del paquete y el uso de opciones de caché, y se recomiendan herramientas como webpack y Lambda Power Tuning para la optimización. En general, Lambda es un servicio potente para manejar la escalabilidad y los picos de tráfico mientras permite a los desarrolladores centrarse en la lógica empresarial.

Available in English: AWS Lambda under the hood

1. Introducción a AWS Lambda

Short description:

En esta sesión, cubriremos las características clave de las funciones Lambda, cómo funciona la arquitectura del servicio, cómo componer una función Lambda en AWS y cómo optimizar su código Node.js para Lambda. Una función Lambda le permite concentrarse en crear valor para sus clientes escribiendo código que mapea sus capacidades empresariales en producción. Solo paga por el tiempo de ejecución, lo que lo hace rentable tanto para entornos de producción como de prueba. Puede proporcionar su código a través de un archivo zip o imágenes de contenedor, y elegir entre una gama de lenguajes incorporados o traer el suyo propio. Un cliente incluso creó un tiempo de ejecución personalizado en COBOL.

Hola a todos y bienvenidos a esta sesión sobre AWS Lambda Bajo el Capó. Sé que varios de ustedes no solo están buscando cómo construir algo de código, sino también por qué deberían construir el código de cierta manera. Ya sea que seas un experto en escribir funciones Lambda o estés pensando en usar serverless y AWS Lambda en tu próxima carga de trabajo, creo que al final de esta charla podrás tomar una decisión consciente sobre por qué escribir el código de cierta manera.

Entonces, sin más preámbulos, vamos a empezar. Mi nombre es Luca. Soy un especialista principal en serverless en AWS. Estoy basado en Londres. Soy un orador internacional y autor de libros. Entonces, en esta charla vamos a cubrir bastante terreno, y especialmente lo que quiero cubrir es, en primer lugar, ¿qué es una función Lambda? Porque tal vez tengas una idea de lo que es, pero intentemos clavar las características clave de las funciones Lambda. Luego avanzamos, entendiendo cómo funciona la arquitectura del servicio por debajo del capó. Luego discutimos cómo componemos una función Lambda en AWS. Y luego nos movemos a los ciclos de vida de la función y cómo aprovecharlos para maximizar el beneficio de su código. Y por último, pero no menos importante, estamos hablando de cómo optimizar su código Node.js para Lambda.

Hay mucho terreno que cubrir, así que comencemos. ¿Qué es una función Lambda? Una función Lambda, en resumen, es tan simple como proporcionas algo de código y nosotros nos encargamos de la provisión y gestión del servicio para ti. Así que no tienes que pensar en el lado de la red o cómo orquestar la escalabilidad y así sucesivamente. Solo te enfocas en lo que realmente importa para ti. Así que creando valor para tus clientes y además escribiendo algo de código Node.js que básicamente mapea tus capacidades empresariales en producción. Pagas por milisegundo. Así que cada vez que invocas un Lambda, pagas solo por el tiempo de ejecución y nada más. Y eso es una excelente manera de pensar no solo en producción, sino también en, por ejemplo, pruebas un entorno de staging que no se usa 24-7, como tu entorno de producción. Allí, solo pagas por lo que usas. No tienes que aprovisionar contenedores o máquinas virtuales que están allí 24-7. Puedes servir el contenido de dos maneras. Puedes proporcionarnos tu código a través de un archivo zip cuando el archivo es de hasta 250 megabytes, o si es más grande que eso, puedes usar imágenes de contenedor de hasta 10 gigabytes. En ambos casos, puedes aprovechar los beneficios de AWS Lambda sin ningún problema. También ofrecemos lenguajes incorporados. Tenemos algunos tiempos de ejecución que están disponibles y son administrados por nosotros para ti, como Java, Go, Node.js, .NET, Python, y muchos otros. Pero también, si tienes un caso de uso específico, puedes traer el tuyo, y lo operacionalizamos de la misma manera exacta. Un ejemplo clásico, tuvimos un cliente que trabajaba en finanzas, y necesitaban usar COBOL, pero realmente se enamoraron de Lambda, así que crearon su propio tiempo de ejecución personalizado en COBOL.

2. Modos de Invocación y Arquitectura de Lambda

Short description:

Por último, pero no menos importante, escala en milisegundos. Lambda tiene dos modelos operativos: invocación asíncrona e invocación sincrónica. El código que escribes se ejecuta dentro de un sandbox MicroVM, que es parte de un Worker que opera en una zona de disponibilidad. AWS se encarga de hacer que tu código sea altamente disponible en varios centros de datos. En modo sincrónico, la puerta de enlace API llama a un servicio frontend en AWS Lambda, que inmediatamente invoca a un worker para ejecutar tu código y devolver la respuesta. En el caso de las funciones Lambda síncronas, los eventos se introducen en una cola de mensajes y el llamador recibe un reconocimiento.

Por último, pero no menos importante, scale en milisegundos. Así que, basándonos en tu patrón de tráfico, nos encargamos de scaling tu función Lambda y de responder a todas las solicitudes que llegan. Así que, normalmente, desde la perspectiva de un desarrollador, lo que ves es que estás escribiendo algo de code, como puedes ver en la izquierda de esta diapositiva, y luego lo subes a tu cuenta de AWS, y ocurre algo de magia, y empiezas a tener una API que funciona.

La realidad es que hay mucho más. Así que la pregunta ahora es, ¿alguna vez has pensado cómo funciona Lambda bajo el capó? Así que echemos un vistazo a eso. En primer lugar, hay dos modelos operativos de las funciones Lambda. El primero es la invocación asíncrona, donde, por ejemplo, tienes una puerta de enlace API que expone tu API, llega una solicitud de un cliente, y se dispara una función Lambda con la respuesta, y luego sirves la respuesta de manera sincrónica a tu cliente. La otra opción es la invocación asíncrona, donde en este caso tienes un servicio que está empujando un evento al servicio Lambda, el servicio Lambda almacena el evento en una cola interna de eventos, y luego la función Lambda empieza a recuperar estos eventos de manera lenta pero constante y a trabajar en ellos. El solicitante, en este caso Amazon EventBridge, por ejemplo, recibe directamente un reconocimiento y nada más. Y esas son las dos formas en que funciona la invocación de Lambda.

Así que, si vemos en el gran esquema de las cosas, cómo desde lo que ves en la izquierda de la diapositiva, ya sea que haya varios servicios o incluso si son sincrónicos o no, están enviando una solicitud al servicio AWS Lambda, que es el gran rectángulo que está dentro de esta diapositiva. Y cómo moverse hacia tu code que está en el extremo derecho de esta diapositiva, donde hay un sandbox MicroVM, es un viaje interesante. Y especialmente, quiero destacar primero lo que está pasando dentro de tu sandbox. El sandbox es donde se ejecuta tu code. Ahora, si piensas en eso, tu MicroVM, donde está el code que has escrito y es operacionalizado por nosotros, se ejecuta dentro de un Worker. Y obviamente, no hay solo un Worker. Hay muchos más. Normalmente en AWS, tenemos varias zonas de disponibilidad. Y como puedes ver aquí, tienes varios Workers ejecutándose dentro de una zona de disponibilidad. Y la zona de disponibilidad es un centro de data. Así que piensa en cómo se ve un centro de data, y esa es tu zona de disponibilidad. Pero normalmente en AWS, cada vez que creamos una región, está compuesta por varias zonas de disponibilidad. Por lo tanto, cada vez que estás empujando el code dentro de Lambda, automáticamente, vas a tener tu code que está disponible en varios centros de data. No tienes que hacer nada. Solo te enfocas en qué región quieres desplegar y cuál es la lógica de negocio. Y nosotros nos encargamos de no solo operacionalizar el code, sino también de hacerlo altamente disponible en toda nuestra infraestructura. Así que ahora vamos a profundizar en el modo de invocación y cómo funciona dentro de la architecture. Así que en el modo sincrónico, lo que pasa es, por ejemplo, en la puerta de enlace API está llamando de manera sincrónica, a un servicio frontend que está dentro del servicio AWS Lambda que está devolviendo una respuesta inmediata porque lo que pasa es que está invocando a un worker específico, poniendo en marcha un micro VM y tu code empieza a ejecutarse y devuelve inmediatamente la respuesta o el error al cliente. En cambio, cuando estás pensando en el modo de invocación para las funciones Lambda síncronas, es ligeramente diferente. Así que en este caso, por ejemplo, tenemos SNS que está empujando un evento en un mensaje en el frontend que el frontend está almacenando dentro de una cola interna el mensaje específico el llamador recibe un reconocimiento simplemente diciendo sí, hemos tenido en cuenta tu solicitud y luego entras dentro de la cola interna.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

No sabes cómo hacer SSR
DevOps.js Conf 2024DevOps.js Conf 2024
23 min
No sabes cómo hacer SSR
Un recorrido por la evolución del SSR en los últimos doce años. Cubriremos cómo han cambiado las técnicas, los problemas típicos, las herramientas que puedes utilizar y diversas soluciones, todo desde el punto de vista de mi experiencia personal como consumidor y mantenedor.
Optimización del rendimiento de AWS Lambda
Node Congress 2024Node Congress 2024
25 min
Optimización del rendimiento de AWS Lambda
¿Alguna vez te has preguntado cómo obtener lo mejor de tus funciones Lambda?Si es así, esta charla revelará los entresijos de uno de los servicios sin servidor más populares y te brindará una guía paso a paso para optimizar tus funciones.En esta sesión, te guiaré a través de la mentalidad para reducir el tiempo de ejecución de tus funciones Lambda. En el ejemplo presentado, pude reducir el tiempo de ejecución en un 95% para el inicio en caliente y más del 50% en los inicios en frío, mejorando también las transacciones por segundo atendidas con esta API.
Arquitecturas Avanzadas de GraphQL: Event Sourcing y CQRS sin servidor
React Summit 2023React Summit 2023
28 min
Arquitecturas Avanzadas de GraphQL: Event Sourcing y CQRS sin servidor
GraphQL es una herramienta poderosa y útil, especialmente popular entre los desarrolladores frontend. Puede acelerar significativamente el desarrollo de aplicaciones y mejorar la velocidad de la aplicación, la descubribilidad de la API y la documentación. GraphQL no es solo adecuado para API simples, puede impulsar arquitecturas más avanzadas. La separación entre consultas y mutaciones hace que GraphQL sea perfecto para el event sourcing y Command Query Responsibility Segregation (CQRS). Al hacer que tu aplicación GraphQL avanzada sea sin servidor, obtienes una arquitectura completamente administrada, económica y extremadamente potente.
Desmitificar la DX para funciones Lambda
DevOps.js Conf 2024DevOps.js Conf 2024
30 min
Desmitificar la DX para funciones Lambda
En esta sesión, comparto contigo cómo AWS CDK y AWS Toolkit pueden simplificar la experiencia del desarrollador para ejecutar cargas de trabajo sin servidor en la nubeUna sesión sin diapositivas, solo un IDE y una CLI para implementar una API en la nube, actualizarla rápidamente y recuperar registros sin salir de tu IDE favorito!
Construyendo Dapps con React
React Advanced Conference 2021React Advanced Conference 2021
30 min
Construyendo Dapps con React
Las aplicaciones descentralizadas (dApps) continúan ganando impulso en la industria. Estos desarrolladores también son algunos de los mejor pagados en todo el sector. Construir aplicaciones descentralizadas es un cambio de paradigma que requiere una forma diferente de pensar que las aplicaciones construidas con infraestructura, herramientas y servicios centralizados tradicionales, teniendo en cuenta cosas como la teoría de juegos, la infraestructura descentralizada sin servidor y la criptoeconomía. Como desarrollador de React, inicialmente tuve dificultades para entender este ecosistema completamente nuevo (para mí), cómo todo encaja y el modelo mental necesario para entender y ser un desarrollador full stack productivo en este espacio (y por qué lo consideraría en primer lugar). En esta charla, daré una visión general completa del espacio, cómo puedes comenzar a construir este tipo de aplicaciones y toda la pila tecnológica desglosada y luego reensamblada para mostrar cómo funciona todo.
Construyendo APIs GraphQL sin servidor en tiempo real en AWS con TypeScript y CDK
React Summit 2020React Summit 2020
25 min
Construyendo APIs GraphQL sin servidor en tiempo real en AWS con TypeScript y CDK
CDK (Cloud development kit) permite a los desarrolladores construir infraestructura en la nube utilizando lenguajes de programación populares como Python, TypeScript o JavaScript. CDK es una abstracción de nivel superior en infraestructura como código, lo que permite a los desarrolladores que tradicionalmente no estaban familiarizados con la computación en la nube construir APIs y servicios web escalables utilizando sus habilidades existentes, y hacerlo en solo unas pocas líneas de código.
En esta charla, aprenderás cómo utilizar la versión de TypeScript de CDK para construir una API en tiempo real altamente escalable con GraphQL, Lambda, DynamoDB y AWS AppSync. Al final de la charla, codificaré en vivo una API desde cero en solo un par de minutos y luego probaré consultas, mutaciones y suscripciones.
Al final de la charla, deberías tener una buena comprensión de GraphQL, AppSync y CDK y estar listo para construir una API en tu próximo proyecto utilizando TypeScript y CDK.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Construyendo Aplicaciones Serverless en AWS con TypeScript
Node Congress 2021Node Congress 2021
245 min
Construyendo Aplicaciones Serverless en AWS con TypeScript
Workshop
Slobodan Stojanović
Slobodan Stojanović
Este masterclass te enseña los conceptos básicos del desarrollo de aplicaciones serverless con TypeScript. Comenzaremos con una función Lambda simple, configuraremos el proyecto y la infraestructura como código (AWS CDK) y aprenderemos cómo organizar, probar y depurar una aplicación serverless más compleja.
Tabla de contenidos:        - Cómo configurar un proyecto serverless con TypeScript y CDK        - Cómo escribir una función Lambda testeable con arquitectura hexagonal        - Cómo conectar una función a una tabla DynamoDB        - Cómo crear una API serverless        - Cómo depurar y probar una función serverless        - Cómo organizar y hacer crecer una aplicación serverless


Materiales mencionados en el masterclass:
https://excalidraw.com/#room=57b84e0df9bdb7ea5675,HYgVepLIpfxrK4EQNclQ9w
Blog de DynamoDB de Alex DeBrie: https://www.dynamodbguide.com/
Excelente libro para DynamoDB: https://www.dynamodbbook.com/
https://slobodan.me/workshops/nodecongress/prerequisites.html
Masterclass de Serverless para Desarrolladores de React
React Summit 2022React Summit 2022
107 min
Masterclass de Serverless para Desarrolladores de React
WorkshopFree
Tejas Kumar
Tejas Kumar
Introducción a serverlessAntecedentes: Docker, Contenedores y KubernetesActividad: Construir una aplicación con Docker y desplegarla en un proveedor de nubeAnálisis: ¿Qué es bueno/malo de este enfoque?Por qué se necesita/mejora ServerlessActividad: Construir la misma aplicación con serverlessAnálisis: ¿Qué es bueno/malo de este enfoque?
Masterclass de Frontend en la Nube Hecho Fácil - Un Taller de ReactJS + AWS
DevOps.js Conf 2024DevOps.js Conf 2024
59 min
Masterclass de Frontend en la Nube Hecho Fácil - Un Taller de ReactJS + AWS
Workshop
Eyal Keren
Eyal Keren
Este taller te permite aprender cómo desarrollar aplicaciones React y luego desplegarlas en la nube (o construirlas en la consola) junto con un backend completamente abstracto, sin una configuración de backend compleja, simplificando la construcción y el despliegue de aplicaciones frontend y web en la nube.
Construyendo un backend serverless nativo de GraphQL con Fauna
GraphQL Galaxy 2021GraphQL Galaxy 2021
143 min
Construyendo un backend serverless nativo de GraphQL con Fauna
WorkshopFree
Rob Sutter
Shadid Haque
2 authors
¡Bienvenido a Fauna! Este masterclass ayuda a los desarrolladores de GraphQL a construir aplicaciones de alto rendimiento con Fauna que se escalan a cualquier tamaño de base de usuarios. Comienzas con lo básico, utilizando solo el playground de GraphQL en el panel de Fauna, luego construyes una aplicación completa de pila completa con Next.js, agregando funcionalidad a medida que avanzas.

En la primera sección, Comenzando con Fauna, aprendes cómo Fauna crea automáticamente consultas, mutaciones y otros recursos basados en tu esquema de GraphQL. Aprendes cómo realizar tareas comunes con GraphQL, cómo usar el lenguaje de consulta de Fauna (FQL) para realizar tareas más avanzadas.

En la segunda sección, Construyendo con Fauna, aprendes cómo Fauna crea automáticamente consultas, mutaciones y otros recursos basados en tu esquema de GraphQL. Aprendes cómo realizar tareas comunes con GraphQL, cómo usar el lenguaje de consulta de Fauna (FQL) para realizar tareas más avanzadas.