Uso de Micro-Frontends Basados en Módulos ES para Habilitar el Desarrollo Distribuido

Bookmark
Rate this content

Una mirada a las herramientas de código abierto creadas por el grupo de Ingeniería de UI en JP Morgan para optimizar el flujo de trabajo de los desarrolladores al construir y desplegar aplicaciones de forma aislada, mientras se entrega un portal unificador basado en micro-frontend al usuario final, aprovechando el uso del soporte nativo para importaciones de módulos ES en el navegador.

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

FAQ

UITK es una biblioteca de componentes de React utilizada por JPMorgan para estandarizar la apariencia y experiencia de sus aplicaciones.

JPMorgan utiliza una herramienta llamada Modular para la gestión de monorepos, la cual es parte de su oferta de código abierto disponible en Github.

JPMorgan emplea integración continua basada en Jenkins y la implementación continua se realiza mediante Amazon S3, además de proporcionar un registro de aplicaciones centralizado.

JPMorgan está utilizando micro front-ends basados en módulos ES y tecnologías como React y Angular para mejorar la carga dinámica y la compartición de temas entre aplicaciones.

El sistema de diseño de JPMorgan prioriza la accesibilidad y utiliza una biblioteca de componentes basada en React, que está siendo actualizada para una nueva versión próximamente.

JPMorgan utiliza un sistema de diseño común y herramientas de integración y implementación continua para mantener la consistencia entre las múltiples aplicaciones desarrolladas por sus equipos.

JPMorgan implementa sistemas para manejar la autenticación y autorización al inicio de las aplicaciones, asegurando que se cumplan las credenciales y permisos necesarios.

Steve King
Steve King
28 min
21 Oct, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
JP Morgan está utilizando tecnologías web modernas como UITK y Modular para abordar desafíos en su entorno de desarrollo a gran escala. Emplean micro-frontends con módulos ES para la carga dinámica y el uso compartido de temas utilizando variables CSS. Las aplicaciones se construyen utilizando modular, lo que permite crear y desarrollar nuevas aplicaciones a partir de plantillas. Confían en un enfoque opinado para la creación de aplicaciones y utilizan un CDN para un despliegue y almacenamiento en caché eficientes. La aplicación anfitriona maneja la autenticación de usuarios y la comunicación entre micro-frontends, mientras que los servicios de plataforma como autorización y autenticación son proporcionados por la plataforma digital.

1. Introduction to JP Morgan's Web Technologies

Short description:

Mi nombre es Steve y estoy aquí para hablar sobre cómo estamos utilizando tecnologías web modernas en JP Morgan. Tenemos dos cosas de las que hablar: el UITK, una biblioteca de componentes de React, y Modular, una herramienta de gestión de monorepositorios con opiniones. Tenemos un entorno de desarrollo a gran escala con miles de aplicaciones y desarrolladores. Cada equipo de desarrollo enfrenta los mismos desafíos de integración continua, despliegue continuo y aseguramiento de la calidad.

Buenos días a todos. Con esa cantidad de videos sobre JPMorgan, no hay presión para hacer esto hoy. Así que, como dije, mi nombre es Steve, y estoy aquí para hablar un poco sobre cómo estamos utilizando tecnologías web modernas, JP, cosas como ES modules donde podemos usarlos para resolver problemas antiguos problemas, problemas como cómo ejecutamos múltiples aplicaciones que han sido construidas y desplegadas independientemente unas de otras en aplicaciones tipo portal de contenedor único.

Así que un poco sobre mí. He estado trabajando en y alrededor del espacio fintech durante unos 20 años, y he tenido el privilegio de ver crecer las tecnologías de UI durante ese tiempo. Y ahora que estoy con JP Morgan, en realidad ya no soy un desarrollador principal. Pero ahora puedo trabajar con desarrolladores para armar nuestra oferta de código abierto. Tenemos dos cosas de las que voy a hablar hoy. Una es el UITK, que es una biblioteca de componentes de React que usamos para estandarizar la forma en que sus aplicaciones se ven y se sienten. Y Modular, que es una herramienta de gestión de monorepositorios con opiniones. Y en realidad ambos están en nuestro Github público, si quieren verlos. Y apreciamos las pull requests.

Así que los tipos de lugares en los que he trabajado antes, dije que siempre es en Fintech. Algunas de esas organizaciones son realmente pequeñas. Cuando llegué a JP Morgan el año pasado, no tenía una idea real de la escala que iba a enfrentar. Tenemos en todo el banco en su conjunto 50,000 desarrolladores, creo. 18,000 de los cuales están en nuestra división. Y estamos desplegando alrededor de 5,800 aplicaciones en uno de nuestros tipos de contenedores, que es un contenedor de escritorio. 2,000 de esos están en producción. Atienden a unos 200,000 usuarios diarios. Hay cientos de despliegues ocurriendo todos los días. Tenemos este problema de desarrollo realmente distribuido. O alegría, dependiendo de cómo lo mires. El desarrollo distribuido significa que tenemos muchos equipos de desarrollo. Todos trabajan de manera independiente. Están facultados para tomar sus propias decisiones sobre cómo van a construir sus aplicaciones, cómo van a desplegarlas, y más recientemente, con qué frecuencia las despliegan. ¿Por qué están realmente enviando código? Pero mirándolo desde un punto de vista organizacional, ¿cuál es la experiencia del desarrollador de ese modelo de desarrollo distribuido? Bueno, cada equipo de desarrollo tiene que resolver los mismos problemas. Todos van a necesitar tener alguna forma de integración continua. Todos van a necesitar despliegue continuo, y todos van a tener la misma necesidad de aplicar aseguramiento de la calidad. Así que van a necesitar herramientas de prueba. Van a necesitar elegir los mismos productos para hacer sus pruebas.

2. Consistency and Solutions in UI Engineering

Short description:

Y luego, porque todos estamos bajo el mismo paraguas de marca, vamos a necesitar tener el mismo lenguaje de diseño. Entonces, ¿cuál fue nuestra solución para eso? Nuestra solución está en la ingeniería de UI. Tenemos lo que llamamos la Digital Platform, que es un poco como un proveedor de Jamstack dentro del banco. Tenemos un sistema de diseño que es un sistema de diseño con accesibilidad primero que tiene una biblioteca de componentes basada en React. Tenemos una nueva versión de la biblioteca de React en desarrollo en este momento. Y más finalmente, el modular, que es una herramienta de gestión de monorepositorios con opiniones. Tiene algunas características que mostraré hoy, pero es similar a create-react-app y luego una opinión sobre las herramientas de desarrollo que se utilizan para construir las aplicaciones en sí. Así que tenemos un contenedor de escritorio. Cuando entregamos un portal web, los usuarios aún quieren tener una forma única de lanzar aplicaciones. Quieren tener una apariencia y sensación consistentes en las aplicaciones que están cargando, y quieren poder usar sus aplicaciones en todos los navegadores modernos.

Y luego, porque todos estamos bajo el mismo paraguas de marca, vamos a necesitar tener el mismo lenguaje de diseño. Entonces, ¿cómo añadimos esa consistencia a las aplicaciones que estamos desplegando? Teniendo en cuenta que hay miles de ellas siendo lanzadas. Así que cuando las aplicaciones también salen, van a necesitar resolver el mismo tipo de problemas. Necesitamos saber cómo van a autenticar a sus usuarios, cómo los autorizan para usar las aplicaciones. Y porque queremos tener las mismas experiencias de usuario enriquecidas, estamos pensando en cómo vas a poder compartir los diseños que has creado, cómo vas a compartir el acceso a tus aplicaciones. Lo cual implica que tienes el mismo tipo de comprensión de tener un sistema de preferencias. Cómo vas a almacenar y persistir los datos del usuario.

Entonces, ¿cuál fue nuestra solución para eso? Nuestra solución está en la ingeniería de UI. Tenemos lo que llamamos la Digital Platform, que es un poco como un proveedor de Jamstack dentro del banco. Así que ya he mencionado que tenemos un contenedor de escritorio, pero también tenemos formas de distribuir nuestras aplicaciones móviles y web. Lo llamamos Omnichannel, pero también ofrecemos más un servicio de DevOps. Así que tenemos cosas como integración continua, en realidad está basado en Jenkins. Tenemos despliegue continuo que está basado en Amazon S3. Y también proporcionamos como un registro centralizado de aplicaciones y ahí es donde nuestros desarrolladores envían las versiones de su código para que podamos determinar cuáles estarán disponibles en producción. Y más importante, cuando necesitamos revertir cosas, simplifica nuestros procesos. Y luego, probablemente más relevante para hoy y de lo que voy a hablar más tarde es que tenemos un sistema de diseño. Así que en realidad, es un sistema de diseño con accesibilidad primero que tiene una biblioteca de componentes basada en React. Hemos estado adoptando componentes web y permitiendo el uso de Angular. Se tomó una decisión hace un par de años de que íbamos a centrarnos en React. Así que en realidad tenemos una nueva versión de la biblioteca de React en desarrollo en este momento. Se lanzará bastante pronto. Siéntanse libres de ir a echarle un vistazo en nuestro GitHub. Y luego, más finalmente, el modular, que es una herramienta de gestión de monorepositorios con opiniones. Tiene algunas características que mostraré hoy, pero es similar a create-react-app y luego una opinión sobre las herramientas de desarrollo que se utilizan para construir las aplicaciones en sí.

Así que tenemos un contenedor de escritorio. Los desarrolladores, cuando crean aplicaciones, las envían a través de nuestra infraestructura de despliegue continuo y le dicen al contenedor de escritorio, que es una aplicación basada en Electron, dónde obtener las URLs. Cuando entregamos un portal web, ¿cuál es la expectativa de experiencia del usuario? En realidad, es casi la misma que en el escritorio. Los usuarios aún quieren tener una forma única de lanzar aplicaciones. Quieren tener una apariencia y sensación consistentes en las aplicaciones que están cargando, y quieren poder usar sus aplicaciones en todos los navegadores modernos. Históricamente, eso podría haber significado usar iframes para cargar aplicaciones juntas, lo cual vendría con los inconvenientes habituales de tener muchas, potencialmente muchas, instancias de frameworks siendo cargadas en una aplicación, en una ventana de navegador web.

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 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.
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.