Libertad de plataforma con Micro-frontends

Rate this content
Bookmark
Slides

¿Pueden las aplicaciones de React y TypeScript ejecutarse en diferentes plataformas (carcasas de aplicaciones) con cambios mínimos en el código fuente? ¡Sí! con la estrategia de Micro-frontend en la arquitectura Multiplying. Presentaré una nueva dimensión de Micro-frontend que allanó el camino para desacoplar los componentes de una aplicación React monolítica más grande utilizando un nuevo marco llamado arquitectura Multiplying. El marco es altamente flexible y escalable para el desarrollo de código, y también ayuda a los negocios y a la comunidad.

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

FAQ

Los Microfrontends son un estilo arquitectónico que divide una aplicación frontend monolítica en múltiples unidades independientes. Cada unidad puede ser desarrollada y mantenida por equipos diferentes, lo que permite una mayor escalabilidad y flexibilidad en el desarrollo de aplicaciones web.

Las principales ventajas incluyen la independencia en el desarrollo y despliegue, ciclos de lanzamiento específicos por equipo, y la capacidad de usar tecnologías específicas para diferentes partes de la aplicación sin afectar el resto del sistema.

Existen principalmente dos estrategias: la integración en tiempo de ejecución, donde cada Microfrontend se carga dinámicamente en la aplicación, y la integración en tiempo de compilación, donde los componentes se ensamblan durante el proceso de compilación.

La arquitectura Multiplication fue diseñada para facilitar la ejecución de aplicaciones en múltiples plataformas con mínimos cambios en el código, mejorando la interoperabilidad y reduciendo los esfuerzos de mantenimiento al permitir un desarrollo más modular y desacoplado.

Una solución es utilizar módulos federados, que permiten compartir bibliotecas y dependencias entre diferentes Microfrontends, reduciendo así la cantidad de código duplicado y disminuyendo el tamaño de la aplicación.

Un BFF es una capa intermedia que actúa como intermediario entre los Microfrontends y los servicios de backend, optimizando las respuestas y cargas de trabajo de acuerdo con las necesidades específicas de los frontends, mejorando así la eficiencia en la comunicación entre las partes.

La estrategia de CSS en JS permite encapsular estilos dentro de componentes JavaScript, evitando así conflictos de estilos entre diferentes Microfrontends y asegurando que los estilos no se sobrescriban unos a otros.

Saravana Srinivasan
Saravana Srinivasan
31 min
24 Oct, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla explora las estrategias de Microfrontend y los beneficios de usar la arquitectura Multiplying para implementar aplicaciones en múltiples plataformas. Se discuten los conceptos de libertad de plataforma, implementación de Microfrontend y Backend for Frontend (BFF). La charla también destaca los desafíos de depuración y estilización en aplicaciones de Microfrontend más grandes e introduce la arquitectura Multiplying como solución. Se explican los elementos principales de la arquitectura Multiplying y cómo permite la comunicación entre diferentes pilas tecnológicas. La charla concluye mostrando el uso de listas incrustadas, módulos federados y configuración de Webpack para lograr un intercambio eficiente de código y implementación en múltiples distribuciones.

1. Platform Freedom with Microfrontends

Short description:

Esta charla te llevará a través de las estrategias de Microfrontend, los problemas que resuelve la arquitectura de Microfrontend, un nuevo marco de trabajo que se construyó sobre las estrategias de Microfrontend y cómo esta multiplicación del nuevo marco de trabajo nos ayudó a implementar nuestras aplicaciones en múltiples sistemas distribuidos. Quería compartir la experiencia que tuvimos y las lecciones que aprendimos al implementar ciertos casos de uso. Comenzamos con microamistades y luego introdujimos un marco de trabajo llamado la arquitectura de multiplicación. Y tuvimos ciertos aprendizajes de ello. Y finalmente, con la colaboración de las estrategias de microamistad, junto con la arquitectura de micro-multiplicación, logramos nuestros resultados. En primer lugar, me gustaría abordar mi tema de libertad de plataforma con microamistad y quiero enfatizar lo que quiero decir con el término libertad de plataforma. Todos sabemos que la tecnología web domina completamente la industria del desarrollo de software en este momento. Y la tecnología web se ha convertido en la opción predeterminada para la mayoría de los desarrolladores y las empresas que desean desarrollar una aplicación o un producto para su caso de uso.

Hola, y bienvenidos a todos a la charla, Libertad de plataforma con Microfrontends. Esta charla te llevará a través de las estrategias de Microfrontend, los problemas que resuelve la arquitectura de Microfrontend, un nuevo marco de trabajo que se construyó sobre las estrategias de Microfrontend y cómo esta multiplicación del nuevo marco de trabajo nos ayudó a implementar nuestras aplicaciones en múltiples sistemas distribuidos.

Antes de entrar en el tema, permítanme presentarme, soy Saravan Balaji Srinivasan, trabajo como ingeniero de software senior en Red Hat como desarrollador full stack con un enfoque principalmente en las tecnologías JavaScript. Trabajo en áreas donde construimos herramientas para productos de automatización empresarial y especificaciones de flujos de trabajo sin servidor, etc. Eso es todo sobre mí. Y volvamos al tema.

Me gustaría comenzar con la historia de Red Hat. Quería llevar esta charla de tal manera que pudiera compartir la experiencia que tuvimos y las lecciones que aprendimos al implementar ciertos casos de uso. Hace algún tiempo, teníamos un caso de uso en el que queríamos implementar ciertas herramientas que construimos para ejecutar en varias plataformas, y queríamos reutilizar los componentes que creamos en React JS. Esa fue la idea detrás de la historia. Comenzamos con microamistades y luego introdujimos un marco de trabajo llamado la arquitectura de multiplicación. Tuvimos ciertos aprendizajes de ello. Y finalmente, con la colaboración de las estrategias de microamistad, junto con la arquitectura de micro-multiplicación, logramos nuestros resultados. La próxima diapositiva mostrará cómo lo logramos. En primer lugar, me gustaría abordar mi tema de libertad de plataforma con microamistad y quiero enfatizar lo que quiero decir con el término libertad de plataforma. Todos sabemos que la tecnología web domina completamente la industria del desarrollo de software en este momento. Y la tecnología web se ha convertido en la opción predeterminada para la mayoría de los desarrolladores y las empresas que desean desarrollar una aplicación o un producto para su caso de uso. Esto se debe a que la tecnología web tiene una base sólida. Tiene estándares sólidos, patrones, técnicas. Y las arquitecturas de la tecnología web están evolucionando muy rápido a lo largo del tiempo. También tiene un ecosistema rico. Cuando hablamos de tecnologías web, no podemos ignorar JavaScript. Ahora, en este momento, JavaScript está en todas partes. Aunque inicialmente comenzó como un lenguaje de scripting para un propósito pequeño, ahora ha evolucionado a lo largo del tiempo y puedes encontrar JavaScript en todas partes en tu navegador. En el navegador de tu computadora portátil, en tus teléfonos móviles, en tu PWA, en tus servidores, en todas partes puedes ver JavaScript ahora. Además, después de la introducción de TypeScript, personalmente siento que, debido a su comportamiento de verificación de tipos estáticos, la percepción de los desarrolladores sobre la tecnología web ha cambiado por completo. Personas como yo que comenzaron mi carrera en la tecnología Java, como desarrollador de Java, después me convertí en ingeniero de JavaScript y luego, para la tecnología web y todo eso, como ingeniero full stack ahora, comencé a gustar la tecnología web después de aprender TypeScript, porque mi código es totalmente seguro en cuanto a tipos. También enfatizaré que el navegador está en todas partes en este momento, ¿verdad? Puedes tener tu navegador en tu computadora portátil, puedes tenerlo en tu móvil y servidores, y PWA, etc.

2. Estrategias de Plataforma y Microfrontend

Short description:

El objetivo es ejecutar aplicaciones en múltiples plataformas como VS Code, navegadores y GitHub. La tecnología web ha evolucionado rápidamente, comenzando con la arquitectura evolutiva, seguida de microservicios y sin servidor. Las estrategias de microfrontend se utilizan para descomponer aplicaciones monolíticas en aplicaciones frontend más pequeñas y entregables de forma independiente. Cada microfrontend puede ser propiedad y mantenida por un equipo individual y autónomo.

Ahora, el navegador no es solo una ventana para acceder a Internet. Por lo tanto, puedes mostrar tu interfaz de usuario gráfica en cualquier lugar de tu navegador y puede ejecutarse en cualquier plataforma. Entonces, lo que quiero decir con plataforma en mi tema es que la aplicación debe ejecutarse en plataformas. En nuestro caso de uso, las plataformas que queríamos lograr son ejecutar nuestras aplicaciones en el IDE de VS Code como una extensión. Y debe ejecutarse en el navegador como una extensión. Tal vez en el caso de Chrome, debe ejecutarse como una extensión de Chrome. Y en el caso de Firefox, debe ejecutarse como una extensión de Firefox. Y el mismo conjunto de código, el mismo conjunto de componentes debe ejecutarse en la aplicación web y también en GitHub como una extensión de GitHub. Este fue el objetivo final que queríamos lograr. Para ello, quiero que mis dos enlaces se ejecuten en VS Code, GitHub, navegador como una aplicación web y también en el...

Al implementar esto, analizamos la arquitectura que tenemos en la tecnología web. La tecnología web, como mencioné en la diapositiva anterior, está creciendo muy rápido. Comenzando con la arquitectura evolutiva, que admite cambios incrementales guiados como un primer principio en múltiples dimensiones. Luego viene el rompedor de camino, que llamamos microservicios, que permite que el backend se divida en microservicios más pequeños y desacoplados que pueden ejecutarse de forma independiente. Y luego viene la palabra de moda en este momento, que es sin servidor, donde el backend es un servicio. Puedes implementar tu función en un servidor y pagar solo por la cantidad de veces que se llama la función y el tiempo que se utiliza. Puedes pagar solo por eso en lugar de poseer todo el servidor. Y finalmente, tenemos el término microfrontend, que nuevamente, desde donde pensamos en implementar estrategias de microfrontend para un caso de uso. Esto me lleva a la siguiente diapositiva nuevamente.

Supongo que la mayoría de ustedes ya han probado algo en las estrategias de microfrontend o tal vez hayan escuchado el término, pero aún así me gustaría repasar las estrategias de microfrontend para las personas que aún no lo han aprendido. Considera si tienes una aplicación frontend monolítica más grande, cuando digo monolítica, es una gran cantidad de aplicación que es mantenida por un gran equipo y que tiene una gran cantidad de código. Cuando tienes este tipo de escenario, obviamente estás sujeto a muchos errores, problemas de producción, errores que no se pueden solucionar fácilmente. Para abordar este problema, los desarrolladores de todo el mundo comenzaron a pensar en una solución para dividir esta aplicación monolítica en piezas más pequeñas. Esto sucedió hace unos cinco o seis años. En ese momento, los microservicios estaban evolucionando mucho en las tecnologías de backend, por lo que los desarrolladores frontend querían tener este conjunto similar de estrategias también en el frontend. Fue entonces cuando se introdujo el término microfrontend. Así es como evolucionó el microfrontend. Según Kam Jackson, un arquitecto reconocido, la arquitectura de microfrontend es un estilo arquitectónico donde las aplicaciones frontend entregables de forma independiente se componen en un todo mayor. Simplemente, puedo decir que se trata de dividir una aplicación monolítica en microfrontends más pequeños, y cada microfrontend puede ser propiedad de un equipo individual y autónomo. Pueden tener sus propias implementaciones, sus propios ciclos de lanzamiento, pueden mantener sus propios microfrontends sin depender de otros microfrontends u otros equipos.

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.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
Entendiendo la Arquitectura Fiber de React
React Advanced Conference 2022React Advanced Conference 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
De Monolito a Micro-Frontends
React Advanced Conference 2022React Advanced Conference 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.
The Eternal Sunshine of the Zero Build Pipeline
React Finland 2021React Finland 2021
36 min
The Eternal Sunshine of the Zero Build Pipeline
For many years, we have migrated all our devtools to Node.js for the sake of simplicity: a common language (JS/TS), a large ecosystem (NPM), and a powerful engine. In the meantime, we moved a lot of computation tasks to the client-side thanks to PWA and JavaScript Hegemony.
So we made Webapps for years, developing with awesome reactive frameworks and bundling a lot of dependencies. We progressively moved from our simplicity to complex apps toolchains. We've become the new Java-like ecosystem. It sucks.
It's 2021, we've got a lot of new technologies to sustain our Users eXperience. It's time to have a break and rethink our tools rather than going faster and faster in the same direction. It's time to redesign the Developer eXperience. It's time for a bundle-free dev environment. It's time to embrace a new frontend building philosophy, still with our lovely JavaScript.
Introducing Snowpack, Vite, Astro, and other Bare Modules tools concepts!
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
React Summit 2022React Summit 2022
17 min
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
Top Content
Today's Talk discusses building flexible, resilient, and future-proof React components using composition and configuration approaches. The composition approach allows for flexibility without excessive conditional logic by using multiple components and passing props. The context API can be used for variant styling, allowing for appropriate styling and class specification. Adding variants and icons is made easy by consuming the variant context. The composition and configuration approaches can be combined for the best of both worlds.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
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.
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.
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.