Adoptando Micro-Frontends Sin Micro-Frontends

Rate this content
Bookmark

Los micro-frontends ayudan a descomponer aplicaciones front-end monolíticas en aplicaciones independientes y desacopladas que se pueden implementar de forma independiente. Esta arquitectura nos ayuda a escalar proyectos a medida que la organización crece, sin embargo, también aumenta la complejidad. ¿Cómo podemos aprovechar esta arquitectura sin tener que enfrentar su costo inicial? En esta charla, mostraré algunos de los riesgos asociados con los micro-frontends y qué patrones y bibliotecas podemos utilizar para beneficiarnos de este estilo arquitectónico sin tener que adoptar completamente los micro-frontends.

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

FAQ

Un microfrontend es un estilo arquitectónico donde aplicaciones frontend independientes se componen en un todo mayor, permitiendo escalabilidad empresarial y facilitando la colaboración en proyectos grandes.

El principal beneficio de los microfrontends es la escalabilidad empresarial, que permite agregar más personas al proyecto, aumentando así la productividad y la eficiencia en el desarrollo de aplicaciones.

La independencia en microfrontends puede afectar negativamente el rendimiento por duplicación de recursos y afectar la consistencia de la interfaz de usuario al requerir más gestión sobre cómo se comparten y sincronizan los datos y estados entre componentes.

Los principios LEAN en microfrontends sugieren que deben estar débilmente acoplados, tener fronteras sólidas y bien definidas, ejecutarse de forma independiente, y estar enfocados en un dominio empresarial específico para facilitar el desarrollo autónomo y eficiente.

En sistemas de microfrontends, es recomendable no compartir la lógica de manipulación del estado para mantener la independencia y confiabilidad, aunque cierto estado puede compartirse si se hace de manera controlada y consciente de las dependencias.

Las desventajas incluyen problemas de rendimiento, como la duplicación de código y solicitudes, y problemas de consistencia y confiabilidad entre los diferentes microfrontends, especialmente cuando no se comparte el estado entre ellos.

Alex Lobera
Alex Lobera
30 min
21 Oct, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de hoy explora la adopción de micro frontends sin implementarlos realmente. Los principales beneficios de los micro frontends son la escalabilidad empresarial y la capacidad de implementar y componer aplicaciones front-end de forma independiente. El proceso de descomponer un monolito en partes más pequeñas se puede realizar utilizando los principios LEAN y aplicaciones componibles. La gestión del estado y el intercambio de datos en los micro frontends son temas complejos que requieren una cuidadosa consideración para evitar el acoplamiento y mantener el desacoplamiento.

1. Introducción a los Micro Frontends

Short description:

Hoy voy a hablar de adoptar micro frontends sin micro frontends. ¿Qué es un microfrontend? Es un estilo arquitectónico donde las aplicaciones frontend independientes se componen en un todo mayor. El principal beneficio de los microfrontends es la escalabilidad empresarial. Sin embargo, existen desventajas como problemas de rendimiento y consistencia.

Hoy voy a hablar de adoptar micro frontends sin micro frontends. Ruben, el orador anterior, dio una gran charla y yo solo estaba allí mirando lo que estaba diciendo. Me quedé asombrado, realmente explicó todo. Así que ahora voy a intentar convencerte de cómo tal vez no seguir ese camino hasta el final.

¿Quién soy yo? Alex. Me presentaron. Actualmente trabajo para Miro. Si no conoces Miro, es un frontend muy complejo. Muy desafiante. Es una plataforma de colaboración en tiempo real infinita. Realmente desafiante. Si quieres unirte al desafío, puedes unirte a la empresa. Y hoy, ya que Ruben no te dio la definición, aquí estoy yo. Te la voy a dar. ¿Qué es un microfrontend? Y esta es la definición canónica que encontrarás en cualquier publicación de blog y charla de conferencia que se escribió hace unos años y básicamente dice que es un estilo arquitectónico donde las aplicaciones frontend independientes se componen en un todo mayor.

Entonces, ¿cuál es el punto de los microfrontends? ¿Qué obtienes? El principal beneficio es la escalabilidad empresarial. Y significa que puedes agregar más personas a tu proyecto, y digamos que duplicas el número de personas que trabajan allí, entonces duplicas el resultado. Y lo haces porque son cosas independientes, ¿verdad? Puedes agregar un nuevo flujo, un nuevo flujo de valor, y así sucesivamente, y por eso es escalable. No confundir con, por ejemplo, la plataforma o dónde se ejecuta tu software, porque tu aplicación frontend se ejecutará en algún momento, a menos que no tengas JavaScript, en un navegador, y no podrás escalar ese hilo. Entonces, ¿cuáles son las desventajas? Primero está el rendimiento. Sabes, puedes afectar el rendimiento de dos formas diferentes. Una es tu aplicación. Estás haciendo las cosas muy independientes, por lo que puedes duplicar o no cierto código. Ya sabes, lo clásico. Descargas el mismo framework dos veces. También necesitas ejecutar cosas, algunas cosas puedes ejecutarlas dos veces, y también tal vez solicitar datos dos veces, pero también tus equipos, tal vez porque estás haciendo las cosas, si estás realmente enfocado en hacer las cosas muy independientes, tal vez duplican el trabajo, crean CI pipelines para repositorios muy diferentes, y así sucesivamente. También puedes afectar la consistencia por la misma razón, simplemente haciendo las cosas independientes. Ahora, si lees cualquier artículo, la mayoría de las charlas sobre micro-frontends dicen que no compartas ningún estado. No deberías hacer eso. La razón es porque quieres que las cosas sean independientes, pero si no compartes ese estado, mantienes, si cambias el idioma en un micro-frontend, supongo que quieres cambiar el idioma en el otro, ¿cómo lo sabes? ¿Cómo lo solucionas? Lo mismo con el diseño.

2. Confiabilidad y Micro Frontends

Short description:

Puedes crear un sistema de diseño con diferentes versiones. La confiabilidad es crucial para la ejecución del código. Tomemos como ejemplo Twitter. Dividiéndolo en micro frontends, tenemos un micro frontend para el feed y otro para las respuestas. Se pueden implementar diferentes versiones, pero si son independientes, deberían funcionar.

Puedes crear un sistema de diseño, pero también puedes tener diferentes versiones de tu diseño sistema, así. Y luego la confiabilidad. Y con confiabilidad me refiero a que cuando ejecutas algún código, básicamente no debería fallar, ¿verdad? Una vez que el código se ejecuta, debería producir el resultado esperado. Esas son, ya sabes, hay formas de solucionar eso y mejorar esas cosas y mitigar muchas de esas cosas. Rendimiento y consistencia. Pero no es el caso con la confiabilidad.

Permíteme darte un ejemplo. Voy a usar Twitter como ejemplo aquí. Digamos que queremos dividir Twitter en micro frontends. Y así, tenemos esta página que contiene, esta es la página de inicio. Es una página de feed y crearemos un micro frontend para el feed. Cuando haces clic en ese botón, muestra un modelo y podríamos crear otro micro frontend para eso. Es un equipo diferente, un equipo de participación, lo que sea. Es un micro frontend, lo llamaremos micro frontend de respuestas.

Lo que va a suceder es que, en algún momento, tenemos estas dos versiones, todo funciona. Entonces, el usuario va a Twitter, luego el usuario recibe un HTML que dice, oh, necesitas descargar este JavaScript para el feed. Y así, eso está bien, funciona. Se muestra en el navegador. Pero luego en segundo plano, se implementa la versión dos de ese micro frontend. Puedes probar eso, también puedes probar eso, asegurarte de que el recorrido donde el usuario está en un feed y responde a un tweet, funcione. Puedes ejecutar algunas pruebas de integración, funciona, lanzamiento. Luego se implementa una nueva versión. Puedes hacer lo mismo. Puedes probar, lanzar, y así sucesivamente. En este momento, el usuario no respondió, por lo que no ejecutó esa acción. En algún momento posterior, el usuario quiere responder a algún tweet, y luego obtiene la versión tres de este microfrontend. Entonces, la pregunta es, ¿funcionará? Nunca lo probamos, ¿verdad? Podrías probarlo, pero imagina que crece exponencialmente. Cuantas más versiones haya y más micro frontends haya, será un trabajo enorme, por lo que probablemente no lo pruebes. ¿Funcionará? Bueno, la respuesta es que si son completamente independientes, deberían funcionar. ¿Verdad? Así que está bien.

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

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.
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.
Micro-Frontends con React y Federación de Módulos Vite
React Advanced 2023React Advanced 2023
20 min
Micro-Frontends con React y Federación de Módulos Vite
Top Content
Microfrontends is an architecture used by big companies to split monolithic frontend applications into manageable parts. Maintaining a consistent look and feel across different microfrontends is a challenge. Sharing styles can be done through Vanilla CSS, CSS modules, or CSS in JS. JavaScript variables can be used in styles, but readability and runtime overhead are considerations. Sharing state in microfrontends can be achieved through custom events, broadcast channels, shared state managers, or custom PubSub implementations. Module federation with Vite allows for client composition and sharing dependencies. Configuration is similar to Webpack, and future work includes working on the QUIC framework.
Microfrontends Federados a Gran Escala
React Summit 2023React Summit 2023
31 min
Microfrontends Federados a Gran Escala
Top Content
This Talk discusses the transition from a PHP monolith to a federated micro-frontend setup at Personio. They implemented orchestration and federation using Next.js as a module host and router. The use of federated modules and the integration library allowed for a single runtime while building and deploying independently. The Talk also highlights the importance of early adopters and the challenges of building an internal open source system.
“Microfrontends” para móviles en React Native
React Advanced 2023React Advanced 2023
24 min
“Microfrontends” para móviles en React Native
Top Content
Micro frontends are an architectural style where independent deliverable frontend applications compose a greater application. They allow for independent development and deployment, breaking down teams into feature verticals. React Native's architecture enables updating the JavaScript layer without going through the app store. Code Push can be used to deploy separate JavaScript bundles for each micro frontend. However, there are challenges with managing native code and dependencies in a micro frontend ecosystem for mobile apps.
Compartir es Cuidar: ¿Cómo Deberían los Micro Frontends Compartir Estado?
React Summit 2022React Summit 2022
23 min
Compartir es Cuidar: ¿Cómo Deberían los Micro Frontends Compartir Estado?
Top Content
Micro-frontends allow development teams to work autonomously and with less friction and limitations. Organizing teams around business concerns, in alignment with subdomains, rather than technical concerns, can lead to software that is split nicely and user stories falling under the responsibility of a single team. Having a logical backup or reference point is important for implementing microfrontends without breaking their isolation. Microfrontends can communicate with each other using the window object and custom events. Microfrontends should be kept isolated while maintaining communication through various approaches.

Workshops on related topic

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.
Microfrontends con Module Federation y Angular
JSNation Live 2021JSNation Live 2021
113 min
Microfrontends con Module Federation y Angular
Workshop
Manfred Steyer
Manfred Steyer
Cada vez más empresas eligen Microfrontends. Sin embargo, no son fáciles de implementar. Afortunadamente, Module Federation introducido con webpack 5 ha iniciado un cambio crucial de dirección.
En este masterclass interactivo, aprenderás de Manfred Steyer, Angular GDE y Colaborador de Confianza en el equipo de Angular, cómo planificar e implementar arquitecturas de Microfrontend con Angular y el nuevo Module Federation de webpack. Hablaremos sobre compartir bibliotecas y conceptos avanzados como manejar desajustes de versión, Module Federation dinámico e integración en monorepos.
Después de los ejercicios individuales, tendrás un estudio de caso que podrás utilizar como plantilla para tus proyectos. Este masterclass te ayuda a evaluar las opciones individuales para tus proyectos.
Prerrequisitos:Debes tener algo de experiencia con Angular.