Cómo Grafana Usa React para Impulsar el Mundo de la Observabilidad

This ad is not shown to multipass and full ticket holders
React Summit
React Summit 2026
June 11 - 15, 2026
Amsterdam & Online
Upcoming event
React Summit 2026
React Summit 2026
June 11 - 15, 2026. Amsterdam & Online
Learn more
Bookmark
Slides
Rate this content
Sentry
Promoted
Code breaks, fix it faster

Crashes, slowdowns, regressions in prod. Seer by Sentry unifies traces, replays, errors, profiles to find root causes fast.

¿Por qué Grafana usa React para su frontend?
Cómo aprovechamos las características de React en Grafana
¿Cuáles son algunos puntos problemáticos que hemos encontrado al usar React en Grafana?
¿Cuáles son las lecciones aprendidas de adoptar React durante los últimos 5+ años?

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

FAQ

El equipo de Grafana decidió cambiar a React en 2018 porque el esfuerzo requerido para migrar a Angular 2 era comparable al necesario para cambiar a React, y React era preferido por el talento disponible.

React ha proporcionado a Grafana un vasto ecosistema de bibliotecas de terceros, optimizaciones de rendimiento y una mayor facilidad para recibir contribuciones de la comunidad al ser una biblioteca frontend muy popular.

Uno de los principales desafíos ha sido la gestión del estado, dado que React no es un marco de trabajo completo como Angular. Además, los Hooks han presentado desafíos en cuanto a su complejidad y acoplamiento con el tiempo de ejecución de React.

Canvas es un nuevo tipo de panel en Grafana que permite crear diseños y interfaces de usuario personalizados. React, mediante el uso de una biblioteca de terceros llamada Movable, ayudó a acelerar el desarrollo de Canvas, alcanzando la fase beta meses antes de lo previsto.

Scenes es una biblioteca de tiempo de ejecución de paneles en Grafana que simplifica el proceso de desarrollo al eliminar la necesidad de conceptos como useEffects y useCallbacks, utilizando un modelo de estado que gestiona los efectos de montaje, lo que simplifica el desarrollo de componentes.

La filosofía BigTent de Grafana consiste en admitir lo más posible del ecosistema de observabilidad, proporcionando a los usuarios flexibilidad para visualizar sus datos desde diversas fuentes como Kubernetes, Raspberry Pi, servicios en la nube o incluso Google Sheets.

Grafana utiliza una combinación de herramientas para la gestión del estado, incluyendo Redux, RxJS, Props y Context, entre otros, adaptándose a las necesidades específicas de su aplicación.

Nathan Marrs
Nathan Marrs
7 min
06 Jun, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Grafana usa React para impulsar su plataforma de código abierto, aprovechando su vasto ecosistema, mejor rendimiento y contribuciones de la comunidad. La elección de la herramienta de gestión de estado depende del espacio de problemas del equipo. React Hooks han planteado desafíos pero también han sido una herramienta poderosa para los desarrolladores. La nueva biblioteca Scenes simplifica el desarrollo y reduce la curva de aprendizaje. A pesar de los desafíos, React sigue siendo una herramienta poderosa para frontends complejos, y Grafana continuará usándola.

1. Introduction to Grafana's Use of React

Short description:

Hola, soy Nathan Mars, el líder técnico en Grafana Labs. Grafana utiliza React para potenciar su plataforma de código abierto, proporcionando beneficios como un vasto ecosistema, un rendimiento mejorado y contribuciones de la comunidad. Sin embargo, la gestión del estado en React ha planteado desafíos, lo que ha llevado a Grafana a usar una mezcla de Redux, RxJS, Props y Context. La elección de la herramienta de gestión del estado depende del espacio de problemas del equipo.

Hola, mi nombre es Nathan Mars y soy el líder técnico del equipo de visualización de datos en Grafana Labs. Hoy, estoy emocionado de compartir con ustedes cómo Grafana aprovecha React para potenciar su ampliamente utilizada plataforma de código abierto que permite a millones de usuarios visualizar y analizar sus datos.

Comencemos con una historia. Grafana no siempre usó React. De hecho, primero usó Angular. En 2018, el equipo llegó a una encrucijada. O migrar a Angular 2 desde Angular 1 o considerar otras opciones. Finalmente, el equipo decidió cambiar a React ya que el esfuerzo no era muy diferente al que requería migrar a Angular 2 y React era con lo que las personas talentosas querían trabajar. Con la decisión tomada de cambiar a React, comenzó la inmensa migración. Esta es otra historia completamente, y aún está en curso.

Hoy, usamos React para potenciar todo el front end de Grafana desde los paneles hasta el explorador pasando por las alertas y mucho más. React nos ha proporcionado algunos beneficios significativos. En primer lugar, el ecosistema de React es inmenso. Es casi al mismo nivel de hay una app para eso, pero, en su lugar, es hay una biblioteca de terceros para eso. Poder aprovechar este ecosistema nos ha permitido lanzar funciones más rápido y reducir la deuda técnica que poseemos. Por ejemplo, queríamos construir un nuevo tipo de panel llamado Canvas que permite crear diseños y UIs personalizados. Una biblioteca de terceros llamada Movable nos ayudó enormemente, llevándonos al estado beta meses antes de lo que de otro modo hubiéramos logrado. El rendimiento de React es otro beneficio que nos ha permitido escalar. Las optimizaciones de renderizado integradas, así como los componentes basados en clases deberían actualizar el componente y las matrices de dependencias de hooks, nos han facilitado optimizar el rendimiento de nuestro código y, en última instancia, proporcionar una gran experiencia de usuario.

Otro beneficio de usar React es su ubicuidad. Como Grafana es de código abierto, estar basado en la biblioteca frontend más popular ha ayudado a facilitar las contribuciones de la comunidad a Grafana. Sin embargo, Grafana también ha experimentado algunos desafíos con React, especialmente cuando se trata de la gestión del estado. React nunca ha afirmado ser un framework, a diferencia de Angular, por lo que la cuestión de cómo gestionar un estado de aplicación complejo mientras se usa React ha sido durante mucho tiempo abierta. Antes de context, estaba Redux. Antes de Redux, estaba el buen y viejo paso unidireccional de props. ¿Cuál ha sido el enfoque de Grafana para esto? Bueno, usarlos todos en una mezcla. Desde Redux, RxJS, Props y Context, y más. A medida que Grafana madura, aún está por verse si este enfoque es sostenible. En general, sentimos que un equipo debería usar una herramienta de gestión del estado que mejor se adapte a su espacio de problemas. La ambigüedad de qué solución usar es un problema clásico para las bibliotecas y plataformas versátiles y de código abierto.

2. Grafana's Use of React and Challenges with Hooks

Short description:

Grafana admite una amplia gama de fuentes de datos y tiene como objetivo proporcionar flexibilidad en la visualización de datos. Sin embargo, esto puede llevar a confusión para los usuarios al encontrar la mejor solución. Los React Hooks han planteado desafíos, pero también han sido una herramienta poderosa para los desarrolladores. Grafana está emocionado de anunciar la nueva biblioteca Scenes, que simplifica el desarrollo y reduce la curva de aprendizaje. A pesar de los desafíos, React sigue siendo una herramienta poderosa para frontends complejos, y Grafana continuará usándola.

Grafana itself has a BigTent philosophy, supporting as much of the observability ecosystem as possible. Esto proporciona a nuestros usuarios una gran cantidad de flexibilidad en la visualización de sus datos, sin importar cuál sea la fuente, ya sea desde su clúster de Kubernetes, Raspberry Pi, diferentes servicios en la nube, o incluso Google Sheets.

Al mismo tiempo, sin embargo, esto puede llevar a confusión por parte de nuestros usuarios finales al tratar de averiguar cómo construir la mejor solución de observabilidad para ellos mismos.

Otro desafío que hemos enfrentado con React es con el paradigma de Hooks. Algunos en Grafana han expresado su frustración con Hooks ya que introducen cierres obsoletos y requieren aprender y dominar las reglas de Hook. Los componentes funcionales, como se les llama, rara vez son funciones puras. Los Hooks también introducen un acoplamiento mucho más fuerte con el tiempo de ejecución de React que antes. El nombre Hook indica esto. Estás enganchándote a los internos de React. Así que necesitas entender esos internos. Los Hooks están lejos de ser una abstracción funcional, ya que necesitas conocer los detalles internos de su implementación. Esto se vuelve aún más evidente cuando intentas probar un hook en aislamiento.

React ha seguido un paradigma de programación funcional. Y algunos temen que con la introducción de Hooks pueda estar desviándose de ese paradigma y entrando en el territorio de los frameworks. Aunque algunos en Grafana han expresado preocupaciones con los Hooks, es importante notar que han sido una herramienta poderosa para nuestros desarrolladores. Como con cualquier herramienta, puede haber una curva de aprendizaje, pero una vez dominada, pueden mejorar enormemente el proceso de desarrollo. En Grafana, reconocemos la importancia de explorar y experimentar con nuevas herramientas y metodologías para mejorar continuamente nuestros procesos de desarrollo. Apreciamos los beneficios que los Hooks han traído a nuestro flujo de trabajo de desarrollo y continuamos explorando nuevas formas de mejorar nuestras herramientas y procesos.

Dicho esto, estamos emocionados de anunciar nuestro nuevo enfoque para construir nuestra biblioteca de tiempo de ejecución de paneles de próxima generación, Scenes. Hemos tomado un enfoque diferente que simplifica el proceso de desarrollo y reduce la curva de aprendizaje para nuestros desarrolladores. Con Scenes, cada componente se suscribe al estado construido con ArcGIS, renderiza el marcado y canaliza las devoluciones de llamada de nuevo al modelo de estado. Hemos eliminado la necesidad de conceptos complicados como useEffects y useCallbacks. El modelo de estado se encarga de cualquier efecto de montaje necesario, haciendo que el proceso de desarrollo sea más intuitivo y eficiente. Estamos seguros de que nuestra nueva biblioteca será un cambio de juego para nuestros desarrolladores y creemos que este enfoque simplificado llevará a una experiencia de desarrollo más positiva. Aunque la biblioteca aún está en sus primeras etapas de desarrollo, estamos emocionados de ver cómo continuará evolucionando y mejorando la forma en que construimos nuestros paneles.

A pesar de nuestros desafíos, creemos que React es una herramienta poderosa para resolver el problema de implementar y mantener frontends complejos. La sutileza estructural es clave, y con ella hay una libertad para considerar una miríada de opciones de gestión de estado y elegir la que tenga más sentido. De cara al futuro, es importante reconocer que como comunidad de código abierto, tenemos opciones. Cuando una herramienta deja de resolver el problema para el que la contratamos, podemos desecharla y probar una nueva. React no se aleja de esto, y tampoco Grafana. Pero por ahora, estamos contentos con nuestra decisión de cambiar a React, y continuaremos usándola mientras tenga sentido hacerlo. Si estás interesado en aprender más sobre Grafana y nuestra nueva biblioteca de tiempo de ejecución de paneles themes, por favor revisa la próxima conferencia GrafanaCon.

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

Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top ContentPremium
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
De Monolito a Micro-Frontends
React Advanced 2022React Advanced 2022
22 min
De Monolito a Micro-Frontends
Top Content
Microfrontends are considered as a solution to the problems of exponential growth, code duplication, and unclear ownership in older applications. Transitioning from a monolith to microfrontends involves decoupling the system and exploring options like a modular monolith. Microfrontends enable independent deployments and runtime composition, but there is a discussion about the alternative of keeping an integrated application composed at runtime. Choosing a composition model and a router are crucial decisions in the technical plan. The Strangler pattern and the reverse Strangler pattern are used to gradually replace parts of the monolith with the new application.
Solucionando Problemas de Rendimiento en React
React Advanced 2023React Advanced 2023
22 min
Solucionando Problemas de Rendimiento en React
Top Content
This Talk discusses various strategies to improve React performance, including lazy loading iframes, analyzing and optimizing bundles, fixing barrel exports and tree shaking, removing dead code, and caching expensive computations. The speaker shares their experience in identifying and addressing performance issues in a real-world application. They also highlight the importance of regularly auditing webpack and bundle analyzers, using tools like Knip to find unused code, and contributing improvements to open source libraries.

Workshops on related topic

Monitoreo 101 para Desarrolladores de React
React Advanced 2023React Advanced 2023
112 min
Monitoreo 101 para Desarrolladores de React
Top Content
WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Si encontrar errores en tu proyecto frontend es como buscar una aguja en un pajar de código, entonces el monitoreo de errores de Sentry puede ser tu detector de metales. Aprende los conceptos básicos del monitoreo de errores con Sentry. Ya sea que estés ejecutando un proyecto de React, Angular, Vue, o simplemente JavaScript “vainilla”, ve cómo Sentry puede ayudarte a encontrar el quién, qué, cuándo y dónde detrás de los errores en tu proyecto frontend.
Construyendo una Aplicación de Shopify con React & Node
React Summit Remote Edition 2021React Summit Remote Edition 2021
87 min
Construyendo una Aplicación de Shopify con React & Node
Top Content
Workshop
Jennifer Gray
Hanna Chen
2 authors
Los comerciantes de Shopify tienen un conjunto diverso de necesidades, y los desarrolladores tienen una oportunidad única para satisfacer esas necesidades construyendo aplicaciones. Construir una aplicación puede ser un trabajo duro, pero Shopify ha creado un conjunto de herramientas y recursos para ayudarte a construir una experiencia de aplicación sin problemas lo más rápido posible. Obtén experiencia práctica construyendo una aplicación integrada de Shopify utilizando el CLI de la aplicación Shopify, Polaris y Shopify App Bridge.Te mostraremos cómo crear una aplicación que acceda a la información de una tienda de desarrollo y pueda ejecutarse en tu entorno local.
Construye una sala de chat con Appwrite y React
JSNation 2022JSNation 2022
41 min
Construye una sala de chat con Appwrite y React
Workshop
Wess Cope
Wess Cope
Las API/Backends son difíciles y necesitamos websockets. Utilizarás VS Code como tu editor, Parcel.js, Chakra-ui, React, React Icons y Appwrite. Al final de este masterclass, tendrás los conocimientos para construir una aplicación en tiempo real utilizando Appwrite y sin necesidad de desarrollar una API. ¡Sigue los pasos y tendrás una increíble aplicación de chat para presumir!
Problemas difíciles de GraphQL en Shopify
GraphQL Galaxy 2021GraphQL Galaxy 2021
164 min
Problemas difíciles de GraphQL en Shopify
Workshop
Rebecca Friedman
Jonathan Baker
Alex Ackerman
Théo Ben Hassen
 Greg MacWilliam
5 authors
En Shopify a gran escala, resolvemos algunos problemas bastante difíciles. En este masterclass, cinco oradores diferentes describirán algunos de los desafíos que hemos enfrentado y cómo los hemos superado.

Tabla de contenidos:
1 - El infame problema "N+1": Jonathan Baker - Vamos a hablar sobre qué es, por qué es un problema y cómo Shopify lo maneja a gran escala en varios APIs de GraphQL.
2 - Contextualizando APIs de GraphQL: Alex Ackerman - Cómo y por qué decidimos usar directivas. Compartiré qué son las directivas, qué directivas están disponibles de forma predeterminada y cómo crear directivas personalizadas.
3 - Consultas de GraphQL más rápidas para clientes móviles: Theo Ben Hassen - A medida que tu aplicación móvil crece, también lo harán tus consultas de GraphQL. En esta charla, repasaré diversas estrategias para hacer que tus consultas sean más rápidas y efectivas.
4 - Construyendo el producto del futuro hoy: Greg MacWilliam - Cómo Shopify adopta las características futuras en el código actual.
5 - Gestión efectiva de APIs grandes: Rebecca Friedman - Tenemos miles de desarrolladores en Shopify. Veamos cómo estamos asegurando la calidad y consistencia de nuestras APIs de GraphQL con tantos colaboradores.
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
Cómo Resolver Problemas del Mundo Real con Remix
Remix Conf Europe 2022Remix Conf Europe 2022
195 min
Cómo Resolver Problemas del Mundo Real con Remix
Workshop
Michael Carter
Michael Carter
- ¿Errores? Cómo renderizar y registrar tus errores del servidor y del clientea - Cuándo devolver errores vs lanzar excepcionesb - Configurar servicios de registro como Sentry, LogRocket y Bugsnag- ¿Formularios? Cómo validar y manejar formularios de varias páginasa - Usar zod para validar los datos del formulario en tu acciónb - Pasar por formularios de varias páginas sin perder datos- ¿Atascado? Cómo solucionar errores o funciones faltantes en Remix para que puedas continuara - Usar patch-package para solucionar rápidamente tu instalación de Remixb - Mostrar herramienta para gestionar múltiples parches y seleccionar solicitudes de extracción abiertas- ¿Usuarios? Cómo manejar aplicaciones de varios inquilinos con Prismaa - Determinar el inquilino por el host o por el usuariob - Base de datos múltiples o base de datos única/múltiples esquemasc - Asegura que los datos del inquilino siempre estén separados de los demás