AWS Lambda bajo el capó

Spanish audio is available in the player settings
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

This talk has been presented at Node Congress 2023, check out the latest edition of this JavaScript Conference.

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
The Talk covers the speaker's personal journey into server-side rendering (SSR) and the evolution of web development frameworks. It explores the use of jQuery for animations in SSR, the challenges faced in integrating React with Umbraco, and the creation of a custom SSR framework. The Talk also discusses the benefits of Next.js and the use of serverless artifacts for deployment. Finally, it highlights the features of Astro, including its function per route capability.
Optimización del rendimiento de AWS Lambda
Node Congress 2024Node Congress 2024
25 min
Optimización del rendimiento de AWS Lambda
This Talk covers various optimization techniques for Lambda functions, including parameter fetching, code minification and bundling, observability with Power Tools and X-Ray, baseline testing with load testing tools, caching with Elastic Cache and Redis, and optimizing code size and memory usage. The importance of library choices, power tuning for cost and performance, leveraging subprocesses and sandboxes, and adjusting concurrency limits are also discussed. Overall, these techniques can significantly improve Lambda function performance.
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 is a strongly typed, version-free query language that allows you to ask for specific data and get it in JSON format. It simplifies data retrieval and modification by allowing the server to handle all necessary operations. Serverless architectures, such as AWS Lambda, are scalable, cost-effective, and good for event-driven applications. Event sourcing and CQRS are techniques that ensure consistency and separate reading and writing parts of an application. Building a GraphQL API with commands and queries can be achieved using AWS AppSync and DynamoDB. This approach offers low latency, scalability, and supports multiple languages. Challenges include application complexity, data modeling, and tracing, but starting with simplicity and making something work first can lead to success.
Desmitificar la DX para funciones Lambda
DevOps.js Conf 2024DevOps.js Conf 2024
30 min
Desmitificar la DX para funciones Lambda
Welcome to this session on Lambda Developer Experience. Learn about using AWS Cloud Development Kit (CDK) to write code in your favorite language and automatically generate CloudFormation templates. Test locally with the SAM CLI and deploy with CDK. Accelerate testing and updates with CDK flags. Use the AWS Toolkit to invoke Lambda functions, analyze logs, and generate code with Application Composer.
Construyendo Dapps con React
React Advanced 2021React Advanced 2021
30 min
Construyendo Dapps con React
The Talk discusses building decentralized applications (DApps) with React and explores the benefits of smart contract technology. It highlights the characteristics and infrastructure of Web 3 applications, including decentralized indexing, off-chain data storage, and decentralized file storage. The Talk also covers identity in Web 3, with a focus on self-sovereign identity and the use of blockchain for identity verification. The process of building a DApp with React and Hard Hat is explained, along with deploying contracts and interacting with them. Overall, the Talk provides insights into the world of DApps and the technologies involved.
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
This Talk provides an introduction to JavaScript and React, as well as insights into building real-time serverless GraphQL APIs with TypeScript, AppSync, and CDK. It covers the concepts of GraphQL schema, data sources, and resolvers, as well as the use of GraphQL subscriptions for real-time communication. The Talk also highlights the features of AppSync and CDK for building APIs and infrastructure. It concludes with a demonstration of creating an API with CDK and AppSync, including the creation of Lambda functions and DynamoDB tables.

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.