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

Rate this content
Bookmark

Un vistazo a las herramientas de código abierto creadas por el grupo de Ingeniería de UI en JP Morgan para agilizar el flujo de trabajo de los desarrolladores al construir y desplegar aplicaciones de forma aislada, al mismo tiempo que se entrega un portal unificado basado en micro-frontends al usuario final, aprovechando el 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 los desafíos en su entorno de desarrollo a gran escala. Emplean micro-frontends con módulos ES para la carga dinámica y el intercambio de temas utilizando variables CSS. Las aplicaciones se construyen utilizando Modular, lo cual permite la creación de aplicaciones nuevas a partir de plantillas. Se basan en un enfoque de creación de aplicaciones con opiniones y utilizan una CDN para un despliegue y almacenamiento en caché eficientes. La aplicación principal se encarga de la autenticación de usuarios y la comunicación entre los micro-frontends, mientras que los servicios de plataforma como la autorización y autenticación son proporcionados por la plataforma digital.

1. Introducción a las Tecnologías Web de JP Morgan

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 para discutir: el UITK, una biblioteca de componentes de React, y Modular, una herramienta de gestión de monorepos 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, implementación continua y aseguramiento de calidad.

Buenos días a todos. Con esa cantidad de videos sobre JPMorgan, no hay presión hoy. 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 los módulos de ES donde podemos usarlos para resolver problemas antiguos, problemas como cómo ejecutar múltiples aplicaciones que han sido construidas e implementadas de forma independiente en aplicaciones tipo portal de contenedor único.

Un poco sobre mí. He estado trabajando en el espacio fintech durante unos 20 años y he tenido el privilegio de ver crecer las tecnologías de interfaz de usuario durante ese tiempo. Y ahora que estoy en JP Morgan, ya no soy un desarrollador principal. Pero ahora trabajo con desarrolladores para armar nuestra oferta de código abierto. Hoy voy a hablar de dos cosas. Una es el UITK, que es una biblioteca de componentes de React que usamos para estandarizar la apariencia y la experiencia de sus aplicaciones. Y Modular, que es una herramienta de gestión de monorepos con opiniones. Ambos están en nuestro Github público, si quieres echarles un vistazo. Y agradecemos las solicitudes de extracción.

Los lugares en los que he trabajado antes, como dije, siempre han sido 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 a la que me iba a enfrentar. En el banco en general, tenemos 50,000 desarrolladores, creo. 18,000 de ellos están en nuestra división. Y estamos implementando alrededor de 5,800 aplicaciones en uno de nuestros tipos de contenedor, que es un contenedor de escritorio. 2,000 de ellas están en producción. Sirven a unos 200,000 usuarios diarios. Hay cientos de implementaciones todos los días. Tenemos este problema de desarrollo realmente distribuido. O alegría, dependiendo de cómo lo veas. El desarrollo distribuido significa que tenemos muchos equipos de desarrollo. Todos trabajan de forma independiente. Tienen la libertad de tomar sus propias decisiones sobre cómo van a construir sus aplicaciones, cómo las van a implementar y, más recientemente, con qué frecuencia las implementan. ¿Por qué están enviando código en realidad? Pero desde un punto de vista organizativo, ¿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 alguna forma de integración continua. Todos van a necesitar implementación continua, y todos van a tener la misma necesidad de aplicar aseguramiento de calidad. Por lo tanto, van a necesitar herramientas de prueba. Van a necesitar elegir los mismos productos para realizar sus pruebas.

2. Consistencia y Soluciones en Ingeniería de UI

Short description:

Y luego, debido a que todos estamos bajo la misma marca, necesitaremos 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 Plataforma Digital, que es algo así como un proveedor de Jamstack dentro del banco. Tenemos un sistema de diseño que es un sistema de diseño accesible en primer lugar y que tiene una biblioteca de componentes basada en React. Tenemos una nueva versión de la biblioteca de React que se está desarrollando en este momento. Y finalmente, tenemos Modular, que es una herramienta de gestión de monorepos con opiniones. Tiene algunas características que mostraré hoy, pero es similar a create-react-app y tiene una opinión sobre las herramientas de desarrollo que se utilizan para construir las aplicaciones en sí. Tenemos un contenedor de escritorio. Cuando llegamos a entregar un portal web, los usuarios aún quieren tener una forma única de lanzar aplicaciones. Quieren tener una apariencia y experiencia consistentes en las aplicaciones que cargan, y quieren poder usar sus aplicaciones en todos los navegadores modernos.

Y luego, debido a que todos estamos bajo la misma marca, necesitaremos tener el mismo lenguaje de diseño. Entonces, ¿cómo agregamos esa consistencia a las aplicaciones que estamos implementando? Teniendo en cuenta que hay miles de ellas siendo lanzadas. Entonces, cuando las aplicaciones se implementan, también necesitarán resolver el mismo tipo de problemas. Necesitamos saber cómo autenticar a sus usuarios, cómo autorizarlos para usar las aplicaciones. Y debido a que queremos tener las mismas experiencias de usuario ricas, estamos pensando cómo podrás compartir los diseños que has creado, cómo podrás 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 almacenarás y persistirás 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 Plataforma Digital, que es algo así como un proveedor de Jamstack dentro del banco. Ya mencioné que tenemos un contenedor de escritorio, pero también tenemos formas en las que distribuimos nuestras aplicaciones móviles y web. Lo llamamos Omnicanal, pero también proporcionamos más un enfoque de DevOps. Entonces, tenemos cosas como integración continua, en realidad está basado en Jenkins. Tenemos implementación continua que se basa en Amazon S3. Y también proporcionamos un registro de aplicaciones centralizado 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 lo más importante, cuando necesitamos revertir las cosas, simplifica nuestros procesos. Y luego, probablemente más relevante para hoy y de lo que voy a hablar más adelante es que tenemos un sistema de diseño. Es un sistema de diseño que prioriza la accesibilidad y que tiene una biblioteca de componentes basada en React. Hemos adoptado los componentes web y permitimos el uso de Angular. Se tomó una decisión hace un par de años de que nos enfocaríamos en React. De hecho, tenemos una nueva versión de la biblioteca de React que se está desarrollando en este momento. Se lanzará muy pronto. Siéntete libre de ir a verlo en nuestro GitHub. Y finalmente, el Modular, que es una herramienta de gestión de monorepos con opiniones. Tiene algunas características que mostraré hoy, pero es similar a create-react-app y tiene una opinión sobre las herramientas de desarrollo que se utilizan para construir las aplicaciones en sí.

Tenemos un contenedor de escritorio. Los desarrolladores, cuando crean aplicaciones, las envían a nuestra infraestructura de implementación continua y le dicen al contenedor de escritorio, que es una aplicación basada en Electron, dónde buscar las URL. Cuando llegamos a entregar un portal web, ¿cuál es la expectativa de la experiencia del usuario? En realidad, es casi lo mismo que en el escritorio. Los usuarios aún quieren tener una forma única de lanzar aplicaciones. Quieren tener una apariencia y experiencia consistentes en las aplicaciones que cargan, 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 que conlleva las desventajas habituales de tener muchos, potencialmente muchos, instancias de frameworks cargados en una aplicación, en una ventana del 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 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.