Durante años, AWS ha ofrecido CloudFormation como un enfoque para la Infraestructura como Código (IaC). CloudFormation permite provisionar pilas de aplicaciones a partir de plantillas en formato JSON o YAML. Desafortunadamente, debido a su tamaño y complejidad, las plantillas de CloudFormation han ganado una reputación de ser difíciles de manejar.
El AWS Cloud Development Kit (CDK) mitiga parte de la complejidad asociada con CloudFormation, permitiendo a los desarrolladores definir programáticamente su arquitectura en la nube utilizando lenguajes de alto nivel familiares como JavaScript y TypeScript. Los proyectos de CDK pueden ser implementados a través de CloudFormation, manteniendo todos los beneficios de CloudFormation, como despliegues repetibles y detección de desviaciones. Esta charla presentará el CDK en el contexto de Node.js y demostrará cómo se puede aprovechar para provisionar arquitecturas nativas en la nube.
This talk has been presented at Node Congress 2021, check out the latest edition of this JavaScript Conference.
FAQ
El AWS CDK (Cloud Development Kit) es una herramienta de AWS para infraestructura como código, que permite definir la arquitectura cloud usando lenguajes de programación conocidos como JavaScript, TypeScript, Python, Java y C#. Facilita la creación de recursos AWS a través de plantillas de CloudFormation.
AWS CDK y Terraform son herramientas para gestionar infraestructuras como código. Terraform es más antiguo y probado, con compatibilidad para múltiples proveedores de nube. AWS CDK es específico de AWS y permite a los desarrolladores usar lenguajes de programación populares directamente para definir su infraestructura.
El uso de AWS CDK es gratuito, pero se aplicarán cargos por los recursos AWS que implementes con él, como instancias EC2 u otros servicios de AWS.
AWS CDK soporta múltiples lenguajes de programación como JavaScript, TypeScript, Python, Java y C#. También hay planes para expandir el soporte a otros lenguajes en el futuro.
Las ventajas de usar AWS CDK incluyen la capacidad de usar lenguajes de programación comunes para definir la infraestructura, integración con CloudFormation para gestión de recursos, y la capacidad de mantener el estado de la aplicación para facilitar actualizaciones y re-despliegues.
CloudFormation es un servicio de AWS que permite definir y provisionar infraestructura de AWS a través de archivos de plantilla en JSON o YAML. AWS CDK utiliza CloudFormation internamente para desplegar y gestionar recursos, simplificando la gestión de infraestructura mediante programación en lugar de configuración manual de plantillas.
No, AWS CDK aún no es compatible con todas las características de AWS debido a la amplitud y constante evolución de los servicios de AWS. Sin embargo, AWS continúa desarrollando y agregando soporte para más servicios en el CDK.
En AWS CDK, los constructos son bloques de construcción que representan recursos de AWS o configuraciones específicas. Estos pueden ser simples, como un bucket de S3, o más complejos, como una configuración de red. Los constructos se pueden combinar para crear soluciones de infraestructura completas.
El CDK es una herramienta específica de AWS para la infraestructura como código que admite múltiples lenguajes y le permite mantener el estado de su aplicación y actualizarlo sin pasar por las mismas verificaciones que realizar llamadas directas a la API. El CDK permite a los desarrolladores escribir su infraestructura y sus aplicaciones utilizando JavaScript y TypeScript, aprovechando sus habilidades existentes. Introduce una API utilizando TypeScript y constructos para simplificar la construcción y composición de aplicaciones de CDK. El CDK se puede utilizar para crear una variedad de recursos, incluido un sitio estático de S3, y ofrece soporte de primera clase de AWS.
El CDK es una herramienta específica de AWS para infraestructura como código que admite varios lenguajes y funciona mapeando clases de alto nivel de JavaScript o TypeScript a plantillas de CloudFormation. Te permite mantener el estado de tu aplicación y actualizarlo sin tener que pasar por las mismas verificaciones que hacer llamadas directas a la API. Aunque algunas características de AWS aún no son compatibles, el CDK es gratuito de usar, pero implementar recursos de AWS puede generar cargos.
Hola a todos. Gracias por asistir virtualmente a mi charla. Hoy voy a hablar sobre el AWS CDK. Y el título de mi charla es Introducción a la infraestructura como código de AWS CDK. Entonces, supongo que la primera pregunta a responder es, ¿qué es el CDK? Es una abreviatura de Cloud Development Kit. Es una herramienta específica de AWS para infraestructura como código. Es similar a herramientas como Terraform que es posible que hayas usado en el pasado. Admite una variedad de lenguajes para que puedas escribir tus aplicaciones en JavaScript, TypeScript, Python, Java y C sharp. Creo que también hay planes para otros lenguajes en el futuro. Y la forma en que funciona internamente es que las clases de alto nivel de JavaScript o TypeScript se mapean a estas cosas llamadas plantillas de CloudFormation, de las que hablaré nuevamente en un par de minutos. Si has usado el CD o SDK deAWS en el pasado, el CDK no es lo mismo. El SDK de AWS se utiliza para hacer llamadas simples a la API, mientras que el CDK es capaz de mantener el estado de tu aplicación, lo que te permite actualizarlo y volver a implementarlo sin tener que pasar por las mismas verificaciones que si estuvieras haciendo llamadas directas a la API. El CDK en sí es bastante nuevo. Alcanzó la disponibilidad general a mediados de 2019. Por lo tanto, todavía hay algunas características deAWS que no están compatibles, ya que AWS es bastante masivo. Y además es gratuito de usar, pero he incluido un asterisco aquí porque si comienzas a usarlo para implementar cosas como instancias EC2 u otrosAWS
2. Why Use the CDK?
Short description:
El CDK es una herramienta que permite a los desarrolladores escribir su infraestructura y sus aplicaciones utilizando JavaScript y TypeScript. Satisface a los desarrolladores donde se encuentran, ya que JavaScript es el lenguaje de programación del lado del servidor más popular entre los desarrolladores nativos de la nube. Al utilizar el CDK, los desarrolladores pueden aprovechar sus habilidades existentes y tener un lenguaje consistente tanto para el desarrollo front-end como para el back-end.
recursos, se te cobrará por esas cosas. Entonces, supongo que a continuación, podrías estar preguntando por qué usaría esto. Como dije antes, hay muchas herramientas como esta, cosas como Terraform y demás. Así que voy a presentar un informe de la Cloud Native Computing Foundation que encuestó aproximadamente a 17,000 desarrolladores. Si no estás de acuerdo con estas citas, por favor no me mates, solo soy el mensajero. Pero, JavaScript es el lenguaje de programación del lado del servidor más popular entre los desarrolladores nativos de la nube, y el 62% de los desarrolladores nativos de la nube utilizan AWS como su proveedor de alojamiento en la nube. Entonces, el CDK realmente satisface a los desarrolladores donde se encuentran. Ya hay muchos desarrolladores que están escribiendo aplicaciones en la nube con JavaScript y TypeScript y desplegándolas en AWS. Entonces, al utilizar una herramienta como esta, puedes escribir tu infraestructura y tus aplicaciones utilizando las mismas herramientas y lenguajes. Y eso siempre ha sido una de las ventajas de Node.js, ya que permitía a los desarrolladores front-end y back-end utilizar el mismo lenguaje común, y esto simplemente amplía aún más eso en
3. The CDK and CloudFormation
Short description:
El CDK ofrece una infraestructura probable y aborda las preocupaciones sobre el bloqueo del proveedor. Utiliza una herramienta llamada JSII, que le permite escribir en TypeScript y es compatible con varios lenguajes. CloudFormation es un poderoso servicio de AWS que administra recursos como pilas, simplificando el mantenimiento y la gestión del estado. Admite entradas y salidas, lo que permite la composición y flexibilidad. Sin embargo, CloudFormation puede ser verboso y propenso a errores. El CDK introduce una API utilizando TypeScript y constructos para simplificar la construcción y composición de aplicaciones de CDK.
tu implementación y operaciones. El CDK también te ofrece una infraestructura probada, por lo que hay un módulo de aserción AWS CDK slash assert. Se integra muy bien con Jest y snapshot testing. Y luego, lo último que quería mencionar es que realmente no deberías preocuparte por el bloqueo del proveedor porque probablemente ya estás bloqueado a menos que tengas la aplicación más trivial. Poder pasar de AWS a algo como Azure probablemente requerirá algún esfuerzo en la portabilidad. Entonces, el CDK no te va a bloquear más de lo que ya estás bloqueado. Y luego, antes de profundizar demasiado, quería algo que descubrí mientras investigaba el CDK y que me pareció interesante, fue algo llamado JSII, que significa la Interfaz de Interoperabilidad de JavaScript. Y esto es en cierto modo la herramienta que se encuentra debajo del CDK que le permite escribir en TypeScript, pero aún es compatible con todos los demás lenguajes que mencioné anteriormente. Y cuando leí sobre esto originalmente, pensé que probablemente funcionaba generando código específico del lenguaje. Pero en realidad, en el fondo, se basa en un runtime de Node.js, y lo que hace es ejecutar tu código de TypeScript y enviarlo de ida y vuelta, la entrada y salida, entre el proceso secundario de Node y el proceso principal que ha estado ejecutando tu aplicación. Y hay algunas uniones generadas que forman parte de la salida del CDK, por lo que puedes escribir tu código una vez y obtendrás la misma API en todos estos diferentes lenguajes. Y eso desafortunadamente tiene un impacto en el rendimiento, porque estás iniciando un proceso de Node, estás interactuando con un proceso secundario, en lugar de generar el código directamente. Pero pensé que era algo interesante y quería compartirlo como parte de esta charla. Así que volviendo al punto principal de esta charla, mencioné CloudFormation anteriormente. CloudFormation es un conocido servicio de AWS que básicamente te permite definir tu arquitectura, tus recursos que utilizarás en la nube como un archivo de plantilla JSON o YAML. Y luego se puede implementar a través del servicio de CloudFormation. Se encargará de crear todos los recursos que necesites, como instancias o funciones Lambda o cualquier otra cosa de ese tipo. Y en realidad puede administrar grupos grandes de recursos como una unidad única que se llama pila. Por lo tanto, las pilas se pueden crear, actualizar y modificar, también se pueden eliminar y todo lo que sucede a ese grupo completo como una sola entidad. Por lo tanto, simplifica mucho la sobrecarga de mantenimiento para los desarrolladores. Y como mencioné anteriormente, el hecho de que mantenga el estado entre tus implementaciones le permite ser mucho más poderoso que las llamadas individuales al SDK de AWS, donde tendrías que gestionar todo ese estado tú mismo. Y luego, dentro de CloudFormation, básicamente hay entradas y salidas para tu pila de CloudFormation. Las entradas se llaman parámetros y son útiles para pasar cosas como información sensible o si estás implementando un sitio web, tal vez cuál es el nombre de dominio para esa pila y cosas de ese tipo. Y también puede generar salida. Entonces, si le dices que provisione un bucket de S3, es posible que no sepas de antemano cuál es el nombre de ese bucket. Por lo tanto, eso se puede usar como una salida que luego puede ser importada por otra pila de CloudFormation. Por lo tanto, puedes ver que es componible y muy poderoso, pero la mayor desventaja es que CloudFormation es muy verboso. Mantener estos archivos JSON y YAML a mano puede ser bastante trabajo y propenso a errores. El CDK vio el poder de CloudFormation e introdujo esta API sobre ella utilizando TypeScript y lo que hace es darte estos bloques de construcción llamados constructos. Los constructos son la forma en que construyes y compones aplicaciones de CDK y hay una variedad de diferentes tipos de constructos en diferentes niveles. Por ejemplo, el
4. Introduction to CDK Constructs and Environments
Short description:
El CDK introduce diferentes niveles de constructos, desde recursos de CloudFormation hasta API basadas en intenciones y patrones de nivel superior. Estos patrones pueden acelerar la productividad al simplificar la creación de funciones Lambda y su integración con las pasarelas de API. AWS proporciona una biblioteca de constructos, pero los usuarios también pueden crear los suyos propios. Las aplicaciones de CDK consisten en aplicaciones, que son los componentes raíz, y pilas, que se asignan a pilas de CloudFormation. Cada pila se configura mediante un entorno, que incluye el ID de cuenta de AWS y la región de implementación. El entorno se puede especificar de varias formas, como a través del código, indicadores de línea de comandos o variables de entorno. La generación de una aplicación de CDK se puede hacer utilizando el comando mpx AWS CDK, especificando el lenguaje deseado.
El nivel 1 de constructo es básicamente un recurso de CloudFormation. CFN aquí significa CloudFormation de forma abreviada. Por ejemplo, hay un constructo de CDK llamado CloudFormation bucket y esto es simplemente un envoltorio básico alrededor de CloudFormation. Pero luego, los constructos de nivel 2 llevan eso a un nivel superior para introducir una API basada en intenciones. Basándonos en el mismo ejemplo, en lugar de un bucket de CloudFormation, podrías usar un bucket de S3 y esto tiene una API mucho más amigable para el usuario. Y finalmente, hay lo que se llaman patrones, que son aún más de nivel superior y pueden componer muchos componentes diferentes juntos. Estos realmente pueden acelerar tu productividad. Por ejemplo, en lugar de tener que crear funciones Lambda, conectarlas a una pasarela de API y cosas así, puedes simplemente usar el patrón de API REST de Lambda. Como dije, realmente puede acelerar la productividad. Y la forma en que funcionan estas aplicaciones es que tomas tus diferentes constructos y los compones en lo que se llama un árbol de constructos. Y también vale la pena señalar que AWS proporciona una gran cantidad de constructos desde su biblioteca, pero también es posible que los usuarios creen sus propios constructos para adaptarlos a sus necesidades. Entonces, hay dos tipos especiales de constructos que vale la pena discutir un poco. Son las aplicaciones y las pilas. Por lo tanto, la raíz del árbol de constructos siempre será un componente de aplicación. La razón por la que se llama aplicación es porque las aplicaciones de CDK se denominan aplicaciones. Como dije, esto siempre será la raíz, pero las pilas son constructos que se asignan a pilas de CloudFormation. Mencioné que en CloudFormation, los grupos de recursos se agrupan como una pila, y esto es una correspondencia uno a uno. Por lo tanto, las aplicaciones contienen pilas, por lo que puedes tener más de una en una sola aplicación, y luego las pilas son las que contienen los otros constructos. Una cosa que vale la pena señalar es que cada pila se configura mediante un entorno, y hablaré de eso ahora mismo. Un entorno es un ID de cuenta de AWS, más una región donde se implementará la pila. Básicamente, esto significa que este usuario se implementa en esta región en la nube, y se debe proporcionar un entorno para cada región a la que intentes implementar, y para cada cuenta separada que pueda querer implementar tu pila. Si no especificas un entorno, entonces la pila se considera que no depende del entorno. Pero esto tiene un uso bastante limitado. Y para proporcionar el entorno, si alguna vez has trabajado con alguna de las herramientas de AWS antes, hay varias formas de hacerlo. En el propio código, puedes pasar valores al constructor de la pila, pero también puedes pasar un indicador de perfil desde la línea de comandos o especificar diferentes variables de entorno, y automáticamente las recogerá en el código y sabrá dónde implementar tus cosas. Y también puedes configurar tu perfil de AWS para tener un entorno predeterminado, pero eso es más para casos de uso de desarrollo local. Con todo esto, creo que podemos generar nuestra primera aplicación de CDK. He agregado un comando de línea de comandos simple aquí utilizando mpx, por lo que no tienes que instalar nada todavía. mpx AWS CDK, ese es el nombre del módulo. Init app, y luego pasamos el lenguaje que queremos usar aquí, pero puedes pasar cualquiera de los otros lenguajes admitidos.
5. Creación del Esqueleto de la Aplicación y Pila de Prueba
Short description:
Esta parte explica cómo se crea el esqueleto de la aplicación y el proceso de instanciar la aplicación y crear una nueva pila de prueba. También proporciona una descripción general del código generado, incluyendo la importación del CDK, la creación de una clase TestStack y el constructor de la clase.
Y esto creará un esqueleto completo de la aplicación para ti. Una nota es que debes ejecutar esto desde dentro de un directorio vacío para que no sobrescriba accidentalmente cualquier cosa que pueda existir. Esto crea una carpeta bin, y así puedes ejecutar este archivo directamente. Puedes ver el pequeño shebang en la parte superior del código aquí que la mayoría de los binarios de node incluyen.
Entonces, lo que hace es importar una pila de prueba que también se generó para ti, instanciar tu aplicación con el nuevo constructor cdk.app, y luego simplemente crear una nueva pila de prueba. Y dentro de la pila de prueba, puedes ver que pasa la aplicación como primer argumento, así es como el Árbol de Constructos realiza un seguimiento de qué constructos son hijos de qué otros constructos. Y luego vamos a llamar a esta pila de prueba, así que eso es lo que es la segunda opción allí. Así que al ver la pila en sí, puedes ver que este es el código que se generó. Dejé algunos de los comentarios y otras cosas que se generaron automáticamente, pero en ejemplos futuros, los eliminaré para ahorrar espacio. Lo primero que hacemos es importar el cdk en sí, y luego creamos una clase TestStack, que extiende la clase cdkStackBase. El constructor de una clase toma un alcance, un ID y props. El alcance es el constructo padre, como mencioné antes. El ID es el ID lógico del constructo cuando sintetizamos y desplegamos estas aplicaciones. Y luego los props son un mapa opcional que se puede pasar y que se utiliza para definir otras propiedades de tu constructo.
6. Adding Constructs and Deploying Applications
Short description:
Para agregar más constructos, instala los constructos de CDK para el servicio EC2. En este ejemplo, se agrega una VPC a la pila. Las aplicaciones se sintetizan y despliegan utilizando la CLI de CDK. La fase de construcción de constructos crea el árbol de constructos, seguida de la fase de síntesis que genera el conjunto de recursos en la nube. El comando de implementación carga el conjunto de recursos en la nube y comienza una implementación de CloudFormation. Los activos y la inicialización son necesarios para cargar archivos o imágenes de Docker. La inicialización crea una pila de herramientas de CDK con un bucket de S3 y recursos de IAM para implementar activos.
Entonces, si queremos agregar más constructos, podríamos hacer algo como esto, npm install dash dash save awscdk slash awsec2, esto básicamente instalará los constructos de CDK para el servicio EC2. En este ejemplo simple, estoy agregando una VPC a nuestra pila. La razón por la que hago esto es porque las VPC se pueden implementar sin costo adicional, así que si quieres experimentar con esto y implementarlo, deberías poder ejecutar esto sin incurrir en ningún cargo. A continuación, quiero hablar sobre cómo se sintetizan y despliegan estas aplicaciones. Puedes ver el flujo de trabajo general aquí, verás cdk CLI en la parte superior. Cdk deploy es uno de los comandos de la CLI, hablaré sobre qué son algunos de los otros más adelante. Y lo que hace es que lee el código fuente de tu aplicación, pasa por lo que se llama la fase de construcción de constructos, donde se ejecuta el código del usuario y se ejecuta toda la cadena de constructores. Así que básicamente está construyendo el árbol de constructos. Las fases de preparación y validación son ganchos disponibles para los constructos, pero generalmente no son necesarios. Y a veces incluso se desaconsejan. Y luego viene la fase de síntesis, que genera algo llamado un conjunto de recursos en la nube. El conjunto de recursos en la nube será tu plantilla de formación en la nube, así como cualquier otro artefacto de implementación que se necesite para implementar tu aplicación en la nube. Hablaré sobre qué son esos otros artefactos de implementación en un momento. Y luego la implementación tomará tu conjunto de recursos en la nube y, ya sabes, cargará todo lo que necesite ser cargado en la nube y comenzará una implementación de CloudFormation. Y una vez que eso tenga éxito, tendrás una aplicación de CDK que está implementada en la nube. Puedes hacer la etapa de síntesis como un paso separado sin necesidad de implementarla, lo cual es útil para pruebas locales y pruebas unitarias. Para hacer eso, puedes usar el comando MPX AWS CDK, synth, y luego el nombre de tu pila. En este caso, test stack, esto generará tu pequeña aplicación de CDK en una plantilla de formación en la nube. Generará cualquier artefacto de implementación, como imágenes de Docker, si estás implementando alguna función lambda, las empaquetará para ti. Y luego escribirá todo tanto en la salida estándar, ya que esto es solo una síntesis y no una implementación, pero también creará tu directorio CDK dot out, que es donde se almacena todo antes de implementarlo. Y luego puedes ver a la derecha aquí, he capturado cómo se ve la plantilla de formación en la nube. Y puedes ver que, ya sabes, ocupa toda la altura de la diapositiva y es muy ilegible. Y eso se basa en una aplicación de CDK, que tenía aproximadamente una docena de líneas de JavaScript. Así que puedes ver de dónde viene, ya sabes, el aumento de la verbosidad con CloudFormation, así como, ya sabes, el poder expresivo de CDK.
A continuación, quiero hablar sobre activos y la inicialización. Así que cualquier archivo o directorio local que necesite ser cargado en S3, o cualquier imagen de Docker local que necesite ser cargada en el registro de contenedores elástico, se conocen como activos. Si tu aplicación utiliza alguno de estos activos, entonces tendrás que hacer algo llamado inicialización, que es algo que se debe hacer por entorno, por usuario y combinación de región, también creará una pila adicional de formación en la nube para ti llamada herramientas de CDK. Y consta de un bucket de S3 y un conjunto de recursos de IAM para implementar los activos en la nube. Una cosa a tener en cuenta es que es probable que se te cobre por esto porque estarás almacenando activos en AWS. Así que quería ver algo más realista
7. Despliegue de un sitio estático en S3
Short description:
Para desplegar un sitio estático en S3, crea una nueva pila llamada pila del sitio web y un nuevo bucket de S3. Otorga acceso de lectura público al mundo. Utiliza el constructo de implementación del bucket de despliegue de S3 para cargar los activos en el bucket. Puedes agregar DNS y CDNs para mejorar el sitio. Para desplegar el sitio, ejecuta 'mpx AWS CDK deploy pila del sitio web' después de inicializar el entorno. Limpia utilizando 'CDK Destroy pila del sitio web' y asegúrate de que todos los recursos se eliminen en la consola web de AWS. Instala AWS CDK localmente para usar la CLI.
Por ejemplo. Ahora vamos a desplegar un sitio estático en S3. He incluido un asterisco aquí porque, una vez más, se te cobrará por AWS si ejecutas esto. Así que he creado una nueva pila aquí llamada pila del sitio web, que extiende la clase de pila CDK. Y luego, dentro, estoy creando un nuevo bucket de S3. Voy a llamar a mi bucket bucket del sitio web, voy a hacer que el índice sea index.html, la página de inicio de mi sitio que estoy desplegando. Y voy a otorgar acceso de lectura público al mundo para que cualquier persona pueda venir y ver mi sitio. Y luego, para desplegarlo, usaré el constructo de implementación del bucket de despliegue de S3. Así que lo estoy adjuntando a la pila, lo llamo despliegue, mi sitio web, las fuentes vendrán de un directorio local que llamo www, eso creará activos, como mencioné en la diapositiva anterior. Esa es la parte por la que se te cobrará. Y luego subirá todo al bucket que acabamos de crear llamado bucket del sitio web. Una cosa que vale la pena señalar aquí, este es un ejemplo pequeño, porque tiene que caber en una diapositiva. Pero podrías llevar esto más lejos y agregar cosas como DNS o CDN para crear un sitio estático agradable para ti. Entonces, para desplegar realmente el sitio, diríamos mpx AWS CDK deploy pila del sitio web, y luego pasaré mi perfil de AWS desde la línea de comandos para que sepa a qué entorno desplegar. Pero la primera vez que ejecuto esto, veré el siguiente error. Dice esta pila utiliza activos, por lo que la pila de herramientas debe desplegarse en el entorno. Entonces, eso significa que tengo que inicializar este entorno primero, y puedes ver a continuación que he agregado mpx, AWS CDK, bootstrap, y luego paso mi perfil que creará la infraestructura de inicialización de la que hablé antes, luego puedo volver a ejecutar el mismo despliegue y todo debería funcionar según lo planeado esta vez.
Entonces, si quieres ver cómo se ven esos recursos desplegados, en la parte superior izquierda aquí tengo la consola de CloudFormation que muestra las pilas de la aplicación y de inicialización. La esquina superior derecha es la consola de S3 que muestra los buckets de la aplicación y de inicialización. La parte inferior izquierda es el bucket de la aplicación que contiene los activos estáticos. Y la parte inferior derecha es el sitio realmente desplegado y funcionando en producción. Como dije, si quieres hacer esto un poco más sofisticado, podrías agregar cosas como DNS y los CDNs. Podrías tener una URL más amigable para el usuario allí. Y luego, para limpiar, usarás CDK Destroy pila del sitio web. También recomiendo que vayas a la consola web de AWS y veas S3 y CloudFormation para asegurarte de que todos los recursos se hayan eliminado. He vinculado a continuación un problema de CDK donde la inicialización no siempre se limpia a sí misma. Así que quería proporcionarte aquí comandos que puedes usar para limpiar o simplemente hacer clic en la consola web y deberías poder hacer la misma limpieza manualmente. Y luego quería concluir hablando sobre la CLI. Estos son todos básicamente los comandos que usamos para hacer el despliegue. Puedes instalar AWS CDK localmente. Si haces eso, entonces se convierte en
8. Instalación de CDK y recursos adicionales
Short description:
El CDK se puede instalar de forma global, pero se recomienda agregarlo a tu package JSON y llamarlo desde tus scripts de NPM. Hay otros comandos útiles como CDK LS, Dif, Metadata, CDK context, doctor y CDK doc. Los recursos adicionales incluyen la documentación oficial, el código fuente de CDK y ejemplos creados por la comunidad. ¡Gracias por asistir a la charla y que tengas un buen día!
conocido como CDK y no como AWS CDK. Así que eso es algo a tener en cuenta. También puedes instalarlo de forma global con la bandera -G, pero no lo recomiendo realmente. Las dependencias globales generalmente no son lo mejor. Por eso recomiendo agregarlo a tu package JSON y luego llamarlo desde uno de tus scripts de NPM. También hay otros comandos útiles aquí de los que no hablé. CDK LS mostrará las pilas que están en la aplicación. Dif comparará la pila con la versión desplegada o la plantilla local de CloudFormation. Metadata puede mostrar los metadatos que se han adjuntado a una pila. De manera similar, puedes pasar pares clave-valor llamados contexto de tiempo de ejecución a tu aplicación utilizando CDK context. Hay un comando doctor, que puede analizar tu proyecto y buscar posibles problemas. Y luego CDK doc se puede usar para abrir la documentación oficial en tu navegador. Es una especie de acceso directo.
Y finalmente, quería incluir aquí algunos recursos adicionales. El primer enlace es la documentación oficial. El segundo enlace es el código fuente de CDK. Y luego, los enlaces restantes son una combinación de recursos creados por AWS y la comunidad para aprender el CDK y proporcionar ejemplos de referencia. Así que realmente puedes comenzar rápidamente y ponerlo en marcha. Eso es todo lo que tenía. Gracias nuevamente por asistir a mi charla y que tengas un buen día a todos. Me alegra ver que muchas personas no han utilizado el CDK antes. Espero que la charla sea una especie de inspiración para que lo prueben. ¿Te sorprendieron esas respuestas? No realmente. Es una herramienta bastante nueva. Y también se utiliza para despliegues y en muchos lugares de desarrollo de software, los desarrolladores no se encargan realmente del despliegue. Así que no me sorprendió realmente. Entiendo, tiene sentido. Echemos un vistazo en
QnA
Preguntas sobre CDK y Experiencia de Aprendizaje
Short description:
El CDK aún no cubre todas las diferentes cosas que AWS puede hacer. AWS siempre está agregando cosas nuevas, lo que dificulta mantenerse al día. Terraform es una gran herramienta, pero el CDK ofrece soporte de primera clase de AWS y permite a los desarrolladores de JavaScript escribir implementaciones utilizando JavaScript en lugar de aprender Terraform. JavaScript se está volviendo más prevalente y el CDK ha despertado el interés de muchos desarrolladores. El orador se enteró del CDK a través de Twitter y tuvo una experiencia positiva usándolo para esta charla.
Canal de preguntas y respuestas de Node Talk. Algunas preguntas para ti. David, Liam pregunta, ¿hay algún servicio de AWS que no esté cubierto en el CDK? Sí, el CDK aún no cubre todas las diferentes cosas que AWS puede hacer. Sé que están agregando activamente cosas nuevas. Pero también AWS siempre está agregando nuevas cosas también. Así que es muy difícil mantenerse al día con algo que ya es tan masivo. Sí, tiene sentido. Max preguntó, ¿no es Terraform más eficiente porque no utiliza una plantilla de CloudFormation? En realidad, no sé cómo funciona Terraform internamente. Pero Terraform, quiero decir, Terraform es una gran herramienta. Ha estado presente durante mucho más tiempo y ha sido probado en batalla y funciona en otras nubes también. Pero, como dije en la charla, una de las ventajas del CDK es, en primer lugar, el soporte de primera clase de AWS. Pero además, permite a los desarrolladores de JavaScript escribir sus implementaciones utilizando JavaScript en lugar de tener que aprender Terraform y ES5 versus ESL que utiliza Terraform. Así que creo que, ya sabes, no es un reemplazo para todo, pero es solo otra herramienta para tu caja de herramientas. Claro, claro. Soy un desarrollador de JavaScript. Y me encanta que muchas cosas se estén moviendo a JavaScript. JavaScript está en todas partes. Tenemos un comentario de Juan Gonzales. Dijo que la charla realmente despertó su interés por el CDK. Uno más para agregar a mi lista de aprendizaje. Así que es comprensible que la gente no haya probado aún. ¿Cuándo fue la primera vez que lo probaste? ¿Cómo fue cómo? ¿Cómo te metiste en esto? En realidad, fue bastante reciente. Escuché hablar de ello y leí sobre ello en Twitter. Así que empecé a investigarlo y me pareció interesante. Y quería tener una razón para aprenderlo mejor y experimentar con él. Y luego me pidieron que hablara en esta conferencia. Así que hice todo el desarrollo impulsado por la charla de la conferencia, o como lo llamen. Básicamente, lo aprendí para esta charla. Y tuve una muy buena experiencia usándolo. Así que espero que otros también la tengan. Sí, eso es genial. Bueno, gracias por aprenderlo para la
Desarrollo impulsado por conferencias y desafíos de CDK
Short description:
El desarrollo impulsado por conferencias es una forma interesante de aprender. El orador encontró que el CDK está bien documentado y es fácil de usar. No encontraron ningún desafío, aunque descubrieron la tecnología JSII y la exploraron más a fondo. En general, fue una buena experiencia.
charla. También he hecho esto como desarrollo impulsado por conferencias. Siempre es realmente interesante verlo. Creo que es una forma muy agradable de enseñar a las personas porque estás aprendiendo mientras avanzas. Y las preguntas que tenías probablemente son las preguntas que las personas que están aprendiendo también tienen, ¿encontraste algún desafío mientras empezabas con esto? Sé que pensé que estaba realmente bien documentado y era fácil de usar. No intenté usar ninguna de las características que tiene AWS que el CDK aún no admite. Así que no me encontré con ninguno de esos problemas. Pero descubrí esa tecnología JSII que mencioné allí y me adentré en ese tema y me sorprendió ver cómo funcionaba internamente. Así que sí, fue un buen momento. Tú también miraste bajo el capó. Eso es muy
Migración a CDK desde Terraform
Short description:
Si estás empezando algo nuevo en AWS y no conoces Terraform, usar el CDK tendría una curva de aprendizaje más baja. Sin embargo, si ya tienes un flujo de trabajo y una configuración existente con Terraform, no es necesario cambiar. La migración de herramientas de infraestructura puede ser complicada y desafiante.
interesante. Hagamos otra pregunta. Tenemos, um, alguien preguntó, actualmente estoy usando terraform. ¿Por qué debería migrar a CDK? Bueno, sabes, si ya tienes un flujo de trabajo existente y una configuración existente, no recomendaría arrancarlo y reescribirlo solo por el hecho de reescribirlo. Pero si estás, si estás empezando algo nuevo en AWS, si aún no conoces terraform, creo que la curva de aprendizaje sería mucho menor usando algo como el CDK. Así que ahí es donde lo recomendaría. Sé que hay muchos fanáticos acérrimos de terraform que no van a hacer el cambio y está bien porque realmente no es necesario. Sí, cambiar las cosas, especialmente la infraestructura, es súper complicado. ¿Alguna vez has tenido que hacer una migración así? No de una, no de una herramienta de infraestructura a otra Ahora. Qué suerte tienes. Yo tampoco he tenido que hacerlo, pero solo he escuchado las historias de terror y, oh, me estremezco solo de pensarlo
Contribuyendo a AWS CDK y Nivel de Experiencia
Short description:
El AWS CDK es un proyecto de código abierto que da la bienvenida a contribuciones y aportes de la comunidad. Incluso si no deseas contribuir con código, puedes proporcionar comentarios y solicitar funciones a través del tablero de proyectos de GitHub. El equipo es transparente acerca de su hoja de ruta y planes futuros. Es genial ver a empresas construyendo software para desarrolladores que buscan activamente aportes de la comunidad. En cuanto a la experiencia de AWS requerida para utilizar el CDK de manera productiva, basta con saber qué quieres construir en AWS y tener conocimientos de JavaScript. Sin embargo, si eres nuevo en AWS, es importante tener una comprensión de los servicios que deseas utilizar. En cuanto a mi trayectoria de programación, siempre me ha interesado la informática desde que era niño y comencé con el desarrollo web. JavaScript siempre ha sido mi lenguaje preferido debido a su versatilidad. Una de mis contribuciones destacadas fue la creación de una implementación de TypeScript del lado del servidor para gRPC, que ahora se envía con el módulo oficial.
. Um, alguien más preguntó, el CDK es un proyecto de código abierto. ¿Puedo contribuir o al menos proporcionar aportes? Sí, si quieres contribuir, es de código abierto. Personalmente no he contribuido, así que no puedo comentar sobre cómo es esa experiencia si es agradable o no. Pero incluso si no quieres contribuir con código, hay una hoja de ruta y otras cosas en las que las personas pueden solicitar funciones. Hay un tablero de proyectos en GitHub donde puedes ver en qué está trabajando el equipo y qué están planeando para el futuro. Así que creo que una cosa que llamó la atención fue el soporte para algo que planeaban agregar. Así que sí, definitivamente puedes dar comentarios y ver cómo se está desarrollando de manera abierta. Así que puedes ver qué está sucediendo.
Genial. Me encanta eso. Incluso si solo es ver qué hay por delante, nos ayuda a tomar decisiones sobre si queremos implementarlo o si están surgiendo cosas. Y creo que es increíble. Si tienes ese aporte, sé que las empresas que construyen software para otros desarrolladores suelen estar interesadas en saber cómo los desarrolladores adoptarán ese tipo de cosas. Sí, al final del día, quiero decir, lo están construyendo probablemente para sus propios propósitos internos, pero también para todos los clientes de AWS. Entonces, ¿por qué no intentar ver qué es lo que la gente realmente quiere y necesita? Sí, tiene sentido. Um, Alexi en el chat está preguntando, ¿qué nivel de experiencia de AWS se requiere para comenzar a usar el producto CDK de AWS de manera productiva? Yo diría que solo tienes que saber qué quieres construir en AWS. Entonces, ya sabes, si conoces JavaScript y sabes qué quieres construir en AWS, creo que es extremadamente fácil comenzar. Si nunca has usado AWS antes y ni siquiera sabes qué es una función lambda o qué es un contenedor, algo así, probablemente necesitarás saber qué estás tratando de construir primero. Pero aparte de eso, la puesta en marcha, al menos, en mi opinión, fue muy sencilla. Genial. Y hey, Colin, hemos estado preguntando, hemos estado preguntando a nuestros oradores hoy si pueden compartir un poco sobre, ya que estamos preguntando sobre la experiencia, nos encantaría saber, ¿cómo te metiste en la programación? ¿Cuál es tu historia? Era un nerd de la informática cuando era niño. Así que recuerdo haber tenido AOL y cosas así. Y luego quería aprender a hacer páginas web. Y las páginas web tienen JavaScript. Y simplemente me gustaba mucho lo que podía hacer con JavaScript allí. Aprendí, ya sabes, supongo que programación más formal en la universidad, y aún así terminé volviendo a JavaScript de todos modos, porque es es un lenguaje tan divertido. Es realmente un lenguaje divertido, ¿verdad? ¿Tienes alguna destacada de cosas que has construido con JavaScript que te emocionen? Cosas, así que supongo que una de mis contribuciones más grandes en JavaScript fue cuando estaba trabajando en gRPC. No tenían una implementación de TypeScript del lado del servidor para eso. Así que tuve que construir eso. Y creo que es
Contribuciones de Colin y Experiencia en Conferencias
Short description:
Colin habla sobre sus contribuciones al comité directivo técnico de Node.js y recomienda asistir a conferencias en Colombia para tener una gran experiencia como ponente. Comparte su experiencia positiva con la configuración del escenario y el cuidado que se brinda a los ponentes, incluyendo el transporte. ¡Un gran aplauso para Colin!
actualmente se envía con el módulo oficial de gRPC. Y obtuve un par de charlas en conferencias gracias a eso. Así que creo que eso es increíble. Eso es realmente genial. También estuvimos hablando detrás del escenario de que viniste y diste una charla en JSConf Colombia en 2019. Y recuerdo que una de las cosas que destacaron fueron tus contribuciones al comité directivo técnico. ¿Quieres hablar un poco sobre tu papel en el TSC de Node? Sí, he estado contribuyendo a Node desde hace un tiempo, creo que desde 2014. Y el TSC es el órgano de toma de decisiones final, aunque no nos gusta serlo, preferimos que los demás colaboradores y el consenso general impulsen las cosas. Pero a veces, cuando hay un problema, es necesario votar o algo así. Pero también quiero tomarme un momento para decir que si tienes la oportunidad de ir a Colombia a una de sus conferencias, lo recomiendo mucho. Eso es muy amable. Sí, estábamos hablando de cómo intentamos brindar a nuestros ponentes una experiencia realmente excelente. Así que definitivamente échale un vistazo si hacemos conferencias, una vez que todo esto haya terminado. ¿Qué fue lo que más te gustó? ¿Qué fue lo que más te gustó de tu experiencia en Colombia, Colin? Pensé que la configuración del escenario era muy agradable. Me gustó que, ya sabes, la forma en que los ponentes eran atendidos, en cuanto al transporte desde el aeropuerto y todo eso, fue una experiencia muy fluida para mi primera vez en Sudamérica. Así que gracias por eso. Me encanta. Muchas gracias por unirte a nosotros. Colin, todos, por favor, den un gran aplauso a Colin por unirse a nosotros para esa sesión de preguntas y respuestas y esa increíble charla. Gracias, Colin.
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.
ESM Loaders enhance module loading in Node.js by resolving URLs and reading files from the disk. Module loaders can override modules and change how they are found. Enhancing the loading phase involves loading directly from HTTP and loading TypeScript code without building it. The loader in the module URL handles URL resolution and uses fetch to fetch the source code. Loaders can be chained together to load from different sources, transform source code, and resolve URLs differently. The future of module loading enhancements is promising and simple to use.
This talk covers various techniques for getting diagnostics information out of Node.js, including debugging with environment variables, handling warnings and deprecations, tracing uncaught exceptions and process exit, using the v8 inspector and dev tools, and generating diagnostic reports. The speaker also mentions areas for improvement in Node.js diagnostics and provides resources for learning and contributing. Additionally, the responsibilities of the Technical Steering Committee in the TS community are discussed.
Deno aims to provide Node.js compatibility to make migration smoother and easier. While Deno can run apps and libraries offered for Node.js, not all are supported yet. There are trade-offs to consider, such as incompatible APIs and a less ideal developer experience. Deno is working on improving compatibility and the transition process. Efforts include porting Node.js modules, exploring a superset approach, and transparent package installation from npm.
Today's Talk is about logging with Pino, one of the fastest loggers for Node.js. Pino's speed and performance are achieved by avoiding expensive logging and optimizing event loop processing. It offers advanced features like async mode and distributed logging. The use of Worker Threads and Threadstream allows for efficient data processing. Pino.Transport enables log processing in a worker thread with various options for log destinations. The Talk concludes with a demonstration of logging output and an invitation to reach out for job opportunities.
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.
Platformatic te permite desarrollar rápidamente APIs GraphQL y REST con un esfuerzo mínimo. La mejor parte es que también te permite aprovechar todo el potencial de Node.js y Fastify cuando lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y complementos adicionales. En el masterclass, cubriremos tanto nuestros módulos de código abierto como nuestra oferta en la nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/). En este masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la nube de Platformatic.
Construyendo un Servidor Web Hiper Rápido con Deno
WorkshopFree
2 authors
Deno 1.9 introdujo una nueva API de servidor web que aprovecha Hyper, una implementación rápida y correcta de HTTP para Rust. El uso de esta API en lugar de la implementación std/http aumenta el rendimiento y proporciona soporte para HTTP2. En este masterclass, aprende cómo crear un servidor web utilizando Hyper en el fondo y mejorar el rendimiento de tus aplicaciones web.
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada. Mejoraremos una aplicación JS de pila completa (backend de Node.JS + frontend de React) para autenticar usuarios con OAuth (inicio de sesión social) y contraseñas de un solo uso (correo electrónico), incluyendo:- Autenticación de usuario - Administrar interacciones de usuario, devolver JWT de sesión / actualización- Gestión y validación de sesiones - Almacenar la sesión para solicitudes de cliente posteriores, validar / actualizar sesiones Al final del masterclass, también tocaremos otro enfoque para la autenticación de código utilizando Flujos Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña. Tabla de contenidos- Una breve introducción a los conceptos básicos de autenticación- Codificación- Por qué importa la autenticación sin contraseña Requisitos previos- IDE de tu elección- Node 18 o superior
Cómo construir una aplicación GraphQL fullstack (Postgres + NestJs + React) en el menor tiempo posible. Todos los comienzos son difíciles. Incluso más difícil que elegir la tecnología es desarrollar una arquitectura adecuada. Especialmente cuando se trata de GraphQL. En este masterclass, obtendrás una variedad de mejores prácticas que normalmente tendrías que trabajar en varios proyectos, todo en solo tres horas. Siempre has querido participar en un hackathon para poner algo en funcionamiento en el menor tiempo posible, entonces participa activamente en este masterclass y únete a los procesos de pensamiento del instructor.
Node.js test runner es moderno, rápido y no requiere bibliotecas adicionales, pero entenderlo y usarlo bien puede ser complicado. Aprenderás a utilizar Node.js test runner a su máximo potencial. Te mostraremos cómo se compara con otras herramientas, cómo configurarlo y cómo ejecutar tus pruebas de manera efectiva. Durante la masterclass, haremos ejercicios para ayudarte a sentirte cómodo con el filtrado, el uso de afirmaciones nativas, la ejecución de pruebas en paralelo, el uso de CLI y más. También hablaremos sobre trabajar con TypeScript, hacer informes personalizados y la cobertura de código.
Comments