Registro Multihilo con Pino

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Casi todos los desarrolladores piensan que agregar una línea de registro más no disminuiría el rendimiento de su servidor... ¡hasta que el registro se convierte en el mayor cuello de botella para sus sistemas! Creamos uno de los registradores JSON más rápidos para Node.js: pino. Una de nuestras decisiones clave fue eliminar todo el "transporte" a otro proceso (o infraestructura): redujo tanto el consumo de CPU como de memoria, eliminando cualquier cuello de botella del registro. Sin embargo, esto creó fricción y disminuyó la experiencia del desarrollador al usar Pino y los transportes en el proceso es la característica más solicitada por nuestro usuario.

En la próxima versión 7, resolveremos este problema y aumentaremos el rendimiento al mismo tiempo: estamos introduciendo pino.transport() para iniciar un hilo de trabajo que puedes usar para transferir tus registros de forma segura a otros destinos, sin sacrificar ni el rendimiento ni la experiencia del desarrollador.

This talk has been presented at JSNation Live 2021, check out the latest edition of this JavaScript Conference.

FAQ

Matteo Collina es un arquitecto de software y miembro del comité de dirección técnica, conocido por ser co-creador de Fastify y Pino. Trabaja para Nearform, una empresa de servicios profesionales en Irlanda, y es activo en el mantenimiento del ecosistema Node.js.

Pino es un registrador para Node.js conocido por su alta velocidad y eficiencia. Se utiliza para la generación de registros en formatos JSON delimitados por nuevas líneas, optimizando el rendimiento al minimizar el tiempo de procesamiento y la memoria usada.

Pino mejora el rendimiento al realizar todo el procesamiento de datos de forma sincrónica dentro del macro tick, evitando así el aumento de la memoria y la carga de CPU que podría ralentizar la aplicación.

Los Worker Threads permiten a Pino procesar registros en un hilo separado, evitando bloquear el hilo principal. Esto se logra mediante el uso de un Ring Buffer que facilita la comunicación eficiente entre hilos sin bloqueos.

La versión siete de Pino introduce mejoras en la eficiencia y el rendimiento, además de permitir la creación y el procesamiento de registros en un hilo de trabajo mediante Pino.Transport, una nueva funcionalidad que facilita el manejo avanzado de registros.

Para usar Pino, simplemente se crea un registrador utilizando una función de fábrica. Luego, se pueden generar registros de diferentes niveles como info, advertencia, error y debug. Pino también ofrece funcionalidad para crear registros hijo con propiedades preestablecidas.

Matteo Collina recomienda que el registro sea lo más eficiente posible para no incrementar la latencia ni el consumo de recursos de la aplicación. Además, sugiere implementar el manejo de registros fuera del proceso principal utilizando infraestructura adecuada o procesos separados.

Matteo Collina
Matteo Collina
19 min
11 Jun, 2021

Comments

Sign in or register to post your comment.
  • Vinod  Niloshana
    Vinod Niloshana
    Institute of Software Engineering
    Insightful and well-explained—loved it!
  • Junior Usca
    Junior Usca
    globant
    <3 pino
Video Summary and Transcription
La charla de hoy es sobre el registro con Pino, uno de los registradores más rápidos para Node.js. La velocidad y el rendimiento de Pino se logran evitando el registro costoso y optimizando el procesamiento del bucle de eventos. Ofrece características avanzadas como el modo asíncrono y el registro distribuido. El uso de Worker Threads y Threadstream permite un procesamiento de datos eficiente. Pino.Transport permite el procesamiento de registros en un hilo de trabajo con varias opciones para destinos de registro. La charla concluye con una demostración de la salida del registro y una invitación para buscar oportunidades de trabajo.
Available in English: Multithreaded Logging with Pino

1. Introducción a la Registro con Pino

Short description:

Hoy voy a hablar sobre el registro. Trabajo para Nearform, una empresa de servicios profesionales con sede en Irlanda. Soy miembro del comité de dirección técnica y co-creador de Fastify y Pino. Pino es uno de los registradores más rápidos para Node.js con un conjunto de características mínimas. Se ha descargado 6 millones de veces al mes y estamos trabajando en la versión siete. Usar Pino es simple con una función de fábrica y ayuda a reducir la tasa de desplazamiento del registro dentro de su aplicación.

Hola a todos, soy Matteo Collina. Hoy voy a hablar sobre uno de mis temas favoritos, el registro. Solo un poco de introducción sobre mí antes de empezar. Soy Matteo Collina, en Twitter como Matteo Collina. Trabajo para una empresa llamada Nearform. Somos una empresa de servicios profesionales con sede en Irlanda. También soy miembro del comité de dirección técnica y soy el co-creador de Fastify y estas bibliotecas de las que estamos hablando hoy, Pino. También soy un arquitecto de software, por lo que normalmente ayudo a las empresas a ejecutar Node.js en producción. También escribo cada semana en mi nuevo boletín en nodeland.dev, por favor suscríbete.

De todos modos, como parte de mi, oh, esto es realmente importante. Tal vez tengo muchas descargas en NPM. Terminé manteniendo muchas cosas en el ecosistema porque como mi actividad como consultor, tiendo a equilibrar entre el trabajo del cliente y la necesidad del cliente con el mantenimiento de Node.js como ecosistema, y eso es una buena sinergia. Así que termino implementando nuevas bibliotecas y nuevos módulos para resolver problemas que tienen mis clientes, y traigo esas cosas nuevas a mis clientes. Como parte de esta iniciativa construí varias cosas como Fastify y Pino. Pino, ¿qué es Pino? Pino es uno de los registradores más rápidos para Node.js. Tiene un conjunto de características mínimas, así que hablaremos un poco sobre lo mínimo, y es una gran comunidad. Pino ahora se ha descargado 6 millones de veces al mes, y tenemos cuatro colaboradores. Tal vez tres, pero lo que sea, cuatro colaboradores. Y es la versión seis, y estamos trabajando en la versión siete. Esta charla, es sobre la versión siete. Hey, esto es realmente agradable. Así que vienen cosas nuevas.

¿Cómo usas Pino? Usar Pino es muy simple. Puedes simplemente crear tu registrador. Solo usa una función de fábrica, así que simplemente creas tu registrador, y luego empiezas a hacer info, advertencia, error, debug, esas cosas que te gustan. También tenemos esta funcionalidad de registrador hijo que te permite crear un nuevo hijo con un cierto conjunto de propiedades ya preestablecidas, y es un registrador JSON delimitado por nuevas líneas, por lo que produce JSON delimitado por nuevas líneas, por lo que es un JSON seguido de una nueva línea, y otro JSON seguido de una nueva línea. Bastante interesante. Es rápido, y puedes usar pnode para reducir drásticamente la tasa de desplazamiento del registro dentro de tu aplicación. Realmente no puedes llevarlo a cero porque todavía está haciendo IO al final, pero ayuda a reducirlo bastante. Sepa que el registro debe ser rápido.

2. La Velocidad y Rendimiento del Registro con Pino

Short description:

No deberías tener un registro muy costoso porque si tienes un registro muy costoso, entonces estarás inclinado a registrar menos y no más, y necesitas más observabilidad la mayoría de las veces. Pino ha estado alrededor por un tiempo, así que, hey, días felices. Y la mayoría de lo que decimos sigue siendo moderno. La primera parte que quiero cubrir sobre Pino es cómo es tan rápido. Este diagrama explica el bucle de eventos y cómo lograr un E/S muy eficiente en Node.js y aplicaciones de Node.js con rendimiento autorizado. Cuando eso aterriza en el terreno de JavaScript, significa que, bueno, antes de hacer eso, el bucle de eventos llamó a algún C++. Así que en el lado, el código C++ dentro de Node.js, luego iniciamos la función de JavaScript, que es una función que se ejecuta, que a su vez, podría resolver una promesa o programar un siguiente tick. Y por lo tanto, también tenemos que procesar las colas de microticks. Desde el momento en que nos movemos desde el... Empezamos a llamar dentro de C++ hasta el momento en que dejamos que C++ regrese, el bucle de eventos está bloqueado. Así que no hay más eventos, nada. No está pasando nada en términos de E/S en el sistema. Uno de los... ¿Qué pasa si tienes una operación de E/S lenta? Así que imaginemos en el contexto de inicio de sesión que estás escribiendo a un destino y necesitas hacer algún manejo y procesamiento de tus registros antes de moverlos. Ahora, debido a, ya sabes, y estás escribiendo todos esos registros y tienes un lento, entonces por lo tanto tienes una operación de E/S lenta y la cantidad de tareas, tareas concurrentes aumentan. Pero si la tarea concurrente, las tareas concurrentes asíncronas aumentan, entonces también aumenta el consumo de memoria de tu aplicación.

No deberías tener un registro muy costoso porque si tienes un registro muy costoso, entonces estarás inclinado a registrar menos y no más, y necesitas más observability la mayoría de las veces.

Hay esta agradable charla llamada el Costo del Registro que mi compañero de crimen, David Marklamas, y yo hemos dado en node-conf.eu 2016. Hace mucho tiempo, ¿sabes? Pero Pino ha estado alrededor por un tiempo, así que, hey, días felices. Y puedes comprobarlo porque fue una muy buena... Es una muy buena charla. Y la mayoría de lo que decimos sigue siendo moderno. Había un montón de cosas que son diferentes y vamos a cambiar en v7 de las que vamos a hablar pronto.

Entonces, bueno, la primera parte que quiero cubrir sobre Pino es cómo es tan rápido. ¿Cómo puede ser rápido? Bueno, solo quiero darte un poco de visión general. Y gracias, James. Estas diapositivas son increíbles. Este diagrama es probablemente uno de los mejores que hemos hecho. Este diagrama explica el bucle de eventos y explica cuándo estamos haciendo E/S y cómo podemos lograr y cómo lograr un E/S muy eficiente en Node.js y aplicaciones de Node.js con rendimiento autorizado.

Entonces, en primer lugar, tienes data que llega al bucle de eventos. Así que tienes data, tienes eventos que llegan. Así que alguna E/S ha terminado o tal vez ha llegado una solicitud HTTP. Cuando eso aterriza en el terreno de JavaScript, significa que, bueno, antes de hacer eso, el bucle de eventos llamó a algún C++. Así que en el lado, el código C++ dentro de Node.js, luego iniciamos la función de JavaScript, que es una función que se ejecuta, que a su vez, podría resolver una promesa o programar un siguiente tick. Y por lo tanto, también tenemos que procesar las colas de microticks. Después de que todo eso se ha dicho y hecho, volvemos al bucle de eventos. Desde el momento en que nos movemos desde el... Empezamos a llamar dentro de C++ hasta el momento en que dejamos que C++ regrese, el bucle de eventos está bloqueado. Así que no hay más eventos, nada. No está pasando nada en términos de E/S en el sistema. Esto no es genial. Bueno, o es genial en el sentido de que es, ya sabes, si quiero hacerlo rápido, si haces mi code rápido, el tiempo que paso ejecutando JavaScript necesita ser lo más pequeño posible. Entonces... Uno de los... ¿Qué pasa en, ya sabes, si tienes una operación de E/S lenta? Así que imaginemos en el contexto de inicio de sesión que estás escribiendo a un destino y necesitas hacer algún manejo y procesamiento de tus registros antes de moverlos. Ahora, debido a, ya sabes, y estás escribiendo todos esos registros y tienes un lento, entonces por lo tanto tienes una operación de E/S lenta y la cantidad de tareas, tareas concurrentes aumenta, ¿verdad? Pero si la tarea concurrente, las tareas concurrentes asíncronas aumentan, entonces también aumenta el consumo de memoria de tu aplicación.

3. Rendimiento y Características Avanzadas de Registro con Pino

Short description:

Si el consumo de memoria aumenta, se requiere más recolección de basura, que se ejecuta en la CPU. Esto puede llevar a una desaceleración en la CPU y una acumulación de eventos, lo que potencialmente puede causar un bloqueo. Para garantizar un buen rendimiento, Pino procesa los datos de forma sincrónica, evitando fugas de memoria. Pino también permite el modo asíncrono, aunque puede afectar la depuración. En 2016, Pino propuso un enfoque diferente para el registro, recomendando procesos separados o confiando en la infraestructura para el transporte de registros. Sin embargo, ahora Pino permite la distribución dentro del mismo proceso sin bloquear el hilo principal. Los usuarios han solicitado características como el formateo de registros, el envío de registros a destinos remotos, la implementación de la rotación de registros y el envío de múltiples registros a múltiples lugares simultáneamente.

Pero si el consumo de memoria aumenta, tienes que hacer más recolección de basura, que se ejecuta en la CPU. Y así, cuando la CPU se ejecuta, la recolección de basura crece, la memoria crece, la recolección de basura crece, crece en uso y luego la CPU se llena con la actividad de recolección de basura que hay que hacer. Ahora, ese es el problema, ya ves, porque la latencia y el rendimiento están profundamente conectados. Entonces, si tengo una operación lenta en mi code, entonces aumentará la concurrency, lo que aumentará la presión de la memoria, lo que ralentizará la CPU. Y es posible que debido a esa desaceleración en la CPU, la acumulación de eventos para procesar aumentará de nuevo y entrará en algún tipo de ciclo catastrófico donde hasta que la presión se alivie en algún lugar, todo estará bloqueado.

Entonces, ya sabes, el truco aquí es asegurarse de que la mayor parte del proceso se haga lo más rápido posible. Eso es todo, esa es la respuesta a esto. Y no programa más trabajo. Ahora, esto significa en el contexto del registro, por ejemplo, que si estás teniendo, si quieres enviar la misma línea de registro a múltiples destinos, será problemático porque tenemos, o especialmente incluso a través de una red, porque si intentamos hacer eso, esos data permanecerán vivos por más tiempo y en realidad estamos creando más trabajo para nuestro bucle de eventos. En Pino, hacemos todo el procesamiento de data de forma sincrónica. Así que cuando llamas a .info lo que sea, puedes estar seguro de que al usar el predeterminado, todo el procesamiento se hace dentro del macro tick. Así que no hay nada programado para ser ejecutado más tarde. Esto es fenomenal y realmente importante para obtener un buen rendimiento, porque nos aseguramos de que no queda memoria ubicada a la izquierda y se recicla esencialmente muy fácilmente. Ahora podrías activar el modo asíncrono en Pino para que el registro se borre después de un tiempo, y no se escriba inmediatamente, pero es un poco más difícil en el lado de la debugging. Hablaremos de eso en un segundo.

En la presentación original sobre Pino de 2016, teníamos esta luz sobre el hecho de que Pino es más que un módulo, es una forma de vida. Bueno, Pino, es más que un módulo. Y al principio, lo señalamos porque estaba claro que estábamos proponiendo algo radicalmente diferente. ¿Y qué estábamos proponiendo en 2016? Bueno, le decíamos a la gente, mira, necesitas implementar tu transporte como procesos separados o confiar en tu infraestructura. Así que registras en la salida estándar y tu infraestructura recoge la salida estándar y la envía a otro lugar. Sí, todavía recomendamos eso, eso no ha cambiado. Sin embargo, varios equipos se han acercado a nosotros y a nosotros también, pero realmente necesitamos ejecutar la distribución en nuestro proceso. El objetivo típico es enviar tu registro a data dog o a la búsqueda elástica o algo así. Bueno, Pino te permite hacer eso. Bueno, Pino pronto te permitirá hacer eso desde el mismo proceso sin bloquear el hilo principal. Lo veremos en un momento. Ya sabes, lo que pasó fue que todas las personas empezaron a pedirnos las mismas características. Querían formatear sus registros, querían enviarlos a un destino remoto. Querían implementar la rotación de registros, esto era una gran cosa. Y realmente querían enviar múltiples registros a múltiples lugares al mismo tiempo.

4. Uso de Worker Thread y Threadstream

Short description:

Podríamos haber utilizado Worker Thread, que ahora son estables en todas las líneas de lanzamiento de soporte a largo plazo de Node.js 12 y 14. Ofrecen primitivas de sincronización fáciles como Atomics. Comencé a escribir una biblioteca llamada Threadstream, que envuelve un Worker Thread en una API basada en streams. Es rápido y permite escribir cadenas y buffers. Al proporcionar un stream escribible, puedes enviar datos al WorkerThread. Esto proporciona una forma de enviar datos a mi WorkerThread como un stream.

Al decir, bueno, deberías hacer todas esas cosas fuera del proceso. Estábamos diciendo a todos esos equipos, bueno, necesitas que tus operaciones o tu DevOps se encarguen de esas cosas. Fue más difícil para la mayoría de los equipos, para ser honesto. Entonces, y los usuarios siguen haciendo estas preguntas todos los días, todos los días, todos los días. Entonces, ¿qué podríamos hacer? Bueno, había algo que podríamos haber hecho. Podríamos haber utilizado Worker Thread. Los Worker Thread ahora son estables en todas las líneas de lanzamiento de soporte a largo plazo de Node.js 12 y 14, por supuesto. Y ofrecen algunas primitivas de sincronización fáciles, como, por ejemplo, Atomics. Y es genial. Y tal vez podríamos usarlos para construir transportes, ¿verdad? Wow, bueno, ¿cómo? Primero que nada, esta idea no es nueva. Fue originalmente mostrada por Mark Martin en una conferencia hace unos años, donde estaba usando un complemento nativo para hacer la mayor parte de este trabajo. Y mostraba un gran potencial en términos de rendimiento y performance. Así que fue bastante genial. Entonces, lo que hice fue, empecé a escribir esta biblioteca llamada Threadstream. ¿Qué hace Threadstream? Bueno, esencialmente envuelve un Worker Thread en una API basada en streams. Así que no es puramente un stream escribible porque no hereda de un escribible, pero es rápido, y puedes escribir cadenas en él. Puedes escribir buffers. Así que básicamente, llamas a streams write y simplemente empiezas a escribir en tu Thread. Y en el otro Thread, necesitas proporcionar un stream escribible. Eso es todo. Esa es la única interfaz que necesitas proporcionar. Entonces, una vez que has hecho esto, que has proporcionado ambos, es realmente genial porque ahora tengo una forma de enviar data a mi WorkerThread como un stream. Pero ya sabes, un stream es la interfaz que PNO tiene. Así que veamos cómo usar eso.

5. Uso de Pinot Transport para el procesamiento de registros

Short description:

Queremos que nuestro hilo principal envíe registros a nuestro WorkerThread. Se comunican utilizando un Ring Buffer, lo que permite escribir y consumir sin bloqueo. Pinot.Transport es una nueva función que permite el procesamiento de registros en un hilo de trabajo. Ofrece varias opciones para destinos de registros e impresión bonita. Una demostración muestra el ejemplo básico de Pino y el uso de transportes para múltiples destinos.

Bueno, lo que hacemos es que queremos que nuestro hilo principal envíe registros a nuestro WorkerThread. Eso es lo que hacemos. Entonces, en una aplicación AV Node, tendremos dos hilos, uno para el principal y otro para el procesamiento de registros. ¿Cómo se comunican? Se comunican usando un Ring Buffer. Usar un Ring Buffer les permite escribir en este buffer en su mayoría sin bloquear el buffer en sí. Así que uno puede escribir y el otro puede consumir sin bloquearse entre ellos.

Entonces, siempre puedo determinar la parte a leer de ese trabajo. Así que ahora les voy a presentar Pinot Transport. He construido toda esta tensión y espero que la liberemos ahora mismo. Así que Pinot.Transport es una nueva función dentro de Pinot que te permite crear, hacer el procesamiento de registros en un transporte remoto, lo siento, en un hilo de trabajo que está envuelto como un transporte. Puedes usar modules, puedes especificar ya sea una dependencia o un solo archivo con una ruta absoluta, o puedes usar un archivo de destino o puedes usar una console e imprimir de manera bonita. Eso es todo. Así que en realidad puedes hacer muchas de esas cosas de diferentes maneras.

Así que es hora de una demostración. Así que lo que voy a hacer, voy a abrir Kibana y veremos nuestro camino. Así que es Kibana, tenemos los últimos cinco minutos, esto no es nada. Y tengo mi script. Así que primero voy a mostrarles el ejemplo y el ejemplo, este es el ejemplo básico de Pino, estos solo registran cosas y a la salida estándar. Así que lo que, lo que solíamos hacer es no ejemplo y ves que imprime esto, pero entonces podría hacer Pino Pretty y luego obtener una impresión bonita. Nota que lo que he hecho aquí es, ah, eso está bien. Así que lo que he hecho aquí es que he ejecutado en frío Node Modules Bean, punto bean barra Pino Pretty para embellecer y colorear mis bloqueos. Ahora lo que puedo hacer en su lugar es con los transportes es estos nuevos, oop yay, abrió de todos modos, yay. Y es usar esta nueva técnica donde estoy creando mi transporte Estoy especificando un archivo para un destino. Estoy especificando que voy a usar un Pino Elasticsearch para enviar los data a Elastic especificando que el nodo Elasticsearcher y haciendo una impresión bonita. Así que veamos cómo funciona. Así que he estado haciendo y oh nota que esto es el resto no cambia en absoluto. Es exactamente lo mismo. Y es bastante genial, ¿verdad? Porque puedo escribir mi transporte, no mantener mi aplicación pero hacer múltiples destinos en el mismo proceso. Bueno, ejecutemos esto. Así que si ejecuto ejemplo transportes, obtengo exactamente lo mismo...

6. Salida de Registro y Conclusión

Short description:

Obtuve exactamente la misma salida que antes. Solo se agregaron estas líneas de registro porque solo muestra los registros de advertencia. Y ahora puedes ver que también tienen registros dentro de Elasticsearch. Es realmente agradable porque tenemos todos nuestros datos de una manera fácil de procesar con Kibana. Gracias por ver esta charla. Si tienes más preguntas, por favor contáctame. Estamos contratando para todo tipo de roles.

Obtuve exactamente la misma salida que antes. Solo se agregaron estas líneas de registro porque de hecho, puedo, ya sabes, esto solo muestra los registros de advertencia. Vale, aquí está. Es bastante genial. Y luego podemos ver si estos se actualizaron. Y ahora puedes ver que también tienen registros dentro de Elasticsearch. Y es realmente agradable porque puedes ver que tenemos todos nuestros data de una manera realmente fácil de procesar que Kibana nos proporciona. Así que es bastante genial.

Genial, solo quería agradecerte por ver esta charla. Si tienes más preguntas sobre Pino y Fastify y Node.js, por favor contáctame o envíame un correo electrónico. Ah, por cierto, estamos hiring para todo tipo de roles. Así que si estás interesado, sí, échale un vistazo, adiós.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
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.
Cargadores ESM: Mejorando la carga de módulos en Node.js
JSNation 2023JSNation 2023
22 min
Cargadores ESM: Mejorando la carga de módulos en Node.js
Top Content
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.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
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.
Diagnostics de Node.js listos para usar
Node Congress 2022Node Congress 2022
34 min
Diagnostics de Node.js listos para usar
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.
El Estado de Node.js 2025
JSNation 2025JSNation 2025
30 min
El Estado de Node.js 2025
The speaker covers a wide range of topics related to Node.js, including its resilience, popularity, and significance in the tech ecosystem. They discuss Node.js version support, organization activity, development updates, enhancements, and security updates. Node.js relies heavily on volunteers for governance and contribution. The speaker introduces an application server for Node.js enabling PHP integration. Insights are shared on Node.js downloads, infrastructure challenges, software maintenance, and the importance of update schedules for security.
Compatibilidad con Node.js en Deno
Node Congress 2022Node Congress 2022
34 min
Compatibilidad con Node.js en Deno
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.

Workshops on related topic

Masterclass de Node.js
Node Congress 2023Node Congress 2023
109 min
Masterclass de Node.js
Top Content
Workshop
Matteo Collina
Matteo Collina
¿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.

Nivel: intermedio
Construir y Desplegar un Backend Con Fastify & Platformatic
JSNation 2023JSNation 2023
104 min
Construir y Desplegar un Backend Con Fastify & Platformatic
Top Content
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente GraphQL y REST APIs con un esfuerzo mínimo. La mejor parte es que también te permite desatar todo el potencial de Node.js y Fastify siempre que lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y plugins adicionales. En la masterclass, cubriremos tanto nuestros módulos de Open Source 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 esta masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la Platformatic Cloud.
Construyendo un Servidor Web Hiper Rápido con Deno
JSNation Live 2021JSNation Live 2021
156 min
Construyendo un Servidor Web Hiper Rápido con Deno
Workshop
Matt Landers
Will Johnston
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.
0 a Auth en una Hora Usando NodeJS SDK
Node Congress 2023Node Congress 2023
63 min
0 a Auth en una Hora Usando NodeJS SDK
WorkshopFree
Asaf Shen
Asaf Shen
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
GraphQL: De Cero a Héroe en 3 horas
React Summit 2022React Summit 2022
164 min
GraphQL: De Cero a Héroe en 3 horas
Workshop
Pawel Sawicki
Pawel Sawicki
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.
Dominando Node.js Test Runner
TestJS Summit 2023TestJS Summit 2023
78 min
Dominando Node.js Test Runner
Workshop
Marco Ippolito
Marco Ippolito
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.