Rendimiento de Micro-Frontends y Caché de Datos Centralizada

Rate this content
Bookmark

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 centran en solucionar los problemas de experiencia del desarrollador y 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, aprovechar al máximo 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 resistentes mientras se mantienen los beneficios de las implementaciones 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 tiendas de micrófonos, puede ayudar a escalar aplicaciones aplicando los principios de microservicios al front-end. Las tiendas de micrófonos pueden ser beneficiosas para el rendimiento, dependiendo de la implementación. Pueden reducir el tamaño de los paquetes, evitar dependencias duplicadas y garantizar implementaciones 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 al abordar problemas organizativos y de escalabilidad.

1. Introducción al rendimiento y a las carpas de micrófono

Short description:

¡Hola a todos! El tema de hoy es el rendimiento. Soy un ingeniero senior en American Express y trabajo en el marco de micro front-end llamado OneApp. Es de código abierto y es utilizado por 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 las aplicaciones aplicando los principios de microservicios al front-end. Las implementaciones independientes son un beneficio clave. Sin embargo, existen muchos conceptos erróneos y mitos alrededor de las carpas de micrófono.

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

¿Qué hago en American Express? Bueno, formo parte de un equipo que mantiene un marco de micro front-end llamado OneApp. Es como un meta marco que utilizamos en American Express. Y este marco es de código abierto, y es utilizado por aproximadamente 2,000 desarrolladores, por lo que hay un equipo de 2,000 desarrolladores en Amex que utilizan 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, ¿qué es lo primero que se te viene a la mente? Bueno, el rendimiento. Necesitamos asegurarnos de que todos esos millones de usuarios tengan un buen rendimiento. Ahora, antes de comenzar con la sección de rendimiento, voy a sacar esto de en medio porque nos preguntan esto bastante. He visto este tweet muchas veces. ¿Las carpas de micrófono ya son una cosa? O la otra pregunta es, ¿por qué no podemos simplemente usar componentes? Permítanme responder esa pregunta brevemente antes de entrar en la sección de rendimiento. Bueno, las carpas de micrófono, sí, son una cosa. Y, además, han estado presentes desde hace un tiempo. No es como si fueran algo nuevo o una tecnología completamente nueva. Han estado presentes durante 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 aviso aquí. No voy a tratar de convencerte de que las carpas de micrófono son geniales y que deberías empezar a usarlas mañana. Ese no es el motivo por el que estoy aquí hoy. Pero si usas carpas de micrófono, obtendrás beneficios realmente buenos. Como el principal, en mi opinión, que son las implementaciones independientes. Entonces, si tienes un equipo grande o varios equipos, pueden implementar de forma independiente. Pueden tener sus propios repositorios y simplemente hacer su propia cosa, todo se configura y pueden implementar de forma independiente. Diferentes partes del sitio web, de la aplicación web. Lo bueno de OneApp es que no tenemos que reiniciar el servidor. Puedes implementar una nueva versión y se carga automáticamente sin reiniciar el servidor. Si no te he convencido con esto, traje algo de pizza, si alguien quiere 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 existen muchos conceptos erróneos y mitos alrededor de las carpas de micrófono.

2. Carpas de Micrófono y Rendimiento

Short description:

El mayor mito sobre las carpas de micrófono es que son malas para el rendimiento. Esta idea errónea se basa en la creencia de que las carpas de micrófono implican mezclar múltiples frameworks en la misma página. Sin embargo, esto es un mito falso. Si bien es posible utilizar múltiples frameworks en la misma página, no siempre es 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 interfaz de usuario. Las carpas de micrófono pueden ser beneficiosas para el rendimiento, dependiendo de la implementación.

El mayor mito, con diferencia, es que son malas para el rendimiento. Sí, ese es el mayor mito sobre las carpas de micrófono, y permítanme decirles... hay una razón para esto, y he descubierto por qué la gente piensa que las carpas de micrófono son malas para el rendimiento. Y la razón es que la gente piensa que las carpas de micrófono consisten en mezclar bibliotecas en la misma página, por lo que tenemos React, Angular, Vue, Svelte e Infinity Dash en la misma página. ¿Es eso de lo que se tratan las carpas de micrófono? Bueno, permítanme decirles 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. Permítanme preguntarles, ¿es eso una buena idea? ¿Es eso una buena idea? Mi amigo Ken cree que sí es una buena idea. No es una buena idea. Sí, pueden usar React, Angular y todos estos frameworks en la misma página, pero solo porque pueden, no significa que deban hacerlo. Aunque hay un caso, un caso de uso específico donde podría ser una buena idea. No es genial, pero es un caso válido de 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 han tenido que reescribir su antigua aplicación AngularJS en React? ¡Yo! Es muy común. Estos son casos de uso muy comunes. Durante los últimos cinco, seis, siete años, AngularJS no es bueno, así que lo reemplazamos con React. ¿Qué hacemos? Simplemente detenemos por completo el desarrollo, decimos a los gerentes de producto: lo siento, no podemos agregar más funciones 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 transformar tu aplicación de forma incremental. No tienes que hacer una transformación completa de golpe, reescribir 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 partes de la interfaz de usuario.

Lo mejor es, ¿podemos comenzar ruta por ruta? Sí, puedes hacerlo, pero cuando tienes múltiples partes 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 utilizar React, el resto va a utilizar Angular, y luego en algún momento, esto es clave, eliminas Angular. No mantienes ambos en la misma página ¡por el rendimiento! Sí, no deberíamos hacer eso. 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, como una estrella, letra pequeña. Depende de tu implementación. Todo en la 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.
Optimización de juegos HTML5: 10 años de aprendizaje
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Optimización de juegos HTML5: 10 años de aprendizaje
Top Content
PlayCanvas is an open-source game engine used by game developers worldwide. Optimization is crucial for HTML5 games, focusing on load times and frame rate. Texture and mesh optimization can significantly reduce download sizes. GLTF and GLB formats offer smaller file sizes and faster parsing times. Compressing game resources and using efficient file formats can improve load times. Framerate optimization and resolution scaling are important for better performance. Managing draw calls and using batching techniques can optimize performance. Browser DevTools, such as Chrome and Firefox, are useful for debugging and profiling. Detecting device performance and optimizing based on specific devices can improve game performance. Apple is making progress with WebGPU implementation. HTML5 games can be shipped to the App Store using Cordova.

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 WorkshopFree
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 🤐)
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Featured WorkshopFree
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.
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
WorkshopFree
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 con Module Federation y React
JSNation Live 2021JSNation Live 2021
113 min
Micro Frontends con Module Federation y React
Workshop
Alex Lobera
Alex Lobera
¿Alguna vez has trabajado 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 frontend en piezas más pequeñas para que cada equipo pueda construir e implementar de forma independiente. En este masterclass aprenderás cómo construir aplicaciones de React grandes 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 🤐)
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.