Rendimiento de Micro-Frontends y Caché de Datos Centralizada

Bookmark
Rate this content

Los mitos comunes sobre los Micro-Frontends sostienen que son malos para el rendimiento o que los desarrolladores que implementan este estilo arquitectónico no se preocupan por las implicaciones de rendimiento porque se están enfocando en mejorar la experiencia del desarrollador y los problemas organizacionales en lugar de centrarse en la experiencia del usuario, sin embargo, la realidad es completamente diferente. Los Micro-Frontends no son inherentemente malos para el rendimiento y, como suele ser el caso en el desarrollo de software, hacer el mejor uso de la tecnología depende de una implementación correcta. Esta charla demostrará cómo los Micro-Frontends pueden hacer que tus aplicaciones sean más rápidas y más resilientes mientras se mantienen los beneficios de los despliegues independientes.

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

FAQ

OneApp es un marco de micro front-end de código abierto utilizado por aproximadamente 2,000 desarrolladores en American Express. Sirve como un meta marco para mantener y mejorar la eficiencia y el rendimiento de las aplicaciones utilizadas por múltiples clientes a nivel mundial.

Los micro front-ends permiten implementaciones independientes, donde los equipos pueden trabajar en partes distintas del sitio web de manera autónoma, sin necesidad de reiniciar el servidor para cambios, y proporcionan una modularidad que facilita la gestión del desarrollo en grandes equipos.

El patrón Strangler es una estrategia utilizada para actualizar y mejorar gradualmente aplicaciones heredadas. Permite integrar nuevos marcos o tecnologías de manera incremental sin necesidad de reescribir completamente la aplicación existente.

Uno de los mayores mitos es que los micro front-ends son malos para el rendimiento debido a la mezcla de diferentes bibliotecas y frameworks en una misma página, como React, Angular, entre otros. Sin embargo, esto es un malentendido y no refleja las capacidades reales de los micro front-ends.

Se evitan las dependencias duplicadas utilizando técnicas como la federación de módulos, que permite compartir y reutilizar código eficientemente entre los diferentes micro front-ends, reduciendo así el tamaño total de los paquetes y mejorando la carga de las aplicaciones.

Cada micro front-end gestiona su propia carga de datos para mantener su independencia y evitar acoplamientos no deseados. Esto se complementa con técnicas como cachés compartidas para reducir llamadas redundantes a la API y optimizar el rendimiento.

Los micro front-ends mejoran la experiencia del desarrollador al permitir que diferentes equipos trabajen de forma independiente y específica en componentes de la aplicación, lo que lleva a una mayor eficiencia y menor riesgo de errores en un entorno de desarrollo organizado y modular.

Ruben Casas
Ruben Casas
27 min
22 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La arquitectura de micro front-end, como las carpas de micrófono, puede ayudar a escalar aplicaciones aplicando principios de microservicios al front-end. Las carpas de micrófono pueden ser beneficiosas para el rendimiento, dependiendo de la implementación. Pueden reducir los tamaños de los paquetes, evitar dependencias duplicadas y asegurar despliegues independientes. La API compartida y la federación de módulos son características poderosas que permiten la gestión de dependencias. Los micro front-ends pueden mejorar la experiencia del desarrollador y la experiencia del usuario mientras abordan problemas organizacionales y de escalado.

1. Introduction to Performance and Microphone Tents

Short description:

¡Hola a todos! El tema de hoy es el rendimiento. Soy ingeniero senior en American Express y trabajo en el marco de micro front-end llamado OneApp. Es de código abierto y lo utilizan 2,000 desarrolladores. Con millones de usuarios, el rendimiento es crucial. La arquitectura de micro front-end, como las carpas de micrófono, puede ayudar a escalar aplicaciones aplicando principios de microservicios al front-end. Los despliegues independientes son un beneficio clave. Sin embargo, hay muchos conceptos erróneos y mitos en torno a las carpas de micrófono.

Hola a todos, y bienvenidos a mi presentación. Hoy es un tema muy interesante, y se trata del rendimiento. Mi nombre es Ruben. Soy ingeniero senior en American Express, y ese es mi usuario de Twitter si quieren seguirme.

¿Qué hago en American Express? Bueno, soy parte de un equipo que mantiene un marco de micro front-end llamado OneApp. Es como un meta marco que usamos en American Express. Y este marco es de código abierto, y lo utilizan alrededor de 2,000 desarrolladores, así que hay un equipo de 2,000 desarrolladores en Amex que usan este marco, y también nuestras aplicaciones son utilizadas por múltiples clientes en todo el mundo.

Ahora la pregunta es, cuando tienes tantos usuarios, ¿cuál es la primera cosa que te viene a la mente? Bueno, el rendimiento. Necesitamos asegurarnos de que todos esos millones de usuarios tengan un gran rendimiento. Ahora, antes de comenzar con la sección de rendimiento, solo voy a sacar esto de en medio porque recibimos esto bastante. He visto este tweet tantas veces. ¿Las carpas de micrófono son una cosa ya? O la otra es, ¿por qué no podemos simplemente usar componentes? Permítanme responder esa pregunta muy brevemente antes de entrar en la sección de rendimiento. Bueno, las carpas de micrófono, sí, son una cosa. Y, además, han existido por un tiempo. No es como si fueran algo nuevo o una tecnología completamente nueva. Han existido por un tiempo. Básicamente, lo que pueden hacer es ayudarte a escalar tus aplicaciones aplicando los mismos principios que tienes para los microservicios al front-end.

Ahora, un pequeño descargo de responsabilidad aquí. No voy a intentar convencerte de que las carpas de micrófono son geniales y que deberías venir y empezar a usarlas mañana. No estoy aquí por eso hoy. Pero si usas carpas de micrófono, obtendrás beneficios realmente agradables. Como, el principal, en mi opinión, son los despliegues independientes. Entonces, si tienes un equipo grande o múltiples equipos, pueden desplegar de manera independiente. Pueden tener sus propios repositorios y pueden simplemente tener lo suyo, todo configurado y pueden desplegar de manera independiente. Diferentes partes del sitio web, de la aplicación web. La cosa con OneApp es que no tenemos que reiniciar el servidor. Puedes desplegar una nueva versión y se carga automáticamente sin reiniciar el servidor. Si no te convencí con esto, traje algo de pizza, si alguien quiere algo de pizza. ¡No estoy tratando de convencerte aquí! Ahora, hay un problema con las carpas de micrófono, un gran, gran problema. Este problema es que hay muchos conceptos erróneos, y hay muchos mitos en torno a las carpas de micrófono.

2. Microphone Tents and Performance

Short description:

El mayor mito sobre las carpas de micrófono es que son malas para el rendimiento. Esta idea errónea proviene de la creencia de que las carpas de micrófono implican mezclar múltiples frameworks en la misma página. Sin embargo, este es un mito falso. Aunque es posible usar múltiples frameworks en la misma página, no es necesariamente una buena idea. El patrón Strangler es un enfoque recomendado para migrar de una aplicación antigua a una nueva, permitiendo una transformación incremental de la UI. Las carpas de micrófono pueden ser beneficiosas para el rendimiento, dependiendo de la implementación.

El mayor de todos es que son malas para el rendimiento. Sí, ese es el mayor mito sobre las carpas de micrófono, y déjame solo... hay una razón para esto, y he encontrado por qué la gente piensa que las carpas de micrófono son malas para el rendimiento. Y la razón es, bueno, la gente piensa que las carpas de micrófono se tratan de mezclar bibliotecas en la misma página, así que tenemos React, y Angular, y Vue, y Svelte, y Infinity Dash en la misma página. ¿Es eso de lo que se tratan las carpas de micrófono? Bueno, déjame decirte que este es un mito falso, y por eso la gente piensa que las carpas de micrófono son malas para el rendimiento.

Lo primero que encuentran sobre las carpas de micrófono es que se trata de React, Angular, y todo en la página. Déjame preguntar, ¿es eso una buena idea? ¿Es eso una buena idea? Mi amigo Ken piensa que es una buena idea. No es una buena idea. Puedes, sí, puedes usar React, y Angular, y todos estos frameworks en la misma página, pero solo porque puedes, no significa que debas. Así que, aunque, este es solo un caso, un caso de uso específico donde podría ser una buena idea. No es genial, pero es un caso de uso válido tener múltiples frameworks en la misma página. Y este es el patrón Strangler.

El patrón Strangler es lo mejor que puedes hacer si estás migrando de una aplicación antigua, como una aplicación heredada a una nueva. ¿Cuántos de ustedes aquí han tenido que reescribir su antigua aplicación AngularJS en React? ¡Yo! Es muy común. Así que, estos son casos de uso muy comunes. Durante los últimos cinco, seis, siete años, AngularJS no es bueno, reemplazémoslo con React. ¿Qué hacemos? Simplemente detenemos completamente el desarrollo, decimos a los gerentes de producto, lo siento, no podemos hacer más características porque AngularJS es malo y no podemos mantenerlo. Necesitamos reemplazarlo con React. Lo primero que te dirán es, ¿qué? ¡No! ¡No puedes hacer eso! Quiero decir, probablemente algunas personas lo hacen. Lo que el patrón Strangler te ayudará a hacer es ayudarte a transformar tu aplicación de manera incremental. No tienes que hacer como una transformación de gran explosión, lanzamiento, reescritura de toda la aplicación. Lo que puedes hacer es comenzar a aplicar el patrón de micro front-end y el patrón Strangler para mejorar diferentes piezas de la UI.

Lo mejor es, bueno, ¿podemos comenzar ruta por ruta? Sí, puedes, pero cuando tienes múltiples piezas en la misma página que necesitas cambiar, y a veces una página es mucho trabajo, es como si toda la aplicación fuera una página. Con las carpas de micrófono, lo que puedes hacer es comenzar desde una parte muy pequeña en esa página que va a usar React, el resto va a usar Angular, y luego en algún momento, esta es la clave, eliminas Angular. No mantienes ambos en la misma página por el rendimiento. Sí, no deberíamos hacer eso. Así que este es el único caso donde podría ser útil tener múltiples frameworks en la misma página. Así que las carpas de micrófono pueden ser buenas para el rendimiento. Descargo de responsabilidad allí, como una estrella, letra pequeña. Depende de tu implementación. Todo en arquitectura, depende de cómo lo implementes.

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

Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
How React Compiler Performs on Real Code
React Advanced 2024React Advanced 2024
31 min
How React Compiler Performs on Real Code
Top Content
I'm Nadia, a developer experienced in performance, re-renders, and React. The React team released the React compiler, which eliminates the need for memoization. The compiler optimizes code by automatically memoizing components, props, and hook dependencies. It shows promise in managing changing references and improving performance. Real app testing and synthetic examples have been used to evaluate its effectiveness. The impact on initial load performance is minimal, but further investigation is needed for interactions performance. The React query library simplifies data fetching and caching. The compiler has limitations and may not catch every re-render, especially with external libraries. Enabling the compiler can improve performance but manual memorization is still necessary for optimal results. There are risks of overreliance and messy code, but the compiler can be used file by file or folder by folder with thorough testing. Practice makes incredible cats. Thank you, Nadia!

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
Workshop
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Micro Frontends with Module Federation and React
JSNation Live 2021JSNation Live 2021
113 min
Micro Frontends with Module Federation and React
Top Content
Workshop
Alex Lobera
Alex Lobera
¿Alguna vez trabajaste en una aplicación monolítica de Next.js? Yo sí, y escalar una gran aplicación de React para que muchos equipos puedan trabajar simultáneamente no es fácil. Con micro frontends, puedes dividir un monolito de frontend en piezas más pequeñas para que cada equipo pueda construir y desplegar de manera independiente. En este masterclass, aprenderás cómo construir grandes aplicaciones de React que escalen utilizando micro frontends.
Depuración del Rendimiento de React
React Advanced 2023React Advanced 2023
148 min
Depuración del Rendimiento de React
Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Veía una interacción lenta, probaba una optimización aleatoria, veía que no ayudaba, y seguía probando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Hacía una grabación en Chrome DevTools o React Profiler, la examinaba, intentaba hacer clic en cosas al azar, y luego la cerraba frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos cómo analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, cubriremos el rendimiento de interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Workshop
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
Masterclass de alto rendimiento Next.js
React Summit 2022React Summit 2022
50 min
Masterclass de alto rendimiento Next.js
Workshop
Michele Riva
Michele Riva
Next.js es un marco convincente que facilita muchas tareas al proporcionar muchas soluciones listas para usar. Pero tan pronto como nuestra aplicación necesita escalar, es esencial mantener un alto rendimiento sin comprometer el mantenimiento y los costos del servidor. En este masterclass, veremos cómo analizar el rendimiento de Next.js, el uso de recursos, cómo escalarlo y cómo tomar las decisiones correctas al escribir la arquitectura de la aplicación.