Observabilidad para Desarrolladores de React

Rate this content
Bookmark

La observabilidad es la capacidad de medir el estado actual de un sistema. Los ingenieros de backend están familiarizándose cada vez más con los 3 pilares de la observabilidad y tecnologías como OpenTelemetry que pueden usarse para instrumentar aplicaciones y diagnosticar problemas. Sin embargo, en el mundo del frontend, estamos rezagados.
Únete a mí mientras profundizo en las herramientas y técnicas que podemos usar para instrumentar, monitorear y diagnosticar problemas en nuestras aplicaciones de React en producción. Cubriré agentes RUM y extensiones del marco de React, y las métricas y trazas que proporcionan, cómo combinarlas con el trazado de backend para una imagen holística, y cómo el Monitoreo Sintético y las alertas en plataformas de Observabilidad pueden ayudarnos a ser alertados sobre problemas que afectan a los usuarios en las interfaces que construimos y mantenemos.

This talk has been presented at React Advanced 2024, check out the latest edition of this React Conference.

Carly Richmond
Carly Richmond
20 min
28 Oct, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
En esta charla, se discute la observabilidad en aplicaciones web de React, cubriendo agentes Rome, open telemetry y monitoreo sintético. Se explica la importancia de los logs, métricas y trazas en el seguimiento del comportamiento de la aplicación e identificación de problemas. Se introduce el concepto de un agente de monitoreo de usuario real (rum agent) para aplicaciones JavaScript. Se explica la instrumentación del rum agent y aplicaciones React, junto con la precaución de tener en cuenta el tamaño del paquete. Se exploran las trazas, open telemetry e instrumentación, incluyendo cómo Core Web Vitals, trazas y open telemetry pueden proporcionar información y habilitar la autoinstrumentación. Se cubre el monitoreo sintético usando pruebas de Playwright y el proceso de convertir pruebas en monitores con configuración. Finalmente, se discute la ejecución y monitoreo de definiciones en producción, destacando la capacidad de evaluar el comportamiento del usuario, simular actividades y abordar problemas proactivamente.

1. Observabilidad en Aplicaciones Web de React

Short description:

En esta charla, hablaré sobre la observabilidad en aplicaciones web de React, incluyendo servicios tanto de front-end como de back-end. Cubriremos Rome agents, open telemetry y synthetic monitoring. Los tres pilares de la observabilidad son logs, métricas y trazas. Explicaré cada uno de ellos y su importancia en el seguimiento del comportamiento de la aplicación e identificación de problemas. Además, introduciré el concepto de un agente de monitoreo de usuario real (rum agent) para aplicaciones JavaScript, que ayuda a identificar cuellos de botella y optimizar aplicaciones de React.

Hola, React Advanced London. Bienvenidos al Día Remoto. Es genial verlos a todos. Mi nombre es Carly Richmond, y estoy aquí hoy para hablar sobre la observabilidad, pero no como tradicionalmente se podría pensar. Cuando pensamos en observabilidad, a menudo nos enfocamos demasiado en los servicios de back-end y lo que están haciendo, cuando necesitamos entender el comportamiento de nuestras aplicaciones web en el front-end también. Así que vamos a hablar sobre cómo hacemos eso con aplicaciones web de React además de ver lo que está sucediendo en los servicios de back-end también.

Las herramientas que vamos a cubrir son Rome agents, open telemetry y synthetic monitoring. Les mostraré algunos ejemplos. Tendremos fragmentos en los que pueden profundizar después si quieren echar otro vistazo. Pero si también quieren hacerme alguna pregunta después, no duden en contactarme en línea y en varios lugares en la web. Soy defensora principal de desarrolladores y gerente en Elastic, así que podrán encontrarme fácilmente en LinkedIn también. Antes de eso, en realidad fui ingeniera de front-end durante diez años trabajando en un gran banco de inversión, así que estos son problemas con los que he lidiado de primera mano, lo que significa que tengo muchas opiniones sobre cómo debería hacerse esto.

Pero primero, necesitamos hablar sobre los pilares. Muy a menudo, cuando comienzas a profundizar en la observabilidad, la gente comienza a decir, oh, bueno, necesitamos hablar sobre los pilares. Hablemos de ellos como señales, porque eso es efectivamente lo que son. Estos son tres tipos de información de telemetría que podemos usar en nuestras aplicaciones para averiguar qué está pasando e identificar comportamientos y remediar problemas que no necesariamente anticipamos que van a suceder. Así que la primera señal de la que tendemos a hablar son los logs. Y los logs, todos sabemos lo que son. Son esos mensajes extraños que vemos que estamos poniendo en la consola del navegador que podemos ver cuando estamos diagnosticando problemas en nuestra aplicación. La segunda son las métricas, que son simplemente valores que nos dan una indicación aproximada del rendimiento que podemos usar para seguir a lo largo del tiempo. Así que podrías pensar en el rendimiento y la latencia, pero también tenemos Google Core Web Vitals, que son una buena indicación del rendimiento del usuario, al menos como una guía aproximada. Y luego tenemos trazas. Ahora, podrías pensar, bueno, ¿qué son estas? Pero en realidad, has estado usando estas por un tiempo y no necesariamente pensando en ello. Estas son el tipo simple de barras con spans subyacentes que puedes ver aquí arriba que hemos visto para mostrar la cantidad de tiempo que lleva pasar por diferentes etapas en nuestra aplicación, o incluso para ver cuánto tiempo están tardando en regresar ciertas llamadas de red, a lo que todos estamos acostumbrados cuando estamos diagnosticando problemas con aplicaciones de React tratando de conectarse a servicios de back-end y funciones serverless.

Pero necesitamos sacar el rum. Y tristemente, no estoy hablando de la bebida favorita de Jack aquí. Estoy hablando de un agente de monitoreo de usuario real. Este es un simple agente que inicializas dentro de tu aplicación JavaScript que va a recopilar métricas e información de diagnóstico junto con el trazado en la aplicación de front-end. Y eso significa que podemos usarlo para identificar cuellos de botella, ver si tenemos scripts particulares que están tardando mucho en cargar, y otras piezas de información útil cuando estamos tratando de averiguar cuál es el cuello de botella dentro de nuestra aplicación de React. Estoy hablando de un agente rum porque en este momento, a menos que alguien quiera corregirme, no tenemos nada que sea lo suficientemente genérico en cross vendor.

2. Instrumentación del Agente RUM y Aplicaciones React

Short description:

Para instrumentar el rum agent, puedes usar una etiqueta de script, aunque no se recomienda para aplicaciones HTML o React más antiguas. Es mejor instalar la extensión APM rum usando MPM y agregar las opciones necesarias. El agente requiere información como el nombre del servicio, orígenes de trazado distribuido, URL del servidor y atributos opcionales como la versión del servicio y el entorno. Para aplicaciones React, pueden ser necesarias integraciones de framework personalizadas, como la extensión APM run react. Sin embargo, ten cuidado con el tamaño del bundle, ya que agregar agentes puede aumentarlo significativamente.

Necesitas usar el rum agent que está asociado con la plataforma de observabilidad en la que vas a ingerir datos. Sin embargo, mantén los ojos abiertos en el grupo de instrumentación del cliente para open telemetry. Si quieres unirte al SIG, los detalles están allí en su sitio también. Y ese es realmente el grupo que está buscando tratar de tener un estándar más abierto que no esté tan bloqueado por el proveedor. Pero para el vamos a usar el de Elastic.

Así que hay dos maneras de instrumentarlos. Y esto tiende a ser patrones similares en diferentes agentes. Así que puedes usar una etiqueta de script. Generalmente, no recomiendo esto en una aplicación HTML o en una aplicación React que quizás sea antigua que ya no estás tocando y solo quieres incluir alguna telemetría básica. Así que simplemente incluyes la etiqueta de script. Pero generalmente, el patrón que recomendaría es que instales la extensión APM rum, lo siento, la extensión elastic APM rum usando MPM y luego uses los inits y agregues las opciones apropiadas.

Así que las cosas que necesitas decirle al agente que va a enviar que básicamente van a categorizar las señales que tu aplicación va a enviar es el nombre del servicio. Si estás trabajando en muchas aplicaciones diferentes, que ciertamente fue mi experiencia, necesitas saber a qué aplicación corresponden las señales. Y también, si es el front end de React, o esos servicios de back end, cuando llegamos al trazado de frente a atrás. Luego tienes orígenes de trazado distribuido, esto es necesario porque por defecto, el rum agent opera en la política de mismo origen. Así que necesitas asegurarte de que pueda agregar el encabezado de trace parent a esas solicitudes HTTP que van de regreso a los servicios de back end, para que puedas ver realmente la traza completa, que veremos más adelante. Luego tienes la URL del servidor, este es el despliegue L al que vas a enviar. Y luego tienes atributos opcionales de versión del servicio y entorno, que aunque no son necesarios, puedes usarlos para asegurarte de que tal vez quieras comparar errores, ver cuántas versiones del servicio retrocede para tratar de identificar la fuente del problema. O incluso si estás haciendo comparaciones ambientales, estos atributos pueden ser útiles para agregar.

Pero también necesitamos pensar en el elemento React porque diferentes frameworks SPA se comportan de manera diferente. Y a veces puede que necesitemos agregar integraciones de framework personalizadas particulares junto con, para asegurarnos de que obtenemos la telemetría apropiada para nuestra aplicación. Y en este ejemplo particular, usas la extensión APM run react, que es otra instalación de MPM. Y usas eso para acceder al componente de rutas APM que luego se envuelve junto con tu ruta react y tus rutas DOM. Esto es a partir de la versión seis. Así que si estás usando versiones anteriores, asegúrate de que estás usando el patrón correcto. Todo está cubierto en la documentación.

Ahora, solo una advertencia, necesitamos pensar en los tipos de agentes que estamos agregando a nuestras aplicaciones. Porque si no tenemos cuidado, y no estamos usando las optimizaciones apropiadas, van a inflar la construcción, no hay manera de evitarlo, no importa si estamos usando un rum agent, Google Analytics, Hotjar, o algo más, estas cosas realmente pueden aumentar el tamaño del bundle. Así que asegúrate de que también estás siguiendo las instrucciones apropiadas para el empaquetador que estás usando para asegurarte de optimizar la versión de producción también. Pero volviendo a lo que estas cosas nos dan, nos dan todo tipo de métricas diferentes que se capturan.

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

Registro Multihilo con Pino
JSNation Live 2021JSNation Live 2021
19 min
Registro Multihilo con Pino
Top Content
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.
Observabilidad para Microfrontends
DevOps.js Conf 2022DevOps.js Conf 2022
24 min
Observabilidad para Microfrontends
Microfrontends follow the microservices paradigm and observability is crucial for debugging runtime production issues. Error boundaries and tracking errors help identify and resolve issues. Automation of alerts improves incident response. Observability can help minimize the time it takes to understand and resolve production issues. Catching errors from the client and implementing boundaries can be done with tools like OpenTelemetry.
Observabilidad con diagnostics_channel y AsyncLocalStorage
Node Congress 2023Node Congress 2023
21 min
Observabilidad con diagnostics_channel y AsyncLocalStorage
Observability with Diagnostics Channel and async local storage allows for high-performance event tracking and propagation of values through calls, callbacks, and promise continuations. Tracing involves five events and separate channels for each event, capturing errors and return values. The span object in async local storage stores data about the current execution and is reported to the tracer when the end is triggered.
Cómo Grafana Utiliza React para Potenciar el Mundo de la Observabilidad
React Summit 2023React Summit 2023
7 min
Cómo Grafana Utiliza React para Potenciar el Mundo de la Observabilidad
Grafana uses React to power its open source platform, leveraging its vast ecosystem, improved performance, and community contributions. The choice of state management tool depends on the team's problem space. React Hooks have posed challenges but have also been a powerful tool for developers. The new Scenes library simplifies development and reduces the learning curve. Despite challenges, React remains a powerful tool for complex frontends, and Grafana will continue to use it.
Observabilidad en GraphQL
GraphQL Galaxy 2020GraphQL Galaxy 2020
8 min
Observabilidad en GraphQL
This Talk discusses how to tool Apollo server with open tracing for observability. OpenTracing is a vendor-agnostic format that works well with distributed systems in microservices. It allows for converting GraphQL tracing data to a vendor-agnostic format and enriching information from GraphQL servers. If providers support OpenTracing, it can be easily integrated.
Creando un motor de innovación con observabilidad
Node Congress 2023Node Congress 2023
27 min
Creando un motor de innovación con observabilidad
Baseline provides observability for serverless architectures and has created an innovation engine within their team. They measure team performance using Dora metrics and the Accelerate book. Baseline emphasizes the importance of foundations, streamlined testing, and fast deployment. They practice observability-driven development and incorporate observability as part of their development lifecycle. Baseline believes in building a culture that fosters ownership and democratizes production.

Workshops on related topic

Escalando Bases de Datos para Aplicaciones Globales sin Servidor
Node Congress 2022Node Congress 2022
83 min
Escalando Bases de Datos para Aplicaciones Globales sin Servidor
WorkshopFree
Ben Hagan
Ben Hagan
Este masterclass discute los desafíos que enfrentan las empresas al escalar la capa de datos para admitir implementaciones multi-región y entornos sin servidor. Las funciones de borde sin servidor y la orquestación de contenedores livianos permiten que las aplicaciones y la lógica empresarial se implementen fácilmente a nivel mundial, dejando a menudo la base de datos como el cuello de botella de latencia y escalabilidad.
Únase a nosotros para comprender cómo PolyScale.ai resuelve estos desafíos de escalabilidad, almacenando en caché de manera inteligente los datos de la base de datos en el borde, sin sacrificar la transaccionalidad o la consistencia. Aprenda a implementar, observar consultas y realizar pruebas de latencia global con funciones de borde utilizando PolyScale.
Tabla de contenidos        - Introducción a PolyScale.ai        - Gravedad de los datos empresariales        - Por qué es difícil escalar los datos        - Opciones para escalar la capa de datos        - Observabilidad de la base de datos        - Gestión de caché con IA        - Aprenda a utilizar PolyScale.ai