Desmitificar la DX para funciones Lambda

Rate this content
Bookmark

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 nube

Una 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!

Luca Mezzalira
Luca Mezzalira
30 min
15 Feb, 2024

Video Summary and Transcription

Bienvenido a esta sesión sobre la Experiencia del Desarrollador de Lambda. Aprende sobre cómo usar AWS Cloud Development Kit (CDK) para escribir código en tu lenguaje favorito y generar automáticamente plantillas de CloudFormation. Prueba localmente con SAM CLI e implementa con CDK. Acelera las pruebas y actualizaciones con las banderas de CDK. Usa AWS Toolkit para invocar funciones Lambda, analizar registros y generar código con Application Composer.

Available in English

1. Introducción a la Experiencia del Desarrollador de Lambda

Short description:

Bienvenido a esta sesión sobre la Experiencia del Desarrollador de Lambda. Descubre herramientas para desarrollar adecuadamente cargas de trabajo sin servidor utilizando la función Lambda directamente con Visual Studio Code o IntelliJ.

Hola, y bienvenido a esta sesión sobre la Experiencia del Desarrollador de Lambda. ¿Con qué frecuencia te has encontrado desplegando tu carga de trabajo de Node.js en la nube y tienes que esperar a que CloudFormation o Terraform o cualquier otra cosa despliegue todo tu código cada vez, a pesar de que solo cambies una línea de código? El ciclo de retroalimentación que tienes que esperar para el despliegue es bastante largo. A veces sales a tomar un café, tal vez pierdes el impulso, y por lo tanto, hoy quiero mostrarte cuáles son las herramientas disponibles para desarrollar adecuadamente una carga de trabajo sin servidor utilizando la función Lambda, tu servicio de cómputo favorito, directamente con Visual Studio Code o IntelliJ porque todo lo que te voy a mostrar hoy será válido para VS Code.

2. Usando AWS Cloud Development Kit (CDK)

Short description:

AWS Cloud Development Kit (CDK) es una herramienta de infraestructura como código proporcionada por AWS. Te permite escribir código en tu lenguaje favorito y genera automáticamente una plantilla de CloudFormation para el despliegue. Veamos un ejemplo: una aplicación simple de Hola Mundo utilizando ESM con nodos y CDK. CDK te permite escribir TypeScript y extender la función Lambda con capacidades adicionales como opciones de empaquetado utilizando ESBuild. Desplegar la solución es tan simple como ejecutar 'cdk deploy' y elegir el perfil con la información necesaria. CDK se encargará del despliegue, incluyendo la creación de una API HTTP que actúa como proxy a través de API Gateway. Una vez desplegado, puedes acceder a la API utilizando la URL proporcionada.

así como IntelliJ. Así que empecemos. En primer lugar, lo que vamos a usar hoy es el AWS Cloud Development Kit, o CDK como todos lo llaman, es una de las herramientas de infraestructura como código que se ofrecen por AWS y te permite escribir en tu lenguaje favorito y luego automáticamente, detrás de escena, cuando estamos construyendo nuestro artefacto, lo que sucede es que estamos generando una plantilla de CloudFormation que luego se utilizará para el despliegue y aprovisionamiento de tu código e infraestructura. Ahora, intentemos ver un ejemplo. He preparado un par de ejemplos para que podamos empezar a ver eso. Así que el primer ejemplo aquí es sobre un ejemplo muy simple de Hola Mundo. He creado esta plantilla para usar ESM con nodos y usar CDK para definir mi infraestructura. Como puedes ver aquí, la belleza de CDK es que estoy escribiendo TypeScript, que en este caso es mi lenguaje favorito para escribir CDK. Y aquí tengo un constructo de alto nivel como una función de node.js que extiende la función Lambda. Como puedes ver aquí, está extendiendo este constructo, este constructo de bajo nivel que se llama función Lambda y está agregando nuevas capacidades como la posibilidad de agregar opciones de empaquetado. Por defecto, CDK te ofrece la posibilidad de usar ESBuild y, por lo tanto, ¿por qué no aprovechar eso para hacer que el tamaño de nuestro paquete sea más pequeño? Como puedes ver aquí, uso el empaquetado con una serie de configuraciones que me permiten tener la posibilidad de usar módulos ESM, así como otras capacidades como el esperar en el nivel superior, por ejemplo. Y ahora, si queremos desplegar esta solución en una cuenta de AWS, es tan simple como escribir aquí cdk deploy y luego decido qué perfil que configuré múltiples perfiles en mi máquina quiero usar, donde tengo la región, tengo mi información necesaria para desplegar esta carga de trabajo en la nube. Ahora es la primera vez que lo hago. Como puedes ver, CDK me está diciendo, oh, por cierto, hay algunas cosas que necesitas desplegar, que son todas las cosas en verde. Como puedes ver aquí, eso será necesario para tener esta API funcionando dentro de mi sistema. Así que, está bien, esto es tan simple como una función lambda con una API HTTP que actúa como proxy que muestra como API Gateway la posibilidad de exponer tu API. En un minuto, esto estará funcionando y disponible en la nube. Y mientras tanto, podemos ver que aquí tenemos la definición de mi hola ESM lambda. Luego tenemos una definición de API HTTP que puedes hacer fácilmente con CDK. Solo creo la integración que básicamente te permite tener todos los roles y configuraciones necesarios para enlazar en una ruta específica tu función lambda. Y aquí tienes la ruta que es la ruta raíz, el método con el que puedes invocar esta función lambda específica. Y eso es básicamente lo que obtienes. Y al final, vamos a tener también este constructo, esta salida de CFN, básicamente resalta dentro de tu línea de comandos, la URL donde puedes encontrar esta API. Tan simple como eso. Así que ahora hemos desplegado todo. Como puedes ver, tenemos una URL que es útil. Así que si todo va bien, deberíamos tener nuestra API funcionando. Y aquí estamos. Tenemos hola nodo.

3. Pruebas y Actualizaciones con CDK

Short description:

Al desarrollar con CDK, puedes probar localmente utilizando SAM CLI. Al ejecutar 'SAM local start API' y hacer referencia a la plantilla generada, puedes tener una API funcionando en tu máquina local. Para actualizar y probar cambios, puedes usar el comando 'cdk build' para reconstruir y desplegar la solución. CDK también proporciona el comando 'cdk sync' para volver a empaquetar los recursos.

El módulo ESM es exactamente lo que tenemos aquí, como puedes ver. Ahora, por ejemplo, si ahora quisiéramos cambiar este módulo de saludo ESM y cambiarlo a hello devops.js. Esa es una nueva forma, digamos, de potencialmente tener una nueva funcionalidad o algo así. Deberíamos pasar por el mismo proceso. Y esta vez estamos pasando por la construcción y el aprovisionamiento de CloudFormation que verifica si tu infraestructura está cambiando. Si no lo está, simplemente actualiza el código. ¿Hay una mejor manera de hacerlo? Sí, en realidad hay una mejor manera, especialmente cuando estás desarrollando. Cuando quieres desarrollar y tener una buena experiencia de desarrollador, quieres tener un ciclo de retroalimentación rápido. Permíteme mostrarte un par de cosas. Primero, con CDK, también tienes la posibilidad de probar localmente utilizando otra herramienta que hemos creado en AWS. Se llama SAM. Y SAM es solo una CLI. Lo que puedo hacer es simplemente decir SAM local start API. Y luego hago referencia a una plantilla específica que es generada por CDK. Este flag básicamente toma como entrada una plantilla de CloudFormation. Y te preguntarás cómo podemos proporcionar eso. Pero resulta que CDK en la carpeta CDK out tiene exactamente lo que estamos buscando. Esta plantilla específica de nodo ESM. Entonces lo que vamos a hacer es ir aquí, seleccionar la pila de nodo ESM. Y cuando ejecutemos esto, lo siento, cuando ejecutemos esto en la CLI, lo que vamos a tener es una API en funcionamiento que puedes probar localmente. Por ejemplo, lo que deberíamos esperar es que si voy aquí y uso curl para invocar mi contenedor Docker con Node.js 20, se ejecute la aplicación. Y aquí estamos. Tenemos la sesión anterior. ¿Por qué está sucediendo eso? Es a propósito. No reconstruimos nuestra solución. Hicimos un cambio. Guardamos el archivo, pero eso es todo. Entonces, ahora, si queremos tener la nueva forma, permíteme mostrarte otro mensaje, lo siento, otro comentario. Puedes usar CDK sync. Y básicamente lo que está sucediendo ahora es volver a empaquetar dentro de CDK out. Como puedes ver,

4. Pruebas en la Nube y Actualizaciones Rápidas

Short description:

Para acelerar las pruebas de cargas de trabajo sin servidor, especialmente Lambda, se recomienda probar en la nube en lugar de localmente. Ciertas cosas, como las políticas de IAM y la latencia en la nube, no se pueden simular y deben tenerse en cuenta en el diseño. Para acelerar el ciclo de retroalimentación, CDK proporciona flags como 'watch' y 'hot swap' que te permiten realizar cambios en tu código y reemplazarlo en la función lambda sin pasar por CloudFormation. Esto elimina la necesidad de esperar la creación y implementación del paquete. La implementación está en funcionamiento, lo que permite actualizaciones rápidas.

hay una nueva carpeta de activos. Y mi nuevo, digamos, código. Y en este caso, si vuelvo a iniciar localmente, mi aplicación SAM, en este caso, tengo mi contenedor en ejecución. Esto está ejecutando mi código. Y ahora ejecuto en mi CLI. Si todo va bien, como se espera, vamos a tener un nuevo comando que es hello devops.js. Trabajo hecho. Ahora sabemos que podemos implementar en la nube. Podemos probar localmente usando SAM. Esa es una modelo de aplicación sin servidor. Es la CLI que mencioné antes. Pero podemos hacer aún más. Ahora hemos probado nuestra función Lambda, la API, localmente. Así que eso es genial. ¿Qué podemos hacer mejor para obtener una retroalimentación rápida? Por lo general, lo que recomendamos cuando estamos probando una carga de trabajo sin servidor, especialmente Lambda, es que estés probando en la nube. Porque la realidad es que hay ciertas cosas que no se pueden simular. Por ejemplo, las políticas de IAM, la latencia que tienes en la nube, y así sucesivamente, eso importa cuando estás diseñando una carga de trabajo sin servidor.

Entonces, en este caso, vamos a detener este proceso y volvamos aquí. Entonces, ¿qué podemos hacer para acelerar? Muy a menudo, cuando hablo con un cliente, se sorprenden cuando les muestro estos trucos. Puedes hacerlo con CDK deploy y agregar un montón de flags. Primero, quiero tener watch. Entonces, cada vez que cambie algo, ya sea en la configuración de la infraestructura o en mi código, quiero que algo suceda. Y luego tengo este flag especial que se llama hot swap que también tiene hot swap fallback que te permite hacer dos cosas. Cada vez que vayas a hacer un cambio en tu código, primero va a observar y reconocer que es un cambio del flag watch. Pero lo más importante es reemplazar tu código debajo de la función lambda sin pasar por CloudFormation. Lo que significa que no tenemos que esperar cada vez para crear el paquete, cargarlo en un bucket de S3 y luego comenzar a implementar la plantilla. Y de repente, finalmente, tienes tu cambio implementado en tu cuenta de desarrollo. Sin swap que recomendamos encarecidamente usar solo para entornos de desarrollo. Lo que puedes hacer es decir, bueno, tenemos esto, somos el perfil, así que sabemos que ya tenemos toda nuestra configuración allí. Y ahora lo que está sucediendo es que la implementación está en funcionamiento. Así que tomo un cambio de un milisegundo,

5. Pruebas Locales y en la Nube

Short description:

Para realizar cambios rápidamente y verlos en la nube, podemos usar comandos curl para probar nuestro código. Al reconocer los cambios de código sin cambios en la infraestructura, podemos ver los resultados actualizados. También podemos modificar la infraestructura, como cambiar la arquitectura, pero esto requiere pasar por CloudFormation. En general, ahora tenemos la capacidad de construir, implementar y probar nuestra carga de trabajo sin servidor sin salir de nuestro IDE, utilizando SAM y CDK juntos. Esto nos permite probar localmente y en la nube, utilizando servicios adicionales como LocalStack si es necesario.

y ahora tenemos nuestra URL. Entonces, si tomo esto y ejecuto aquí, un comando curl, ejecuto, tengo una carga DevOps. Todo genial. Pero, ¿qué pasa si quiero hacer un cambio? ¿Qué pasa si quiero hacer un cambio rápidamente? Quiero agregar solo algunos signos de interrogación y quiero ver cómo se ve en la nube. Como puedes ver aquí, ya ha comenzado a hacer algunas cosas. Entonces, lo que sucedió es que reconoció que cambié mi código, reconoció que es solo un cambio de código, no ha cambiado la infraestructura. Y por lo tanto, si ahora llamo al comando curl, aquí estamos, tenemos los tres signos de interrogación y exclamación disponibles aquí. Obviamente, podemos cambiar el código de estado y hacer cualquier cambio que queramos en este caso. Entonces, en lugar de hacer solo curl y la URL, solo hago curl verbose. Y luego ahora veo que tienes un estado 200. Obviamente, esos son muy simples. Potencialmente, también puedo cambiar algo en mi infraestructura. Entonces, en este caso, en lugar de usar una arquitectura x86, puedo usar una arquitectura Arm. Y cuando lo almaceno en este caso, porque estoy usando hot swap, reconoce que no es intercambiable en caliente porque es un cambio de infraestructura. Entonces, en este caso, vuelve a pasar por CloudFormation y sigue el camino normal. Pero si lo piensas, muy a menudo trabajas en la lógica empresarial y la acción que deseas expresar dentro de tu función lambda. Mucho menos cuando configuras la configuración específica de tu infraestructura. Por lo tanto, esto no debería suceder tan a menudo como la otra fase. Como puedes ver aquí ahora, hemos implementado todo, ahora se está ejecutando en Arm y listo, tienes lo que se necesita. Pero como puedes ver ahora, sin salir de nuestro IDE favorito, tenemos la posibilidad de construir nuestra carga de trabajo sin servidor para implementarla. Tenemos la posibilidad de cambiar solo atómicamente una parte del código y tener todo funcionando. También tenemos la posibilidad de, digamos, probar localmente usando SAM en conjunto con el CDK. Y eso es genial porque te permite usar también cosas como LocalStack si quieres simular otros servicios como SNS o SQS que no están disponibles a través de SAM. Entonces ahora tenemos muchas capacidades para probar localmente, probar rápidamente en la nube, solo en la cuenta de desarrollo, y hemos visto cómo lo haríamos

6. Despliegue de la Pila del Estadio

Short description:

Ahora les mostraré otro ejemplo, la pila del estadio. Incluye una puerta de enlace de API, una función lambda para recuperar datos de estadios de la NFL, un patrón de caché aparte utilizando Elastic Cache con Redis, y una base de datos Postgres en Aurora RDS. Esta solución lista para producción también tiene pilas para desplegar parámetros, ajuste de potencia y uso de AWS Lambda Power Tool para observabilidad. La carga de trabajo ya está desplegada y puedes hacer curl a la URL para obtener la respuesta. También puedes usar el AWS Toolkit para invocar la función lambda.

Me gusta diseñar este tipo de soluciones. Ahora, hemos visto este ejemplo, pero quiero mostrarte otro más. Por ejemplo, tengo otro ejemplo que preparé especialmente para ti, que es esta pila del estadio. Así que déjame borrar esta parte por un momento, pero estamos aquí. Entonces, ¿cómo se ve? Esta es la arquitectura que se diseñó en este ejemplo. Tenemos una puerta de enlace de API, tenemos una función lambda que recupera todos los estadios de la NFL disponibles en 2023. Y luego tenemos un patrón de caché aparte utilizando una base de datos en memoria como Elastic Cache con Redis. Y luego tenemos una base de datos Postgres que almacena todos los datos e información necesarios en Aurora RDS. Como puedes ver, tenemos muchas capacidades aquí que se necesitan para construir una API simple, ¿verdad? Lo interesante de esta solución lista para producción es que tienes muchas cosas adentro. Entonces, en este ejemplo específico, tengo mi pila del estadio que está desplegando mi API con la puerta de enlace de API y las cosas que hemos visto. Tenemos una para desplegar solo los parámetros que se necesitan, por ejemplo, para configurar el puerto de la base de datos o verificar dónde encontrar una extensión específica de almacenamiento de parámetros disponible para la función lambda. También tenemos otra pila para ajuste de potencia. Esta es una herramienta que se utiliza para ajustar el tamaño de manera correcta sin adivinar el tamaño de memoria de tus funciones lambda, y así sucesivamente. Puedo crear múltiples pilas en una solución específica, lo cual es bastante normal. Y luego tengo mi obtener datos, y obtener datos utiliza otra herramienta de código abierto que recomendamos usar con lambda, que es AWS Lambda Power Tool. Y Lambda Power Tool no es más que una forma concreta de operacionalizar la observabilidad de tus aplicaciones. Lo interesante aquí es que estoy agregando un montón de trazas, estoy agregando algunas métricas, estoy agregando algunos registros y todo esto generalmente está disponible en CloudWatch, que es nuestra solución para recopilar toda esta información. Ahora intentemos ver cómo funciona. Esta carga de trabajo específica ya está desplegada. Verifiquemos que todo esté funcionando como se espera. Entonces, queremos desplegar en este caso la pila del estadio y queremos usar el perfil playground, que es mi perfil predeterminado. Y ahora todo debería estar ahí. Así que construyen las dos funciones lambda, solo están verificando que todo esté ahí. De hecho, no tomó mucho tiempo, tenemos todo aquí. Así que toma esta URL y solo para mostrarte cómo funciona, puedes hacer curl a esta URL y listo, tienes la respuesta de todos tus estadios, los estadios de la NFL. Hay otra forma de invocar una función lambda, que es a través del AWS Toolkit. El AWS Toolkit, como puedes ver aquí, es esta solución de AWS que proporciona un montón de capacidades que puedes conectar con el code whisperer, que te permite usar IA generativa para crear el código basado en algunos comentarios que haces. Recientemente anunciamos Amazon Qt, que está en vista previa y veremos en un momento cómo funciona. Pero primero centrémonos en cómo invocar una función lambda. Potencialmente aquí, lo que puedes hacer es ir a esta

7. Invocando Funciones Lambda y Analizando Registros

Short description:

Puedo invocar mi función lambda directamente desde mi IDE sin usar curl o ningún comando de CLI. El AWS Toolkit me permite recuperar registros en vivo de CloudWatch dentro de mi IDE. Puedo analizar los registros y depurar mi función lambda sin tener que ingresar a la consola de AWS. Tengo control total y acceso a los registros de los últimos 15 minutos o incluso un rango de tiempo específico.

Explorer. Así que ya estoy en mi región que es Irlanda, ahí es donde despliego mi carga de trabajo y puedo ir a verificar mi función lambda que es la pila del estadio. Aquí estamos. Esa es la función data, así que es esta. Y puedo invocar en AWS. Así que directamente desde tu IDE sin usar curl o ningún comando de CLI, puedes invocar una función lambda que tal vez sea desencadenada por la puerta de enlace de la API, tal vez sea desencadenada por un mensaje de Kafka, tal vez esté drenando una cola en la cola de SQS. Como puedes ver aquí, tienes diferentes plantillas para cada evento individual que puede desencadenar la lambda. En nuestro caso, haremos una L award. No nos importa lo que haya dentro porque en este caso, es solo un get. No requiere nada. Pero cuando invoco mi lambda, tengo exactamente lo mismo. Como puedes ver aquí, tengo exactamente la misma respuesta en la salida. Esa es otra forma en la que puedes usar, digamos, invocar tus funciones lambda basadas en testing diferentes cosas directamente en la cloud desde tu IDE sin tener que crear diferentes herramientas u otras cosas que se necesiten. También puedo hacer más con eso. Por ejemplo, ahora invocamos algunas veces. Vamos a invocar otras veces esta API solo por el hecho de que quiero mostrarte otra cosa interesante. Entonces, desde el Toolkit de AWS, otra capacidad genial que tienes es recuperar directamente en vivo los registros que están disponibles en CloudWatch dentro de tu IDE. Así que ahora si digo, OK, quiero ir a los registros de CloudWatch en get data es el nombre de mi API. Sí, quiero tener todos los registros de los últimos 15 minutos de este específico. Y aquí estamos. Así que como puedes ver aquí, estos se extraen directamente de las llamadas que he realizado. Así que la última llamada, las últimas llamadas que hice a esta función lambda específica ocurrieron a las 12:48. Ahora es 12:49. Así que hay un retraso de un minuto. Pero como puedes ver, tengo los últimos 15 minutos. Y aquí uso PowerTools para obtener bastante información de ello. Así que configuré PowerTools para proporcionar alguna información, como quiero saber cuándo está disponible mi extensión secreta de parámetro lambda. Quiero saber cuánto dura mi función lambda, y así sucesivamente. Entonces, si tengo alguna métrica u otra cosa disponible aquí sin tener que ingresar a la consola de AWS, puedo comenzar a debug y hacer mi, digamos, análisis de lo que estoy buscando directamente aquí. Como puedes ver, esto no solo te permite tomar los últimos 15 minutos o los últimos registros. También puedes retroceder

8. Usando AWS Toolkit y Application Composer

Short description:

Puedes usar AWS Toolkit para IntelliJ IDs y VS code para seleccionar diferentes rangos de tiempo para los registros. El Toolkit también te permite generar máquinas de estado para funciones paso a paso y visualizar tu infraestructura usando AWS Composer. Puedes usar Application Composer en tu IDE para crear aplicaciones a través de una interfaz de arrastrar y soltar y generar código.

en un rango de tiempo específico. Puedes seleccionar la semana pasada, tres días, y así sucesivamente. Y eso es otra cosa genial que puedes hacer con AWS Toolkit que, nuevamente, está disponible para IntelliJ IDs y VS code. La otra parte interesante del Toolkit es, como hemos visto, ejecutar una función lambda u otras cosas. Si estás usando funciones paso a paso, puedes generar en el momento la máquina de estado que has escrito dentro de tu código. Pero además, incluso puedes, a través de un anuncio reciente, visualizar a través de AWS Composer lo que estás construyendo. Así que volvamos aquí. Vamos a la salida de CDK y seleccionamos nuestra plantilla para la pila del estadio. Puedo hacer clic aquí, clic derecho y seleccionar Abrir con Application Composer. Como puedes ver aquí, Abrir con Application Composer, cuando hago clic en eso, va a generar un gráfico para mí que contiene todo lo que está desplegado dentro de mi infraestructura. Este básicamente está representando, visualmente, lo que he escrito en CDK, transformado a través de CDK en una plantilla de CloudFormation. Y ahora, de repente, tengo la posibilidad de usar eso. Obviamente, este, porque es de CDK, es una plantilla derivada, no se puede editar. No puedo agregar ese recurso y, digamos, encontrarlo, porque aún no hemos construido una solución que nos permita transformar de CloudFormation a CDK. Pero lo que puedes hacer es, si comienzas desde cero usando SAM o solo CloudFormation, puedes usar Application Composer directamente en tu IDE para, literalmente, arrastrar y soltar aplicaciones y generar código directamente desde allí. Puedes usarlo desde la consola de AWS, o puedes usarlo directamente

9. Explorando Amazon Q en AWS Toolkit

Short description:

AWS Toolkit ofrece varias posibilidades para racionalizar las cargas de trabajo sin servidor y proporciona un ciclo de retroalimentación rápida para los desarrolladores. Lo último por explorar es Amazon Q, que permite hacer preguntas sobre el código y encontrar sugerencias de optimización. Amazon Q mejora la experiencia del IDE, simplifica el desarrollo y no se limita a aplicaciones sin servidor.

desde allí. Como puedes ver, hay muchas posibilidades que se ofrecen con AWS Toolkit para racionalizar lo que estás construyendo en tus cargas de trabajo sin servidor en AWS, pero además, también la posibilidad de, digamos, tener un ciclo de retroalimentación rápida como desarrollador para lo que necesitas construir. Ahora, lo último que quiero mostrarte es Amazon Q. Así que volvamos por un segundo dentro de nuestro código. Tomemos, por ejemplo, esto. Entonces, Amazon Q te permite hacer preguntas sobre una parte específica de tu código y luego te ayuda a entender qué se podría hacer mejor. Solo daré un ejemplo. Creé esta consulta para insertar un montón de estadios en la base de datos. Ahora quiero preguntarle a Amazon Q, ¿conoces una forma más eficiente de insertar estos registros en Postgres? Ahora está pensando, y nuevamente, está en vista previa, por lo que aún no está disponible en general, pero solo para darte una idea de las cosas que puedes encontrar. Entonces, aquí, como puedes ver, preguntar qué puedo mejorar en esta parte específica de código que seleccioné, y cuando funciona, contextualmente, funciona muy bien. Puedes decir, sí, usa copy para cargar los datos en el libro en lugar de una declaración de inserción individual. Copy es mucho más rápido para cargar esto. De acuerdo, ¿cómo reescribiría esta función usando copy en lugar de insert? ¿Puedes proporcionar un fragmento de código usando Postgres.js? De acuerdo, ahora solicité tener, usando la biblioteca que utilicé para esta integración específica, un fragmento de código que me permita encontrar una mejor manera de hacer eso, y de repente tengo algo con qué empezar. Potencialmente, puedo copiar y pegar y comenzar a trabajar en eso, pero ya es bastante bueno. De acuerdo, déjame mostrarte cómo funciona Amazon Q. Entonces, por ejemplo, puedo comenzar desde aquí. Nunca he visto este código porque tal vez alguien en mi equipo lo haya escrito. Primero que nada, puedo pedir que explique el código. Selecciono una parte del código y automáticamente me proporcionará información. El código que has seleccionado está insertando datos en Postgres base de datos, en una tabla llamada estadios, y así sucesivamente. Ahora, ¿cómo puedo optimizar este código para un mejor rendimiento? Como puedes ver, con Q, puedo comenzar a crear una especie de relación y un asistente que me ayuda a descubrir cómo hacer ciertas cosas, y esto es, en mi opinión, bastante genial. Entonces, como puedes ver aquí, puedo ver la información relacionada sobre cómo puedo mejorar esta función específica, digamos, para esta cosa y también la referencia y la fuente de donde puedo encontrar esta información aquí. ¿Cómo mejorar el rendimiento de las transacciones? ¿Cómo mejorar el rendimiento de las transacciones? Y luego me está proporcionando otra información, la fuente, y así sucesivamente. Así que ya entiendes. También puedes generar, ¿cómo escribiría una consulta para Postgres para usar copy en lugar de insertar para la consulta de estadios? Incluso puedo pedir que proporcione, digamos, algún código y está generando el código para mí que puedo simplemente copiar y pegar y puedo comenzar a crear mi nueva implementación. Entonces, como puedes ver también con Amazon Q, estamos agregando nuevas capacidades a tu IDE para simplificar el trabajo que necesitas hacer. Queremos crear una gran experiencia de desarrollador para personas como tú que están construyendo soluciones utilizando sin servidor pero no solo eso. Obviamente, Amazon Q se puede usar no solo para sin servidor. La belleza de este enfoque es que, como puedes ver, tienes un montón de herramientas que ya están disponibles en tu IDE. Solo necesitas instalar los complementos correctos y listo. Comienzas a tener, digamos, capacidades para depurar, tener un ciclo de retroalimentación rápida en las pruebas locales, cargar solo lo que está cambiando en tu código en tu entorno de desarrollo, y así sucesivamente para tener un ciclo de retroalimentación rápida para que te enfoques en lo que realmente importa. Eso es el código que estás escribiendo y dejando que nosotros nos encarguemos de la complejidad de escalar las funciones lambda y manejar los diferentes componentes que se están uniendo para crear tu arquitectura. Así que espero que disfrutes de lo que has visto, y si tienes alguna pregunta, no dudes en contactarme aquí en la conferencia o incluso de forma remota en mis redes sociales. Así que, muchas gracias y disfruta el resto de tu día.

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

AWS Lambda under the hood
Node Congress 2023Node Congress 2023
22 min
AWS Lambda under the hood
Top Content
In this talk I explain how the AWS Lambda service works explaining the architecture, how it scales and how a developer should think about when they design their software using Lambda functions
Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK
React Summit 2020React Summit 2020
25 min
Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK
CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code.
In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions.
By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.
Automate React Site Deployments from GitHub to S3 & CloudFront
DevOps.js Conf 2021DevOps.js Conf 2021
33 min
Automate React Site Deployments from GitHub to S3 & CloudFront
In this talk, I will demonstrate how to create a CI/CD pipeline for a React application in AWS. We'll pull the source code from GitHub and run tests against the application before deploying it to an S3 bucket for static site hosting. The site will then be distributed using CloudFront which will point to the S3 bucket. All of the infrastructure will be built using Terraform. In addition, I'll make use of Terragrunt to show how to create this setup for multiple environments.
AWS Lambda Performance Tuning
Node Congress 2024Node Congress 2024
25 min
AWS Lambda Performance Tuning
Have you ever wonder how to get the best out of your Lambda functions?If so, this talk will reveal the behind the scene one of the most popular serverless service and you will be exposed to a step by step guidance for optimizing your functions.During this session, I will walk you through the mindset to reduce your Lambda functions execution time. In the example presented I was able to reduce the execution time by 95% for warm start and over 50% with cold starts improving also the transactions per seconds served with this API.
Infrastructure as Code for React Application on AWS Written in TypeScript
React Advanced Conference 2021React Advanced Conference 2021
30 min
Infrastructure as Code for React Application on AWS Written in TypeScript
We consider what IaC (Infrastructure as Code) is and why we should invest our time/money into it. It’s going to be a workshop-style talk and as the result, the end of it you will have complete infrastructure as code for React application on AWS written in TypeScript
Turning the Cloud Inside Out
React Summit Remote Edition 2021React Summit Remote Edition 2021
36 min
Turning the Cloud Inside Out
GraphQL is being used in some really interesting ways in parts of the developer ecosystem that you may be surprised to hear about, including Ethereum as well as for building comprehensive graphs from various third party APIs. In this talk, I'll show how to use a similar approach to build a cloud programming interface into AWS with GraphQL and why using this approach makes sense coming from a front end developer looking to leverage their existing skillset.

Workshops on related topic

Building Serverless Applications on AWS with TypeScript
Node Congress 2021Node Congress 2021
245 min
Building Serverless Applications on AWS with TypeScript
Workshop
Slobodan Stojanović
Slobodan Stojanović
This workshop teaches you the basics of serverless application development with TypeScript. We'll start with a simple Lambda function, set up the project and the infrastructure-as-a-code (AWS CDK), and learn how to organize, test, and debug a more complex serverless application.
Table of contents:        - How to set up a serverless project with TypeScript and CDK        - How to write a testable Lambda function with hexagonal architecture        - How to connect a function to a DynamoDB table        - How to create a serverless API        - How to debug and test a serverless function        - How to organize and grow a serverless application


Materials referred to in the workshop:
https://excalidraw.com/#room=57b84e0df9bdb7ea5675,HYgVepLIpfxrK4EQNclQ9w
DynamoDB blog Alex DeBrie: https://www.dynamodbguide.com/
Excellent book for the DynamoDB: https://www.dynamodbbook.com/
https://slobodan.me/workshops/nodecongress/prerequisites.html
Frontend to the Cloud Made Easy - A ReactJS + AWS Workshop
DevOps.js Conf 2024DevOps.js Conf 2024
59 min
Frontend to the Cloud Made Easy - A ReactJS + AWS Workshop
Workshop
Eyal Keren
Eyal Keren
This workshop enables you to learn how to develop React applications, and then deploy them to the cloud (or building them to the console) coupled with a backend, fully abstracted, with no complex backend configuration, simplifying the building and deployment of frontend & web apps to the cloud.