La observabilidad importa: Mejorando el rendimiento de nuestra aplicación Node con OpenTelemetry

Rate this content
Bookmark

¿Alguna vez has considerado que cuando nos encontramos con términos como observabilidad y confiabilidad, nuestro instinto inicial suele atribuirlos únicamente a preocupaciones de SRE? Sin embargo, al examinar más de cerca, uno puede darse cuenta de que implementar la observabilidad en realidad está más alineado con el dominio de los desarrolladores. Después de todo, los desarrolladores son quienes implementan directamente la lógica real en nuestro código existente, ¿y quién mejor para entender y depurar su código que los propios desarrolladores? A través de esta sesión, enfatizaremos en comprender la importancia de la observabilidad específicamente desde la perspectiva de un desarrollador. Exploraremos algunas mejores prácticas que nos ayudarán a depurar eficazmente el rendimiento de nuestra aplicación Node y cómo la inclusión de frameworks de código abierto como OpenTelemetry podría ser beneficiosa para nosotros.

Yash Raj Verma
Yash Raj Verma
7 min
04 Apr, 2024

Video Summary and Transcription

Yash Rajavarma presenta la observabilidad y explica su importancia para los desarrolladores. Discute cómo OpenTelemetry puede potenciar las aplicaciones Node.js al proporcionar una instrumentación y gestión sencillas de los datos de telemetría. OpenTelemetry simplifica la implementación de la observabilidad y está diseñado para beneficiar a los desarrolladores.

Available in English

1. Introducción a la Observabilidad y OpenTelemetry

Short description:

En esta parte, Yash Rajavarma se presenta a sí mismo y su pasión por la observabilidad. Explica la importancia de la observabilidad para los desarrolladores y cómo OpenTelemetry puede potenciar una aplicación Node.js. OpenTelemetry es un marco que permite la instrumentación y gestión sencilla de datos de telemetría, incluyendo trazas, métricas y registros. Proporciona instrumentación automática y admite varios formatos para exportar datos. OpenTelemetry simplifica el proceso de implementación de la observabilidad y está diseñado para beneficiar a los desarrolladores.

Hola a todos, soy Yash Rajavarma. Trabajo como investigador informático en la Universidad de Calgary, donde principalmente trabajo con sistemas distribuidos y estoy muy apasionado por el campo de la observabilidad. En los últimos meses, he estado involucrado en un proyecto, se llama OpenTelemetry, y en esta charla hablaré sobre Node.js y OpenTelemetry. Así que empecemos. En esta charla responderemos dos preguntas. La primera es, ¿por qué es importante la observabilidad para un desarrollador y cómo podemos potenciar una aplicación node con OpenTelemetry? Para responder a la primera pregunta, tendremos que retroceder en el tiempo y comprender que la evolución de nuestro sistema desde una perspectiva muy amplia, podemos decir que a medida que avanzamos en el tiempo, nuestra aplicación o sistema tiende a volverse cada vez más distribuido en la naturaleza, lo que resulta en esto. Este podría ser un ejemplo de cualquier aplicación moderna. Digamos, por ejemplo, una aplicación de comercio electrónico, donde un solo microservicio interactúa directa o indirectamente con múltiples microservicios dentro de una aplicación. Imagina que de repente algunos microservicios dejan de funcionar o imagina que hay una mayor latencia dentro de los microservicios, ya sabes, eso definitivamente no se parece a una mejor experiencia de usuario. Así que, a medida que avanzamos y, ya sabes, soy un gran fan de Marvel, hay una línea, con grandes sistemas distribuidos viene la gran responsabilidad de gestionarlos. Pero no te preocupes, la observabilidad está aquí para, ya sabes, encargarse del día. Es la capacidad de comprender el estado interno de nuestro sistema examinando su salida donde se encuentran los registros, las métricas y las trazas. Ahora podemos observar todo, ya sabes, y todo puede estar yendo bien como se esperaba, porque podemos observar todo el sistema y depurar eficientemente el rendimiento de nuestra aplicación identificando posibles cuellos de botella. Pero ¿qué está mal, ya sabes, es el problema. Aquí es donde las cosas comienzan a complicarse aún más y con eso me refiero, y con eso me refiero a que cuando miramos desde una perspectiva muy general de cualquier flujo de trabajo de observabilidad, ya sabes, el primer paso en el proceso es llamado instrumentación, ya sabes, es el proceso mediante el cual podemos realizar ciertos cambios en nuestro código fuente para que nuestra aplicación pueda emitir los datos de telemetría . El siguiente es el receptor, ya sabes, es muy simple. Recibe los datos que se capturan del código fuente. Luego viene el procesador, que generalmente usamos para filtrar o cambiar datos específicos según nuestros casos de uso. Y luego viene el exportador, que se utiliza para exportar los datos ¿A dónde? Al backend de observabilidad, ya sabes, desde una visión general muy amplia. Vemos que el primer paso, la instrumentación se alinea específicamente con el dominio del desarrollador y aquí está la razón. Porque nosotros, los desarrolladores, somos responsables de instrumentar el código para que pueda emitir datos de telemetría. Pero cada herramienta de observabilidad tiene su propio conjunto específico de reglas a las que se debe adherir durante todo el proceso. Si en el futuro decidimos salir del ecosistema, la impresión de registros se convierte en una preocupación importante. Y se convierte en tarea del desarrollador volver a instrumentar todo el código con aproximadamente, ya sabes, un 40% de código similar para un código base si queremos migrar a otras herramientas de observabilidad. Por lo tanto, implementar la observabilidad dentro de la aplicación es más un problema del desarrollador porque nosotros, los desarrolladores, tenemos que volver a instrumentar todo la aplicación una vez más. Ingresa OpenTelemetry. El salvador. Es un framework diseñado para crear y gestionar datos de telemetría, incluyendo trazas, métricas y registros de manera agnóstica al proveedor y a la herramienta. Proporciona instrumentación automática donde casi no se requieren cambios en el código y también viene con instrumentación manual para que si necesitamos que una parte específica emita los datos de telemetría, podemos usar la instrumentación manual en ese caso. Esta es una descripción típica de un recolector de OpenTelemetry, que se utiliza para, ya sabes, recibir, procesar y exportar los datos a varios destinos, para que, ya sabes, puedas recibir datos en múltiples formatos como Jager, Prometheus, ya sabes, y el protocolo de OpenTelemetry es el predeterminado, ya sabes, el lenguaje que se utiliza para, ya sabes, transferir datos de la aplicación al backend. Ahora, comenzar con OpenTelemetry Node.js es muy sencillo. Si eres un principiante, te diría que puedes comenzar con la instrumentación automática. Es muy sencillo. Solo tienes que seguir estos pasos y puedes consultar, ya sabes, el enlace a continuación. Comenzarás a entender en ese caso también. Entonces, OpenTelemetry no es solo para el software. Es para las personas. Es para los desarrolladores como nosotros.

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

Multithreaded Logging with Pino
JSNation Live 2021JSNation Live 2021
19 min
Multithreaded Logging with Pino
Top Content
Almost every developer thinks that adding one more log line would not decrease the performance of their server... until logging becomes the biggest bottleneck for their systems! We created one of the fastest JSON loggers for Node.js: pino. One of our key decisions was to remove all "transport" to another process (or infrastructure): it reduced both CPU and memory consumption, removing any bottleneck from logging. However, this created friction and lowered the developer experience of using Pino and in-process transports is the most asked feature our user.In the upcoming version 7, we will solve this problem and increase throughput at the same time: we are introducing pino.transport() to start a worker thread that you can use to transfer your logs safely to other destinations, without sacrificing neither performance nor the developer experience.
Domain Driven Design with Vue Applications
Vue.js London 2023Vue.js London 2023
14 min
Domain Driven Design with Vue Applications
Top Content
Introduction to Domain Driven Design- What is DDD?- Key principles of DDD- Benefits of using DDD in web application developmentDomain Modeling in Vue 3 Applications- How to design and implement domain models in Vue 3- Strategies for integrating domain logic with Vue's reactive data model and component-based architectureBest Practices for Implementing DDD in Vue 3- Strategies for organizing code in a way that follows DDD principles- Techniques for reducing coupling between domain and application logic- Tips for testing and debugging domain logic in Vue 3 applications
Observability with diagnostics_channel and AsyncLocalStorage
Node Congress 2023Node Congress 2023
21 min
Observability with diagnostics_channel and AsyncLocalStorage
Modern tracing products work by combining diagnostics_channel with AsyncLocalStorage. Let's build a tracer together to see how it works and what you can do to make your apps more observable.
Observability for Microfrontends
DevOps.js Conf 2022DevOps.js Conf 2022
24 min
Observability for Microfrontends
Teams are getting bigger and bigger following the micro-frontends architecture. Observability for teams on a scale becomes even more important in order not only to be able to identify potential issues in the runtime, but also separating the responsibilities. In this presentation we’ll learn how this can achieved.
How to Share Code between React Web App and React Native Mobile App in Monorepo
React Summit 2022React Summit 2022
7 min
How to Share Code between React Web App and React Native Mobile App in Monorepo
Usually creating web and mobile apps require different tech stacks, and it is pretty hard to share code. This talk will show how I added a React web app and a React Native mobile app in the same monorepo using Nx, and how I optimized codeshare between react web app and react native mobile app.
How Grafana Uses React to Power the World of Observability
React Summit 2023React Summit 2023
7 min
How Grafana Uses React to Power the World of Observability
Why does Grafana use React for its frontend?
How we leverage React’s features at Grafana
What are some pain points we have ran into with using React at Grafana
What are lessons learned from adopting React for the past 5+ years?

Workshops on related topic

Beyond the Framework: Distributing Your Desktop App Like a Pro
JSNation 2023JSNation 2023
109 min
Beyond the Framework: Distributing Your Desktop App Like a Pro
WorkshopFree
Jonas Kruckenberg
Jonas Kruckenberg
Building apps using web technology is great; however, at times you may encounter limitations regardless of what framework you choose. During this workshop, we will talk about choosing a framework, common problems and how to overcome them.
Table of contents- Introduction: The intertwined history of the Web and Apps- So many desktop app technologies! How do I choose one?- Common issues and how to think about apps- Conclusion
Web Accessibility in JavaScript Apps
React Summit 2022React Summit 2022
161 min
Web Accessibility in JavaScript Apps
Workshop
Sandrina Pereira
Sandrina Pereira
Often we see JavaScript damaging the accessibility of a website. In this workshop, you’ll learn how to avoid common mistakes and how to use JS in your favor to actually enhance the accessibility of your web apps!
In this workshop we’ll explore multiple real-world examples with accessibility no-nos, and you'll learn how to make them work for people using a mouse or a keyboard. You’ll also learn how screen readers are used, and I'll show you that there's no reason to be afraid of using one!
Join me and let me show you how accessibility doesn't limit your solutions or skills. On the contrary, it will make them more inclusive!
By the end, you will:- Understand WCAG principles and how they're organized- Know common cases where JavaScript is essential to accessibility- Create inclusive links, buttons and toggleble elements- Use live regions for errors and loading states- Integrate accessibility into your team workflow right away- Realize that creating accessible websites isn’t as hard as it sounds ;)
Build a Universal Reactive Data Library with Starbeam
JSNation 2023JSNation 2023
66 min
Build a Universal Reactive Data Library with Starbeam
WorkshopFree
Yehuda Katz
Yehuda Katz
This session will focus on Starbeam's universal building blocks. We'll use Starbeam to build a data library that works in multiple frameworks.We'll write a library that caches and updates data, and supports relationships, sorting and filtering.Rather than fetching data directly, it will work with asynchronously fetched data, including data fetched after initial render. Data fetched and updated through web sockets will also work well.All of these features will be reactive, of course.Imagine you filter your data by its title, and then you update the title of a record to match the filter: any output relying on the filtered data will update to reflect the updated filter.In 90 minutes, you'll build an awesome reactive data library and learn a powerful new tool for building reactive systems. The best part: the library works in any framework, even though you don't think about (or depend on) any framework when you built it.
Table of contents- Storing a Fetched Record in a Cell- Storing multiple records in a reactive Map- Reactive iteration is normal iteration- Reactive filtering is normal filtering- Fetching more records and updating the Map- Reactive sorting is normal sorting (is this getting a bit repetitive?)- Modelling cache invalidation as data- Bonus: reactive relationships
Build Web3 apps with React
React Summit 2022React Summit 2022
51 min
Build Web3 apps with React
WorkshopFree
Shain Dholakiya
Shain Dholakiya
The workshop is designed to help Web2 developers start building for Web3 using the Hyperverse. The Hyperverse is an open marketplace of community-built, audited, easy to discover smart modules. Our goal - to make it easy for React developers to build Web3 apps without writing a single line of smart contract code. Think “npm for smart contracts.”
Learn more about the Hyperverse here.
We will go over all the blockchain/crypto basics you need to know to start building on the Hyperverse, so you do not need to have any previous knowledge about the Web3 space. You just need to have React experience.