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.

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.

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.

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.

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
¿Tienes un producto grande construido por muchos equipos? ¿Estás luchando para lanzar a menudo? ¿Se convirtió tu frontend en un monolito inmantenible masivo? Si, como yo, has respondido sí a cualquiera de esas preguntas, ¡esta charla es para ti! Te mostraré exactamente cómo puedes construir una arquitectura de micro frontend con Remix para resolver esos desafíos.
De Monolito a Micro-Frontends
React Advanced Conference 2022React Advanced Conference 2022
22 min
De Monolito a Micro-Frontends
Top Content
Muchas empresas en todo el mundo están considerando adoptar Micro-Frontends para mejorar la agilidad empresarial y la escala, sin embargo, hay muchas incógnitas cuando se trata de cómo se ve en la práctica el camino de migración. En esta charla, discutiré los pasos necesarios para migrar con éxito una aplicación React monolítica a una arquitectura de frontend más modular y desacoplada.
Micro-Frontends con React y Federación de Módulos Vite
React Advanced Conference 2023React Advanced Conference 2023
20 min
Micro-Frontends con React y Federación de Módulos Vite
Top Content
Desde mi experiencia, una de las cosas más difíciles es compartir información entre microfrontends, por lo que en esta charla me gustaría explicar varias formas de compartir un sistema de diseño para garantizar la uniformidad de la aplicación. Otra cosa difícil es compartir dependencias, afortunadamente con la federación de módulos se puede hacer, pero ¿cómo puedo usar diferentes versiones de la misma biblioteca y cómo funciona detrás de escena?
Soy el creador de la biblioteca module-federation/vite, con React y esta biblioteca, me gustaría mostrarte cómo puedes lograr estos resultados configurando todo correctamente.
Microfrontends Federados a Gran Escala
React Summit 2023React Summit 2023
31 min
Microfrontends Federados a Gran Escala
Top Content
La charla será una historia de cómo Personio pasó de renderizar a través de una arquitectura PHP monolítica, a una aplicación Next JS orientada a microfrontends, impulsada por la Federación de Módulos y la cadena de herramientas del monorepositorio NX.
Compartir es Cuidar: ¿Deberían los Micro Frontends Compartir Estado?
React Summit 2022React Summit 2022
23 min
Compartir es Cuidar: ¿Deberían los Micro Frontends Compartir Estado?
La arquitectura de micro frontends es extremadamente poderosa cuando se trata de dividir grandes monolitos frontends en bloques más pequeños y desplegables de forma individual, cada uno propiedad de un equipo autónomo y enfocado en un dominio empresarial. Pero, ¿qué pasa con el Estado? A menudo se nos dice que los micro frontends no deben compartir estado, ya que esto los acoplaría entre sí. Sin embargo, cuando se trata de interfaces de usuario complejas, no es raro encontrarse con escenarios donde es necesario gestionar el estado entre micro frontends. Esta charla trata sobre encontrar el punto óptimo: ¿En qué escenarios es razonable que los micro frontends compartan estado? ¿Y cómo deberían compartir estado los micro frontends manteniéndose desacoplados entre sí? Discutimos y comparamos diferentes soluciones en React.
“Microfrontends” para móviles en React Native
React Advanced Conference 2023React Advanced Conference 2023
24 min
“Microfrontends” para móviles en React Native
La escalabilidad siempre ha sido un problema en el desarrollo de software. Los arquitectos han estado luchando para resolver este problema en muchas capas. A principios de la década de 2000, comenzó a surgir un concepto de “micro-servicios” - un sistema podría dividirse por dominio empresarial en una serie de servicios más pequeños y poco acoplados.
Más recientemente, este concepto ha comenzado a ser adoptado por la comunidad de frontend. Una aplicación podría dividirse en múltiples sub-aplicaciones, cada una con sus propios equipos, tecnologías y bases de código. Empresas como Spotify, Amazon y Microsoft han adoptado este enfoque y les ha ayudado a escalar aún más rápido.
En el mundo del desarrollo móvil, surge la pregunta: “¿Podemos crear Microfrontends para aplicaciones móviles?”.

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.