Durante años, AWS ha ofrecido CloudFormation como un enfoque para la Infraestructura como Código (IaC). CloudFormation permite la provisión de 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 luego pueden ser implementados a través de CloudFormation, manteniendo todos los beneficios de CloudFormation, como implementaciones 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 la provisión de arquitecturas nativas en la nube.
This talk has been presented at Node Congress 2021, check out the latest edition of this JavaScript Conference.
FAQ
AWS CDK (Kit de Desarrollo en la Nube de AWS) es una herramienta que permite escribir infraestructura como código utilizando lenguajes de programación convencionales, como JavaScript, TypeScript, Python, Java y C#. Facilita la definición y provisión de recursos de AWS utilizando código.
AWS CloudFormation permite definir y provisionar infraestructura de AWS mediante archivos JSON o YAML, lo que puede ser verboso y propenso a errores. AWS CDK ofrece una capa de abstracción que permite utilizar lenguajes de programación conocidos, simplificando la escritura y mantenimiento de la infraestructura como código.
El uso de AWS CDK en sí es gratuito, pero se te facturará por los recursos de AWS que implementes y utilices mediante el CDK, como instancias EC2 u otros servicios de AWS.
AWS CDK está integrado nativamente con los servicios de AWS y permite el uso de lenguajes de programación familiares para definir la infraestructura, lo que puede acelerar el desarrollo y reducir errores. A diferencia de Terraform, que es más independiente del proveedor, CDK está optimizado para AWS.
Sí, AWS CDK se integra bien con Jest y otras herramientas de pruebas, permitiendo realizar pruebas unitarias y de integración sobre la infraestructura definida, lo que ayuda a asegurar la calidad antes de la implementación en la nube.
Sí, es posible migrar gradualmente de CloudFormation a AWS CDK. Esta migración puede hacerse por partes, lo que permite integrar y coexistir recursos gestionados por ambos, CloudFormation y CDK, en un mismo proyecto.
Las construcciones en AWS CDK son bloques de construcción que representan componentes de AWS CloudFormation en un nivel superior de abstracción. Estas pueden ser simples, como un bucket de S3, o más complejas, como una aplicación completa de API REST.
El AWS CDK es una herramienta de infraestructura como código que admite múltiples lenguajes de programación y ayuda a mitigar las preocupaciones sobre el bloqueo del proveedor. Utiliza JSII para admitir diferentes lenguajes y le permite escribir código una vez y obtener la misma API en diferentes lenguajes. El CDK simplifica la creación y gestión de recursos en AWS, abordando la verbosidad y propensión a errores de CloudFormation. Las aplicaciones de CDK consisten en aplicaciones y pilas, con las pilas mapeando a pilas de CloudFormation. El CDK proporciona una sintaxis más compacta y familiar en comparación con CloudFormation, lo que facilita a los desarrolladores de JavaScript manejar toda la pila.
El AWS CDK es una herramienta específica de AWS para infraestructura como código que admite múltiples lenguajes de programación. Le permite escribir su infraestructura y aplicaciones utilizando las mismas herramientas y lenguajes. El CDK ofrece una infraestructura probada y ayuda a mitigar las preocupaciones sobre el bloqueo del proveedor.
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 al AWS CDK Infraestructura como Código. Entonces, supongo que la primera pregunta a responder CDK? Es una abreviatura de Kit de Desarrollo en la Nube. Es una herramienta específica de AWS en el pasado, el CDK no es lo mismo. El SDK de CDK puede mantener el estado de tu aplicación, lo que te permite actualizarla CDK en sí es bastante nuevo. Alcanzó la disponibilidad general AWS que aún no se admiten, AWS es bastante masivo. Y también es gratuito de usar, pero he incluido un asterisco AWS, se te facturará por esas cosas.
Cloud Native Computing Foundation que encuestó CDK realmente satisface a los desarrolladores donde están. AWS. Al usar una herramienta como esta, puedes escribir tu infraestructura y tus aplicaciones utilizando las mismas herramientas y lenguajes. Node.js, ya que permitía a los desarrolladores CDK también te ofrece una infraestructura probada. AWS CDK/assert. Se integra muy bien con Jest y las pruebas de instantáneas AWS a algo como Azure, es probable que sigas en es, ¿qué es el AWS para infraestructura como código. Es similar a herramientas como Terraform que quizás hayas utilizado en el pasado. Admite una variedad de lenguajes, por lo que puedes escribir tus aplicaciones en JavaScript, TypeScript, Python, Java y C Sharp. Creo que también hay planes para otros lenguajes en el futuro. 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 cuales hablaré nuevamente en un par de minutos. Si has utilizado el SDK de AWS se utiliza para realizar llamadas de API simples, mientras que el y volver a implementarla sin tener que pasar por las mismas verificaciones que si estuvieras haciendo llamadas de API directas. El a mediados de 2019, por lo que todavía hay algunas características de ya que aquí porque si comienzas a usarlo para implementar cosas como instancias de EC2 u otros recursos de
Entonces, supongo que a continuación, podrías preguntarte, ¿por qué usaría esto? Como dije antes, hay muchas herramientas como esta, cosas como Terraform y demás. Voy a hacer referencia a un informe de la aproximadamente a 17,000 desarrolladores. Si no estás de acuerdo con estas citas, por favor no me disparen. 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 Ya hay muchos desarrolladores que están escribiendo aplicaciones en la nube con JavaScript y TypeScript y desplegándolas en Y eso siempre ha sido una de las ventajas de de frontend y backend utilizar el mismo lenguaje común. Y esto simplemente extiende eso aún más a tu implementación y operaciones. El Hay un módulo. Y la última cosa que quería mencionar es que realmente no debes preocuparte por el bloqueo del proveedor porque probablemente ya estás bloqueado. A menos que tengas la aplicación más trivial y puedas pasar de el mismo proveedor.
El CDK no te va a encerrar. El CDK utiliza JSII, una herramienta que le permite ser escrito en TypeScript pero aún ser compatible con otros lenguajes. JSII ejecuta código TypeScript y envía la entrada/salida como JSON entre el proceso secundario de nodo y el proceso principal. Esto te permite escribir código una vez y obtener la misma API en diferentes lenguajes.
requiere cierto esfuerzo de importación. Por lo tanto, el CDK no te va a encerrar más de lo que ya estás. Y antes de profundizar demasiado en esto, quería mencionar algo que descubrí mientras investigaba el CDK y que me pareció interesante. Se llama JSII, que significa Interfaz de Interoperabilidad de JavaScript. Esta es la herramienta que se encuentra debajo del CDK y que le permite ser escrito en TypeScript, pero aún ser compatible con todos los otros lenguajes que mencioné anteriormente. Cuando leí sobre esto por primera vez, pensé que probablemente funcionaba generando código específico del lenguaje, pero en realidad se ejecuta en el tiempo de ejecución de node.js. Lo que hace es ejecutar tu código TypeScript y enviar la entrada y salida como JSON entre el proceso secundario de nodo y el proceso principal que está ejecutando tu aplicación. Por lo tanto, hay algunas uniones generadas que forman parte de la salida del CDK. Por lo tanto, puedes escribir tu código una vez y obtendrás la misma API en todos estos diferentes lenguajes. Desafortunadamente, esto conlleva un impacto en el rendimiento porque estás generando un proceso de nodo, estás interactuando con un proceso secundario en lugar de generar el código directamente. Pero pensé que eso era algo que
3. Introducción a CloudFormation y CDK
Short description:
CloudFormation es un poderoso servicio de AWS para definir y gestionar recursos en la nube. Simplifica la creación, gestión y mantenimiento de recursos, y admite entradas y salidas para pasar parámetros y generar resultados. Sin embargo, CloudFormation puede ser verboso y propenso a errores. Para solucionar esto, el CDK introduce una API utilizando TypeScript y construcciones como bloques de construcción para componer aplicaciones de CDK.
fue algo genial y quería compartirlo como parte de esta charla. Volviendo al punto general de esta charla. Como mencioné anteriormente, CloudFormation es un conocido servicio deAWS que básicamente te permite definir tu arquitectura, tus recursos que utilizarás en la nube como un archivo de plantilla JSON o YAML. Luego se puede implementar en el servicio CloudFormation. Se encargará de crear todos los recursos que necesites, como instancias o funciones lambda o cualquier otra cosa. Y en realidad puede gestionar grandes grupos de recursos como una única unidad, lo cual se llama una pila. Por lo tanto, se pueden crear pilas. Se pueden actualizar y modificar. También se pueden eliminar, y todo lo que sucede en ese grupo completo es una sola entidad. Esto 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 dentro de CloudFormation, básicamente hay entradas y salidas para tu pila de CloudFormation. Las entradas se llaman parámetros. Y estos son útiles para pasar cosas como información sensible, o si estuvieras 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 salidas. 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 utilizar 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. Por lo tanto, mantener estos archivos JSON y YAML a mano puede ser bastante trabajo. Y es propenso a errores.
Entonces, 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 construcciones. Las construcciones son básicamente la forma en que construyes y compones aplicaciones de CDK. Y hay una variedad de diferentes tipos de construcciones en diferentes niveles. Por ejemplo, la construcción de nivel uno, estas son básicamente recursos de CloudFormation. CFN aquí significa CloudFormation en forma abreviada. Por ejemplo, hay una construcción de CDK llamada CloudFormation bucket. Y esto es simplemente, lo más básico que puedes obtener como envoltorio alrededor de CloudFormation. Pero luego hay construcciones de nivel dos
4. Introducción a las Aplicaciones y Pilas de CDK
Short description:
En lugar de un bucket de CloudFormation, podrías usar un bucket de S3 con una API más amigable para el usuario. Los patrones pueden componer diferentes componentes juntos y acelerar la productividad. Las aplicaciones de CDK consisten en aplicaciones y pilas, donde las pilas se mapean a pilas de CloudFormation. Cada pila se configura mediante un entorno, que incluye un ID de cuenta y una región de AWS. Proporcionar el entorno se puede hacer a través de código, banderas de línea de comandos o variables de entorno. Generar una aplicación de CDK se puede hacer utilizando el comando 'mpx aws-cdk init app' con el lenguaje deseado.
lleva eso a otro nivel para introducir una API basada en intenciones. Entonces, 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 avanzados 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 puerta de enlace de API y cosas así, puedes simplemente usar el patrón de API REST de Lambda. Y como dije, realmente puede acelerar la productividad. Y así es como funcionan estas aplicaciones: tomas tus diferentes construcciones y las compones en lo que se llama un árbol de construcciones. Y también vale la pena señalar que AWS proporciona una gran cantidad de construcciones desde su biblioteca, pero también es posible que los usuarios creen sus propias construcciones para adaptarse mejor a sus necesidades. Entonces, hay, supongo, dos tipos especiales de construcciones que vale la pena discutir un poco. Están nuestras aplicaciones y pilas. Entonces, la raíz del árbol de construcciones siempre va a ser un componente de aplicación. La razón por la que se llama una aplicación es porque las aplicaciones de CDK se refieren como aplicaciones. Como dije, esto siempre va a ser la raíz, pero luego las pilas son construcciones que se mapean a pilas de CloudFormation. Entonces mencioné que, en CloudFormation, los grupos de recursos se agrupan como una pila y esto es una especie de mapeo uno a uno. Entonces las aplicaciones contienen pilas. Puedes tener más de una en una sola aplicación, y luego las pilas son generalmente lo que contienen las otras construcciones. Una cosa que vale la pena señalar es que cada pila se configura mediante un entorno, y hablaré de eso ahora mismo. Entonces, un entorno es un ID de cuenta de AWS más una región donde se va a implementar la pila. Esto básicamente significa que este usuario está implementando en esta región en la nube. Y así, 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 es independiente del entorno, pero estos casos de uso son bastante limitados. Y luego, para proporcionar el entorno, si alguna vez has trabajado con alguna de las herramientas de AWS antes, hay varias formas de hacer esto. En el propio código, puedes pasar valores al constructor de la pila, pero también puedes pasar una bandera de perfil desde la línea de comandos o especificar diferentes variables de entorno, y el código automáticamente las recogerá y sabrá dónde implementar tus cosas. 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 eso, creo que podemos generar nuestra primera aplicación de CDK. He agregado un comando de línea de comandos simple aquí usando 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. Queremos usar JavaScript aquí.
5. CDK Aplicación Esqueleto y Despliegue
Short description:
Esta parte explica cómo el CDK crea un esqueleto completo de la aplicación y el proceso de sintetización y despliegue de las aplicaciones de CDK. También cubre el concepto del árbol de construcciones, añadiendo más construcciones a la pila y el flujo de trabajo de los comandos de la CLI de CDK.
pero puedes utilizar cualquiera de los otros lenguajes compatibles. Y así se 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. Y así se crea una carpeta bin, y puedes ejecutar este archivo directamente. Puedes ver el pequeño shebang en la parte superior del código aquí que incluyen la mayoría de los binarios de node. 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 el primer argumento. Así es como el árbol de construcciones realiza un seguimiento de qué construcciones son hijos de otras construcciones. Y luego vamos a llamar a esta pila de prueba, así que eso es lo que está ahí como segunda opción. Si miramos 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 futuros ejemplos los eliminaré para ahorrar espacio. Lo primero que hacemos es importar el CDK en sí, y luego creamos una clase de pila de prueba, que extiende la clase base de la pila CDK. El constructor de una clase toma un alcance, un ID y props. El alcance es la construcción principal, como mencioné antes. La idea lógica de la construcción va a ser cuando sintetizamos y desplegamos estas aplicaciones. Y los props son un mapa opcional que se puede pasar y se utiliza para definir otras propiedades de tu construcción. Entonces, si queremos añadir más construcciones, podríamos hacer algo como esto. NPM install --save AWS CDK/AWS EC2. Esto básicamente instalará las construcciones de CDK para el servicio EC2. En este ejemplo sencillo, estoy añadiendo una VPC a nuestra pila. La razón por la que hago esto es porque las VPC se pueden desplegar sin ningún cargo adicional. Así que si quieres experimentar con esto y desplegarlo, 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 cuáles son algunos de los otros más adelante. Y lo que hace es leer el código fuente de tu aplicación. Pasa por lo que se llama la fase de construcción, donde se ejecuta el código del usuario y se ejecuta toda la cadena de constructores, por lo que básicamente se está construyendo el árbol de construcciones. Las fases de preparación y validación son ganchos disponibles para las construcciones, pero generalmente no son necesarios y a veces incluso se desaconsejan. Y luego viene la fase de síntesis, que genera algo llamado un cloud assembly. El cloud assembly será tu plantilla de cloud formation, así como cualquier otro artefacto de despliegue que se necesite para desplegar tu aplicación en la cloud.
6. Proceso de Despliegue y Plantilla de CloudFormation
Short description:
El proceso de despliegue toma tu conjunto de nubes y carga los artefactos necesarios a la nube para un despliegue de formación en la nube. El paso de síntesis se puede hacer por separado para pruebas locales y pruebas unitarias utilizando el comando de sintetización MPX AWS CDK. Genera una plantilla de formación en la nube y artefactos de despliegue, como imágenes de Docker. La salida se escribe en salidas estándar y en el directorio cdk.out. La plantilla de formación en la nube puede ser verbosa, especialmente en comparación con el código conciso de la aplicación CDK.
Y hablaré sobre qué son esos otros artefactos de despliegue en un momento. Y luego el despliegue tomará tu conjunto de nubes y cargará cualquier cosa que necesite ser cargada a la nube y comenzará un despliegue de formación en la nube. Y una vez que eso tenga éxito, tendrás una aplicación CDK que está realmente desplegada en la nube. En realidad, puedes hacer el paso de síntesis como un paso separado sin necesidad de desplegarlo, lo cual es bueno para pruebas locales y pruebas unitarias. Entonces, harías eso a través del comando MPX AWS CDK synth y luego el nombre de tu pila. En este caso, la pila de prueba, esto generará, traducirá tu aplicación CDK en una plantilla de formación en la nube. Generará cualquier artefacto de despliegue, como imágenes de Docker, si estás desplegando alguna función lambda, las empaquetará para ti. Y luego escribirá todo tanto en las salidas estándar, ya que esto es solo una síntesis y no un despliegue. Pero también creará tu directorio cdk.out, que es donde se almacena todo antes de ser desplegado. Y luego puedes ver a la derecha aquí, en realidad he capturado cómo se ve la plantilla de formación en la nube. Y puedes ver que ocupa toda la altura de la diapositiva y es muy ilegible. Y eso se basa en una aplicación CDK que tenía aproximadamente una docena de líneas de JavaScript. Así que puedes ver de dónde viene la mayor verbosidad con la formación en la nube, así como
7. Assets, Bootstrapping, and CLI
Short description:
Los activos y la inicialización son conceptos importantes en CDK. Los activos son archivos o directorios locales que deben cargarse en S3 o imágenes de Docker que deben cargarse en el Registro de Contenedores Elásticos. La inicialización es necesaria para implementar activos por entorno. Un ejemplo realista es implementar un sitio estático de S3, donde se crea una nueva pila con un bucket de S3. La implementación del sitio requiere la inicialización del entorno. Agregar DNS o CDN puede mejorar el sitio estático. Para limpiar, utiliza el comando de destrucción de CDK y verifica la consola web para los recursos de AWS. La CLI proporciona todos los comandos necesarios para la implementación.
el poder expresivo de cdk. A continuación, quería hablar sobre los activos y la inicialización. Entonces cualquier archivo o directorio local que deba cargarse en S3 o cualquier imagen de Docker local que deba cargarse en el Registro de Contenedores Elásticos 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 cdk-toolkit. Y consta de un bucket de S3 y un conjunto de recursos 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 un ejemplo más realista ahora donde implementaremos un sitio estático de S3. He incluido un asterisco aquí porque nuevamente se te cobrará por AWS si ejecutas esto. 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. Así que voy a llamar a mi bucket bucket del sitio web. Voy a hacer que index.html sea la página de inicio de mi sitio que estoy implementando y voy a otorgar acceso de lectura pública al mundo para que cualquiera pueda ver mi sitio. Y luego, para implementarlo, usaré el constructo de implementación de bucket de implementación de S3 para adjuntarlo a la pila. Lo llamaré implementación de mi sitio web. Las fuentes vendrán de un directorio local al que llamo www que en realidad creará activos como mencioné en la diapositiva anterior, esa es la parte por la que se te cobrará y luego cargará todo en el bucket que acabamos de crear bucket del sitio web. Algo que vale la pena señalar aquí, sabes que este es un ejemplo pequeño porque tiene que caber en una diapositiva, pero puedes llevar esto más lejos y agregar cosas como DNS o CDN para crear un sitio estático agradable para ti mismo. Entonces, para implementar el sitio, diríamos mpx awscdk deploy pila del sitio web y luego realmente voy a pasar mi perfil de aws desde la línea de comandos para que sepa a qué entorno implementar. Pero la primera vez que ejecuto esto, veré el siguiente error que dice que esta pila utiliza activos, por lo que la pila de herramientas debe implementarse en el entorno. Entonces, lo que eso significa es que tengo que inicializar este entorno primero y puedes ver a continuación que he agregado el mpx awscdk bootstrap y luego he pasado mi perfil que creará la infraestructura de inicialización de la que hablé antes. Luego puedo volver a ejecutar la misma implementación y todo debería funcionar según lo planeado esta vez. Entonces, si quieres ver cómo se ven esos recursos implementados 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 implementado y en funcionamiento en producción. Como dije, si quieres hacer esto un poco más elegante podrías agregar algo como DNS en el CDN para 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 ingreses a la consola web de AWS y explores S3 y CloudFormation para ver que todos los recursos se hayan limpiado. He vinculado a un problema de CDK a continuación donde la inicialización no siempre se limpia a sí misma. Quería proporcionarte aquí los comandos que puedes usar para limpiar. O simplemente haz 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 básicamente los comandos que usamos para hacer lo mismo
8. Instalación de CDK y recursos adicionales
Short description:
Puedes instalar el CDK localmente o globalmente, pero se recomienda agregarlo a tu package JSON y llamarlo desde un script de NPM. Otros comandos útiles incluyen CDK-LS, Diff, Metadata y CDK context. Los recursos adicionales incluyen la documentación oficial, el código fuente de CDK y materiales de aprendizaje creados por la comunidad. El CDK está ganando popularidad y elimina barreras para que los desarrolladores de JavaScript manejen todo el stack. Gracias por asistir a la charla.
despliegue. Puedes instalar el CDK localmente. Si haces eso, se conocerá como CDK y no como AWS CDK. Eso es algo a tener en cuenta. También puedes instalarlo globalmente con la bandera -G, pero realmente no lo recomiendo. Las dependencias globales generalmente no son lo mejor. Por lo tanto, recomiendo agregarlo a tu package JSON y llamarlo desde uno de tus scripts de NPM.
También hay otros comandos útiles aquí que no mencioné. CDK-LS enumerará las pilas que están en la aplicación. Diff comparará la pila con la versión implementada 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 usando CDK context. Hay un comando doctor que puede analizar tu proyecto y vincularlo para posibles problemas. Y luego CDK-doc se puede usar para abrir la documentación oficial en el navegador. Es una especie de atajo. Y finalmente, quería incluir algunos recursos adicionales aquí. El primer enlace es la documentación oficial, el segundo enlace es el código fuente de CDK, y 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 y ponerlo en funcionamiento bastante rápido. Eso es todo lo que tenía. Gracias nuevamente por venir a mi charla y que tengan un buen día a todos. Colin, bienvenido. Bienvenido a tu sesión de preguntas y respuestas aquí. Antes que nada, echemos un vistazo a la encuesta. Le preguntamos a la gente, tú les preguntaste, ¿has usado el AWS Cloud Development Kit? Y la mayoría de las personas dijo que no. Bueno, ¿por qué crees que es eso? Me gustaría escuchar tu comentario al respecto. Realmente no es sorprendente en absoluto. Como dije, es bastante nuevo. Recién se volvió apto para producción hace un par de años. Sin embargo, creo que realmente está empezando a ganar popularidad, así que espero difundir la buena palabra del CDK y espero que algunos desarrolladores de JavaScript tengan la oportunidad de probarlo, ponerlo a prueba. Siento que realmente derriba una de las últimas barreras que existen para que los desarrolladores de JavaScript puedan
9. Beneficios de CDK y Comparación con Otros Frameworks
Short description:
CDK simplifica la infraestructura como código y ofrece una sintaxis más compacta y familiar en comparación con CloudFormation. Permite un código rápido y conciso para tareas que requerirían muchas líneas en CloudFormation. CDK puede manejar rollbacks, pero no está claro si admite condiciones personalizadas. Al implementar a través de un pipeline de CI/CD, es posible activar un rollback en el lado de CloudFormation. En comparación con otros frameworks como el framework serverless, CDK es un ciudadano de primera clase en AWS.
hacer todo el stack ellos mismos. Exactamente, exactamente. Y todavía recuerdo el día cuando vi el primer correo electrónico sobre CDK dentro de la empresa. Alguien simplemente envió un correo electrónico, hey, tengo esta gran idea, ¿qué tal si hacemos esto? Una cosa maravillosa. Así que creo que el crecimiento del uso de CDK en AWS crecerá con el tiempo porque simplemente simplifica las cosas. Uno de los puntos que mencionaste en tu charla fue que quita mucho esfuerzo de escribir una infraestructura declarativa como código a una forma más sensata y predeterminada de escribir infraestructura como código. Entonces, ¿qué te hace usar CDK en lugar de CloudFormation, por ejemplo? CloudFormation, para mí, es genial porque te brinda la capacidad de implementar y maneja las actualizaciones y todo eso. Es solo mucho texto para administrar y sudar, y es propenso a errores. Para mí, el CDK fue agradable porque estoy escribiendo JavaScript, que ya estoy haciendo mientras aplico. Si hay un error de sintaxis, es un error de sintaxis familiar en lugar de tratar de buscar en un archivo YAML o JSON grande. Es mucho más compacto. En un lado, mostré en el lado derecho, era como todo el texto de CloudFormation y no se podía leer en absoluto en comparación con una docena de líneas de CDK JavaScript. Para mí, eso es una gran ventaja.
Estoy de acuerdo. A veces, si quieres hacer algo realmente rápido, como crear una VPC, en CDK, es una sola línea de código. En CloudFormation, son 87 líneas de código.
Pasemos a algunas de las preguntas que tenemos del público. Una pregunta de Lara. ¿Es posible usar el Cloud Development Kit para automatizar rollbacks basados en condiciones personalizadas? Por ejemplo, pruebas de humo fallidas o algo así. Esa es una buena pregunta. No lo sé de memoria. Maneja rollbacks, pero no sé si los maneja en función de condiciones personalizadas o no. Eso es algo que tendría que imaginar. Entonces, permíteme intentar responder esta pregunta desde mi experiencia. Si estás implementando tu Cloud Development Kit a través de un pipeline de CI CD, definitivamente puedes fallarlo. Si algo sucede, simplemente puedes activar un rollback fallido en el lado de CloudFormation, porque como dice Colin, CDK utiliza CloudFormation para muchas de sus partes. Entonces, en esencia, sí.
De acuerdo. Pregunta. Y estas son preguntas muy comunes que también escucho cuando hablo de esto, una pregunta de Marc. ¿Existen beneficios al usar el Cloud Development Kit sobre el framework serverless o el framework serverless.com? Entonces, creo que hay compensaciones, como con todo. Con el CDK, es un ciudadano de primera clase
QnA
Beneficios de CDK y Transición desde CloudFormation
Short description:
El CDK tiene la capacidad de utilizar un lenguaje de programación nativo para construir infraestructura, lo que facilita a los desarrolladores de JavaScript. Puedes importar recursos existentes de CloudFormation al CDK y realizar una transición gradual de tu infraestructura. El CDK se basa en gran medida en clases para representar objetos y sus propiedades, lo que proporciona una estructura de código más limpia.
ciudadano en AWS. Entonces, sabes, está construido por ingenieros de AWS, respaldado por ingenieros de AWS. Se garantiza que funcionará allí. El framework serverless, ya sabes, puede funcionar un poco mejor con otras nubes. Pero, ya sabes, eso es un poco por diseño. Entonces, supongo que, en mi opinión, si estás implementando en AWS, probablemente usar las herramientas oficiales de AWS sea el mejor escenario posible.
Estoy de acuerdo. Un punto justo. Ya sabes, el framework serverless tiene sus propios beneficios, especialmente para aplicaciones serverless. También tienes SAM en AWS, que es una especie de transformación de CloudFormation. Pero, CDK, nuevamente, como una de las cosas que tiene CDK, y lo demuestras en tu charla, es que tiene esta capacidad de utilizar un lenguaje de programación nativo para construir cosas. Entonces, si eres un desarrollador de JavaScript, es mucho más fácil escribir esto que tratar de descifrar algún JSON o YAML, en este caso. De acuerdo, tenemos más preguntas. Una de AO. Para aquellos de nosotros que ya estamos construyendo nuestra infraestructura en CloudFormation, ¿es posible importar recursos existentes, como una database de producción o algo estático, al Cloud Development Kit? Sí, deberías poder hacer eso. Así que estoy trabajando en un proyecto de AWS bastante grande en este momento que se basa en CloudFormation y puedes ir migrando partes de él al CDK poco a poco. Entonces, no necesariamente tienes que hacer la transición completa de golpe, si eso es lo que estás preguntando, si tiene sentido.
Correcto, entonces estás diciendo que potencialmente no tienes que transferir todo tu proyecto al CDK de una vez, ya sabes, puedes dejar algunas cosas y otras formas de aprovisionar cosas. Correcto. Definitivamente no estoy abogando por, ya sabes, si tienes una solución funcional, simplemente desechar todo y tratar de reestructurarlo solo porque, probablemente terminarás con más dolores de cabeza que beneficios. Sí, ya sabes, una de las cosas, una de las infinitas sabidurías que escucho es que el mejor framework/lenguaje de programación es aquel en el que eres bueno. Entonces eso es lo que deberías usar. Ok, tenemos una pregunta de SB. ¿Por qué CDK se basa tanto en clases en lugar de en constructos más habituales en JavaScript como funciones? Es simplemente una forma de ver la nube como una colección de objetos que interactúan entre sí a través de diferentes propiedades. Por ejemplo, tienes una función lambda, creo que es fácil pensar en eso como una clase, tienes una instancia de una lambda, tiene propiedades específicas, como un ARN y cosas por el estilo. Mientras que si intentaras hacerlo más funcional, creo que el código sería un poco
Testing CDK Code and Advice for Novice Users
Short description:
Puedes probar el código de CDK utilizando Jest y su biblioteca de aserciones incorporada. CDK proporciona funciones auxiliares para probar recursos o patrones específicos. Escribir pruebas unitarias con expectativas te permite detectar problemas antes de implementar y depurar en la nube. La función de instantánea de Jest también se puede integrar con CDK. Para los usuarios novatos de CDK, se recomienda probar CDK con configuraciones existentes o seguir tutoriales para el desarrollo desde cero. Tómate tu tiempo, ya que CDK es fácil de usar.
menos limpio de esa manera. Entendido. Entendido. De acuerdo. De acuerdo. Sí. Como utilizo mi CDK principalmente en TypeScript o en Python, pero no soy un gran desarrollador. Solo lo uso como una utilidad, así que ni siquiera sabría cómo responder a esta pregunta. Pero hablando de lenguajes de programación y la capacidad de CDK para utilizar lenguajes de programación genéricos, ¿hay alguna forma de probar si realmente implementamos cosas? Porque hablamos un poco antes en las charlas rápidas de que las pruebas son realmente importantes. ¿Podemos hacer lo mismo con el código de CDK? ¿Hay alguna forma de probar el código antes de hacerlo?
Sí. Entonces, CDK fue diseñado de tal manera que se integra muy bien con Jest y tiene su propia biblioteca de aserciones incorporada. Creo que lo mencioné en mis diapositivas. Básicamente, puedes tomar un stack de CDK y decir expect stack to, y luego hay algunas funciones auxiliares. Por ejemplo, incluir un recurso específico o incluir este conjunto de recursos o hacer coincidir este patrón. Hay todo tipo de funciones de utilidad útiles con las que puedes realizar pruebas unitarias en tu stack antes de intentar implementarlo y luego intentar depurarlo en la cloud. Cuanto más puedas hacer localmente, mejor.
Sí. Básicamente, escribir tus pruebas unitarias para CDK y tener expectativas establecidas. Recuerdo que una vez, hace mucho tiempo, hice lo mismo con Jest. Jest es este marco para pruebas. En lugar de hacer aserciones, en realidad usé la función de instantánea. Entonces también puedes hacer instantáneas de lo que quieres que suceda, y si algo cambia, simplemente no funciona. Excelente. Creo que CDK también tiene funciones para integrarse con instantáneas. Puedes decir que la instantánea debería significar algo. De acuerdo. Excelente. Ahí lo tienes.
Última pregunta para ti. Tenemos un 71% de personas aquí que respondieron que no han probado CDK o no lo usan. ¿Cuál es tu consejo para los usuarios novatos de CDK? Para alguien que después de tu charla decida, ya sabes qué, voy a hacer algo en CDK. ¿Cuál es tu consejo para ellos? Mi consejo para ellos sería, ya sabes, si ya tienes una configuración existente, puedes probar pequeñas partes de CDK y ver si coincide con lo que ya tienes. Si tienes la suerte de estar haciendo un desarrollo desde cero, entonces hay muchos tutoriales disponibles y demás. Puedes seguir esos y asegurarte de que básicamente lo estás entendiendo
Understanding Programming and AWS
Short description:
Comprender el lenguaje de programación y la infraestructura deseada de AWS reduce la fricción. Es útil tener una comprensión básica de los servicios de AWS como las funciones Lambda y las instancias EC2. Gracias, Colin, por la interesante charla y por responder preguntas. Apreciamos mucho tu tiempo y tu charla.
hacerlo bien desde el principio. Pero tómate tu tiempo. En realidad, es muy sencillo. Siempre y cuando comprendas el lenguaje en el que estás programando y entiendas lo que estás intentando construir en AWS, creo que encontrarás que la fricción es bastante baja. Si no estás completamente seguro de lo que quieres construir en AWS primero, creo que sería útil obtener esa comprensión básica para entender qué es una función Lambda o qué tipo de instancia EC2 deseas. Algo así. Sí. Excelente. Muchas gracias, Colin. Aprecio todas las preguntas, todas las respuestas a las preguntas y a todos, agradezco sus preguntas. Muchas gracias por tu charla. Fue increíble y muchas gracias por tu tiempo. Gracias. Que tengas un buen día.
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