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.

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