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!
This talk has been presented at DevOps.js Conf 2024, check out the latest edition of this JavaScript Conference.
FAQ
El AWS Cloud Development Kit, o CDK, es una herramienta de infraestructura como código ofrecida por AWS que permite a los desarrolladores escribir en su lenguaje favorito y generar automáticamente plantillas de CloudFormation para el despliegue y aprovisionamiento de código e infraestructura.
Para desplegar una carga de trabajo en AWS usando CDK, simplemente tienes que ejecutar el comando 'cdk deploy' en tu terminal y seleccionar el perfil de configuración adecuado para tu región e información necesaria.
AWS CDK permite probar funciones Lambda localmente utilizando SAM (Serverless Application Model), una CLI que se puede ejecutar con el comando 'SAM local start API' para probar APIs en un entorno local.
Para obtener una retroalimentación rápida, puedes utilizar la opción 'hot swap' con el comando 'CDK deploy'. Esto permite actualizar el código de la función Lambda sin pasar por un nuevo despliegue de CloudFormation, acelerando significativamente el proceso de desarrollo.
AWS Lambda Power Tool es una herramienta que facilita la operacionalización de la observabilidad de las aplicaciones en AWS. Proporciona funcionalidades como la adición de trazas, métricas y registros, que generalmente están disponibles en CloudWatch.
Puedes invocar funciones Lambda directamente desde tu IDE utilizando el AWS Toolkit. Esta herramienta permite ejecutar funciones directamente, sin necesidad de usar comandos de CLI como curl, proporcionando una integración directa con eventos y visualización de resultados.
Amazon Q es una herramienta en vista previa que permite hacer preguntas sobre partes específicas del código y recibir sugerencias de optimización. Por ejemplo, puede sugerir métodos más eficientes para realizar operaciones de base de datos, como usar 'copy' en lugar de insertar registros individualmente.
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.
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.
In this Talk, key characteristics of AWS Lambda functions are covered, including service architecture, composition, and optimization of Node.js code. The two operational models of Lambda, asynchronous and synchronous invocation, are explained, highlighting the scalability and availability of the service. The features of Lambda functions, such as retries and event source mapping, are discussed, along with the micro VM lifecycle and the three stages of a Lambda function. Code optimization techniques, including reducing bundle size and using caching options, are explained, and tools like webpack and Lambda Power Tuning are recommended for optimization. Overall, Lambda is a powerful service for handling scalability and traffic spikes while enabling developers to focus on business logic.
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.
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.
This Talk focuses on automating React deployments to S3 and CloudFront using a CICD pipeline in AWS. It covers setting up the pipeline, sourcing code from GitHub, and configuring infrastructure with Terraform and Terragrunt. The Talk also demonstrates the process of building and deploying a React application using AWS CodeBuild and CodePipeline. Overall, it provides a comprehensive overview of the tools and techniques involved in automating React deployments in AWS.
This Talk covers infrastructure as code using Terraform and CDK. The speaker demonstrates how to build infrastructure for a React application, including an S3 bucket and connecting to a real domain. They also discuss configuring cache behavior, CloudFront, and remote backends. TypeScript is highlighted as a powerful language for infrastructure as code, and the importance of automation and well-documented code for global-scale infrastructures is emphasized.
Imagine starting as an AWS DevOps engineer in a small company. Your boss wants an all-in AWS approach, with CICD entirely on AWS for automated deployments. Use AWS CDK for creating a pipeline, stages, and actions. Learn how to handle multiple pipelines for different accounts and handle manual approval for staging and production environments. Discover how to trigger pipelines with EventBridge and Lambda, and create sophisticated pipelines for different scenarios.
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
En este masterclass, veremos cómo crear una base de conocimientos utilizando Gatsby, un Framework generador de sitios estáticos que utiliza React y GraphQL, Contentful, un CMS sin cabeza para gestionar el contenido y desplegarlo en AWS S3.
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.
Comments