Manejo de datos a gran escala para desarrolladores de React

Rate this content
Bookmark

Es muy difícil escalar aplicaciones web modernas a millones de usuarios concurrentes. A menudo, tenemos que aprovisionar y considerar almacenes de clave/valor en memoria, motores de búsqueda, motores de análisis y bases de datos, todo ello manteniendo la trazabilidad a través de las capas. Esta charla amplía los detalles técnicos de las aplicaciones web a esta escala y ofrece una forma más sencilla de lograr el mismo efecto sin las complicaciones técnicas.

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

FAQ

La charla se centró en cómo manejar datos a gran escala en React, explorando diferentes métodos para obtener y manejar datos, y cómo implementar estas técnicas eficientemente en aplicaciones de React.

Excalidraw es una herramienta de dibujo utilizada para crear diagramas de manera fácil y rápida. Fue mencionada en la charla para ilustrar cómo se manejan los datos a gran escala en aplicaciones de React.

Las tres formas principales son: 1) Renderizar el componente y luego obtener los datos, 2) Obtener los datos y luego renderizar el componente, y 3) Renderizar mientras se obtienen los datos, utilizando las características concurrentes de React 18.

Los desafíos incluyen manejar el crecimiento de la base de datos, escalando vertical y horizontalmente, y optimizar el rendimiento al introducir bases de datos en memoria para lecturas rápidas y manejar la indexación y búsqueda en grandes volúmenes de datos.

Con React 18, puedes utilizar Suspense para manejar la carga de datos de manera que el componente pueda renderizarse parcialmente mientras espera que los datos estén disponibles, mejorando la experiencia del usuario al minimizar los tiempos de espera visibles.

Suspense es una característica de React que permite a los desarrolladores definir un componente de espera mientras se cargan los datos. Ayuda a manejar estados de carga de forma más elegante y a mejorar la interacción del usuario mientras se cargan los datos asincrónicamente.

Se recomienda confiar en bibliotecas probadas y frameworks como Next.js o Remix, que están diseñados para manejar eficientemente los casos extremos y las complejidades de las aplicaciones modernas de React, especialmente a gran escala.

Tejas Kumar
Tejas Kumar
23 min
17 Jun, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla trata sobre el manejo de datos a gran escala para desarrolladores de React, incluyendo la escalabilidad de las bases de datos y la necesidad de búsqueda. Explora diferentes formas de obtener datos en React, como el uso de useEffect, fetch y setState. La charla también presenta Suspense para la obtención de datos y cómo mejora la experiencia del usuario. Cubre el control de Suspense en React, el manejo de la búsqueda y el uso de render-as-you-fetch. La charla concluye con una discusión sobre el estado RFC y la obtención de datos en los controladores de eventos.

1. Handling Data at Scale for React Developers

Short description:

Estamos aquí para hablar sobre cómo manejar datos a gran escala para desarrolladores de React. Seamos más específicos y veamos un diagrama de lo que queremos decir con datos a gran escala. Por lo general, tienes una aplicación de React o una interfaz de usuario de React que se comunica con una API que luego se comunica con una base de datos. En algún momento, experimentarás un crecimiento y el rendimiento se vuelve importante. Por lo tanto, distribuyes tu API, tienes múltiples APIs y balanceas la carga entre ellas. Pero si tienes éxito, es posible que tu base de datos se convierta en el cuello de botella, por lo que necesitas escalarla.

¡Hola! ¿Cómo estás? ¿Lleno? ¿Lleno de almuerzo? ¿Satisfecho? Un poco más de conocimiento e información y cosas divertidas de react ¿verdad? Es como si hubiera tres de ustedes, tres de ustedes están despiertos. ¿Cuatro? De nuevo, ¿cómo te sientes? ¿Estás listo para aprender algunas cosas? Errores por uno, ¿sabes?

De todos modos, ¡hola! ¡Encantado de verte! Soy Tajus, solía decirles a las personas. Solía decirles que era como algo, pero ahora digo que es como ventajoso. De todos modos, soy el director de relaciones con desarrolladores en Zara. Mira esta cosa hermosa. Esa es mi diapositiva favorita y también una de mis cinco diapositivas. Vamos a escribir mucho código en esta charla y aprender correctamente. Por cierto, esto fue hecho por Sarah Vieira, ella está aquí, ella está haciendo la última charla hoy, así que si quieres aprender cómo hacer cosas en 3D, no te la pierdas. Pero eso no es de lo que estamos aquí para hablar hoy.

Estamos aquí para hablar sobre cómo manejar data a gran escala para desarrolladores de react. Manejo de data a gran escala para desarrolladores de react. ¿Qué significa eso? Esto suena como una charla de marketing muy abstracta y la respuesta es porque no es una charla de marketing, pero es abstracta a propósito para que pueda cambiarla en el último minuto como siempre hago, ¿de acuerdo? Pero seamos más específicos y veamos un diagrama de lo que queremos decir con data a gran escala. Para hacer eso, vamos a usar una herramienta increíble llamada Excalidraw. ¿Cuántos de ustedes han oído hablar de Excalidraw? Sí, si quieren aplaudir a Excalidraw, sí, por supuesto. Data a gran escala. Esto es lo que parece. Por lo general, tienes una aplicación de React o una interfaz de usuario de React, digamos, ¿verdad? ¿El texto está bien? ¿Todos pueden ver? Bien. Lo sabía. Acabo de preguntar y lo que vamos a hacer es que por lo general tienes una interfaz de usuario de React que se comunica con una API que, vamos a alejarnos un poco, que luego se comunica con una database y estas conexiones generalmente se ven un poco así. Así que esto puede ser demasiado simplificado, pero eso es lo que la mayoría de las aplicaciones hacen. ¿Esto es a gran escala? Probablemente no. Esta es una única database de host y así sucesivamente. En algún momento, experimentarás un crecimiento y el rendimiento se vuelve importante. Entonces, ¿qué haces? Probablemente distribuirás tu API. Tener un único punto de falla generalmente no es recomendable, así que lo que harás es eso y tendrás múltiples APIs que pueden obtener datos múltiples veces y lo que sea. Y puedes balancear la carga entre ellos. Y luego, bueno, vas a ser como, esto está genial, pero si creces, ¿qué hacen las cosas exitosas? Crecen. Entonces, si creces, vas a estar como, oh no, nuestra database ahora es el cuello de botella. Vamos a escalarlo.

2. Scaling Databases and the Need for Search

Short description:

Entonces escalarás tu base de datos vertical u horizontalmente. Escalar verticalmente significa agregar memoria y espacio en disco, mientras que escalar horizontalmente implica tener una instancia principal y réplicas. A medida que tus datos crecen, es posible que notes tiempos de lectura lentos desde la base de datos debido a limitaciones de disco. Para solucionar esto, puedes agregar una base de datos en memoria para una lectura más rápida, con la opción de recurrir al disco si hay una falta de caché. Eventualmente, a medida que aumenta el volumen de tus datos, la búsqueda se convierte en una función común necesaria para plataformas como GitHub, TikTok e Instagram.

Entonces escalarás verticalmente. Y esta escala vertical generalmente significa agregar memoria, agregar espacio en disco, agregar cosas. Y se vuelve bastante costoso. Eventualmente construyes una supercomputadora. O, si quieres escalar tu base de datos de la otra manera, escalarás horizontalmente, lo que significa que tendrás una instancia principal y algunas réplicas. Entonces, cuando obtienes datos, se distribuyen en las réplicas y así sucesivamente.

Pero luego crecerás más. Y estamos hablando de datos a gran escala, por lo que es importante establecer este contexto. Crecerás un poco más. En algún momento, te darás cuenta de que nuestra base de datos sigue siendo lenta para leer. Y eso se debe a que generalmente las bases de datos leen desde el disco. El disco, por diseño, no es tan rápido como qué cosa. Memoria. Memoria. Así que, ahora, he tenido esta conversación al menos 50 veces en la última semana. Eso es una mentira porque soy un orador público. Realmente no lo he hecho. Pero ya sabes cómo es.

Entonces, agregarás algún tipo de base de datos en memoria solo para leer más rápido. Esto probablemente también estará distribuido. Y ahora tu aplicación hablará con esa cosa para obtener datos rápidos. Y si no está en caché, entonces lees desde la base de datos. ¿De acuerdo? Esto es cercano a cómo se ven las cosas a gran escala. Creo que el sitio web de Kent C. Dodd tiene algo así en la parte posterior. Pero a medida que acumulas volumen de datos, ¿cuál es la característica común en cosas con toneladas de volumen de datos? Búsqueda. Entonces, GitHub, TikTok, Instagram. Eventualmente, cuando tengas suficientes datos, necesitarás búsqueda. Y ahora se vuelve complicado, ¿verdad? Porque tu aplicación puede leer desde el motor de búsqueda, pero estará vacío. Solo estás como... De acuerdo.

QnA

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

No resuelvas problemas, elimínalos
React Advanced 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
Los Átomos de Jotai Son Simplemente Funciones
React Day Berlin 2022React Day Berlin 2022
22 min
Los Átomos de Jotai Son Simplemente Funciones
Top Content
State management in React is a highly discussed topic with many libraries and solutions. Jotai is a new library based on atoms, which represent pieces of state. Atoms in Jotai are used to define state without holding values and can be used for global, semi-global, or local states. Jotai atoms are reusable definitions that are independent from React and can be used without React in an experimental library called Jotajsx.
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.
El Epic Stack
React Summit US 2023React Summit US 2023
21 min
El Epic Stack
Top Content
This Talk introduces the Epic Stack, a project starter and reference for modern web development. It emphasizes that the choice of tools is not as important as we think and that any tool can be fine. The Epic Stack aims to provide a limited set of services and common use cases, with a focus on adaptability and ease of swapping out tools. It incorporates technologies like Remix, React, Fly to I.O, Grafana, and Sentry. The Epic Web Dev offers free materials and workshops to gain a solid understanding of the Epic Stack.
Principios para Escalar el Desarrollo de Aplicaciones Frontend
React Summit 2023React Summit 2023
26 min
Principios para Escalar el Desarrollo de Aplicaciones Frontend
Top Content
This Talk discusses scaling front-end applications through principles such as tearing down barriers, sharing code in a monorepo, and making it easy to delete code. It also emphasizes incremental migration, embracing lack of knowledge, and eliminating systematic complexity. The Talk highlights the use of automation in code migration and the importance of removing barriers to enable smoother code migration.
Luchando contra la Deuda Técnica con la Refactorización Continua
React Day Berlin 2022React Day Berlin 2022
29 min
Luchando contra la Deuda Técnica con la Refactorización Continua
Top Content
This Talk discusses the importance of refactoring in software development and engineering. It introduces a framework called the three pillars of refactoring: practices, inventory, and process. The Talk emphasizes the need for clear practices, understanding of technical debt, and a well-defined process for successful refactoring. It also highlights the importance of visibility, reward, and resilience in the refactoring process. The Talk concludes by discussing the role of ownership, management, and prioritization in managing technical debt and refactoring efforts.

Workshops on related topic

React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Masterclass Web3 - Construyendo Tu Primer Dapp
React Advanced 2021React Advanced 2021
145 min
Masterclass Web3 - Construyendo Tu Primer Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
En esta masterclass, aprenderás cómo construir tu primer dapp de pila completa en la blockchain de Ethereum, leyendo y escribiendo datos en la red, y conectando una aplicación de front end al contrato que has desplegado. Al final de la masterclass, entenderás cómo configurar un entorno de desarrollo de pila completa, ejecutar un nodo local e interactuar con cualquier contrato inteligente usando React, HardHat y Ethers.js.
Fundamentos de Remix
React Summit 2022React Summit 2022
136 min
Fundamentos de Remix
Top Content
Featured WorkshopFree
Kent C. Dodds
Kent C. Dodds
Construir aplicaciones web modernas está lleno de complejidad. Y eso solo si te molestas en lidiar con los problemas
¿Cansado de conectar onSubmit a las API del backend y asegurarte de que tu caché del lado del cliente se mantenga actualizada? ¿No sería genial poder utilizar la naturaleza global de CSS en tu beneficio, en lugar de buscar herramientas o convenciones para evitarla o trabajar alrededor de ella? ¿Y qué te parecería tener diseños anidados con una gestión de datos inteligente y optimizada para el rendimiento que simplemente funciona™?
Remix resuelve algunos de estos problemas y elimina completamente el resto. Ni siquiera tienes que pensar en la gestión de la caché del servidor o en los conflictos del espacio de nombres global de CSS. No es que Remix tenga APIs para evitar estos problemas, simplemente no existen cuando estás usando Remix. Ah, y no necesitas ese enorme y complejo cliente graphql cuando estás usando Remix. Ellos te tienen cubierto. ¿Listo para construir aplicaciones más rápidas de manera más rápida?
Al final de esta masterclass, sabrás cómo:- Crear Rutas de Remix- Estilizar aplicaciones de Remix- Cargar datos en los cargadores de Remix- Mutar datos con formularios y acciones
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Top Content
Featured WorkshopFree
Mikhail Kuznetsov
Mikhail Kuznetsov
Vue3 fue lanzado a mediados de 2020. Además de muchas mejoras y optimizaciones, la principal característica que trae Vue3 es la API de Composición, una nueva forma de escribir y reutilizar código reactivo. Aprendamos más sobre cómo usar la API de Composición de manera eficiente.

Además de las características principales de Vue3, explicaremos ejemplos de cómo usar bibliotecas populares con Vue3.

Tabla de contenidos:
- Introducción a Vue3
- API de Composición
- Bibliotecas principales
- Ecosistema Vue3

Requisitos previos:
IDE de elección (Inellij o VSC) instalado
Nodejs + NPM
React a Escala con Nx
React Summit 2023React Summit 2023
145 min
React a Escala con Nx
Top Content
Featured WorkshopFree
Isaac Mann
Isaac Mann
Vamos a utilizar Nx y algunos de sus plugins para acelerar el desarrollo de esta aplicación.
Algunas de las cosas que aprenderás:- Generar un espacio de trabajo Nx prístino- Generar aplicaciones frontend React y APIs backend dentro de tu espacio de trabajo, con proxies preconfigurados- Crear librerías compartidas para reutilizar código- Generar nuevos componentes enrutados con todas las rutas preconfiguradas por Nx y listas para usar- Cómo organizar el código en un monorepositorio- Mover fácilmente las librerías alrededor de tu estructura de carpetas- Crear historias de Storybook y pruebas e2e de Cypress para tus componentes
Tabla de contenidos: - Lab 1 - Generar un espacio de trabajo vacío- Lab 2 - Generar una aplicación React- Lab 3 - Ejecutores- Lab 3.1 - Migraciones- Lab 4 - Generar una librería de componentes- Lab 5 - Generar una librería de utilidades- Lab 6 - Generar una librería de rutas- Lab 7 - Añadir una API de Express- Lab 8 - Mostrar un juego completo en el componente de detalle de juego enrutado- Lab 9 - Generar una librería de tipos que la API y el frontend pueden compartir- Lab 10 - Generar historias de Storybook para el componente de interfaz de usuario compartido- Lab 11 - Prueba E2E del componente compartido
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
JSNation 2023JSNation 2023
174 min
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
Top Content
Featured WorkshopFree
Alba Silvente Fuentes
Roberto Butti
2 authors
Esta masterclass de SvelteKit explora la integración de servicios de terceros, como Storyblok, en un proyecto SvelteKit. Los participantes aprenderán cómo crear un proyecto SvelteKit, aprovechar los componentes de Svelte y conectarse a APIs externas. La masterclass cubre conceptos importantes incluyendo SSR, CSR, generación de sitios estáticos y despliegue de la aplicación usando adaptadores. Al final de la masterclass, los asistentes tendrán una sólida comprensión de la construcción de aplicaciones SvelteKit con integraciones de API y estarán preparados para el despliegue.