“Microfrontends” para móviles en React Native

Rate this content
Bookmark

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

FAQ

React Native es una framework utilizado para desarrollar aplicaciones móviles que permite ejecutar el mismo código en diferentes plataformas. En Theodo, lo hemos adoptado poco después de su lanzamiento por Meta y hemos lanzado varios proyectos de código abierto, como la biblioteca de redimensionamiento de imágenes y la herramienta Flashlight para medir el rendimiento de las aplicaciones móviles.

Los micro frontends son un estilo arquitectónico que permite desarrollar aplicaciones front-end como conjuntos de funcionalidades independientes y entregables que componen una aplicación mayor. En el contexto móvil, esta idea se explora para ver si puede permitir la actualización y el desarrollo independiente de partes de una aplicación sin necesidad de recompilar y lanzar toda la aplicación.

Los micro frontends permiten descomponer los equipos en verticales de características, reduciendo el contexto necesario por equipo y permitiendo un enfoque más especializado. Además, facilitan la adopción de diferentes stacks tecnológicos y tienen ciclos de lanzamiento independientes, lo que puede acelerar las iteraciones y la entrega de nuevas funcionalidades.

La complejidad añadida es uno de los principales desafíos, ya que implica manejar múltiples partes móviles y tecnologías dentro de una única aplicación. Además, la distribución mediante tiendas de aplicaciones complica los ciclos de lanzamiento independientes, y la gestión de código nativo y dependencias puede ser problemática cuando se trabaja con múltiples equipos.

En Theodo, para el desarrollo de una plataforma de streaming a gran escala, se adoptó una estructura modular, dividiendo las principales características de la aplicación en paquetes que los equipos podían desarrollar de forma autónoma. Esto permitió la independencia en el desarrollo y pruebas, facilitando la gestión de un proyecto con numerosos desarrolladores y características.

React Native permite utilizar características como Code Push para actualizar la capa de JavaScript de las aplicaciones de manera independiente a la tienda de aplicaciones. Esto facilita las iteraciones rápidas y la corrección de errores, permitiendo a los desarrolladores ofrecer valor a los usuarios de forma más rápida y eficiente.

Mo Khazali
Mo Khazali
24 min
23 Oct, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Los micro frontends son un estilo arquitectónico donde las aplicaciones frontend independientes componen una aplicación mayor. Permiten el desarrollo y despliegue independiente, desglosando los equipos en verticales de características. La arquitectura de React Native permite actualizar la capa de JavaScript sin pasar por la tienda de aplicaciones. Code Push se puede utilizar para desplegar paquetes de JavaScript separados para cada micro frontend. Sin embargo, existen desafíos con la gestión del código nativo y las dependencias en un ecosistema de micro frontend para aplicaciones móviles.

1. Introducción a Micro Frontends con React Native

Short description:

Estoy súper emocionado de estar dando esta charla sobre micro frontends para móviles con React Native. Un poco sobre mí. Mi nombre es Mo. Soy el jefe de móviles en una empresa llamada Theodo con sede en el Reino Unido. Hemos estado haciendo React Native durante mucho tiempo. En los últimos meses, un cliente nos pidió que desarrolláramos un servicio de streaming. Con las aplicaciones universales, la idea es que escribas una vez y puedas ejecutar en cualquier lugar. Intentas reutilizar la mayor cantidad posible de tu lógica de componentes principales y tu lógica de negocio en general. ¿Cómo arquitecturamos un proyecto a esta escala? ¿Cómo creamos la corriente de trabajo correcta para que nuestros equipos puedan desarrollar simultáneamente? Una de las cosas que hicimos fue intentar tomar las principales características de la aplicación y ponerlas dentro de paquetes que los equipos pudieran desarrollar de manera autónoma.

Hola a todos, es un placer estar con todos ustedes en React Advanced este año. Estoy súper emocionado de estar dando esta charla sobre micro frontends para móviles con React Native. Es un tema que he estado explorando un poco durante los últimos meses y creo que hay muchos aprendizajes interesantes y espero que al final de esto haya despertado su interés para explorar un poco más en un área que creo que está un poco subdesarrollada y hay mucho margen para mejorar dentro de nuestra community. Así que sí, espero que salgan cosas emocionantes de esto. Un poco sobre mí. Mi nombre es Mo. Soy el jefe de móviles en una empresa llamada Theodo con sede en el Reino Unido. Theodo es un grupo de consultores internacionales, expertos digitales que están ubicados alrededor del mundo, principalmente en Francia, el Reino Unido, Nueva York y también en Marruecos. Hemos estado haciendo React Native durante mucho tiempo. Es posible que nos conozcan por otro nombre, BAM, donde hemos estado trabajando en open-source en React Native desde el principio. Adoptamos React Native cuando salió unos meses después de que fue lanzado por Meta, y hemos lanzado varios proyectos de open-source como la biblioteca de redimensionamiento de imágenes de React Native, y más recientemente Flashlight, que es una herramienta para medir el performance de las mobile apps. Al estar en el espacio de consultoría, tienes la oportunidad de experimentar muchos proyectos diferentes, y quiero hablarles un poco sobre uno de ellos hoy. Tiempo de historia. En los últimos meses, un cliente nos pidió que desarrolláramos un servicio de streaming. Ahora, esta es una plataforma de medios a gran escala. No es solo streaming con algunos videos y solo un sitio muy básico. Era la cosa completa, con noticias, con streaming, leyendo artículos, escuchando podcasts, todo centralizado en esta única plataforma que tenía muchas características diferentes en movimiento. Los puntos clave en este proyecto eran que, uno, había un gran número de características, pero tenían un montón de otros requisitos que lo hacían más complejo. Uno era que querían que tuviera paridad de características en la web, móvil, e incluso TV. Querían tener un tiempo de respuesta muy corto, lo que significaba que necesitábamos tener varios equipos de desarrolladores trabajando en este proyecto simultáneamente. Entonces, siendo un poco familiar con el espacio de React Native, una de las cosas que buscamos cuando escuchamos sobre la paridad en todos los aspectos fue esta idea de aplicaciones universales. Este es un espacio que se está desarrollando y creo que está llegando a su plenitud en los últimos años. Con las aplicaciones universales, la idea es que escribes una vez y puedes ejecutar en cualquier lugar. Puedes usar React Native realmente para crear una aplicación web, una aplicación móvil, una aplicación de escritorio, e incluso quizás una aplicación de TV. Intentas reutilizar la mayor cantidad posible de tu lógica de componentes principales y tu lógica de negocio en general y es súper poderoso en el sentido de que puedes tener muchos, muchos beneficios en términos de velocidad y entrega y tasa de iteración e innovation. Así que es un espacio muy emocionante en el que estar y sabíamos que iba a ser una buena opción porque nuestro proyecto iba a ser primero para móviles pero también necesitaban acceso a la web y a la TV, así que fue una decisión obvia para nosotros. Pero también nos hizo pensar en algo un poco más sutil, que era cómo arquitecturamos un proyecto a esta escala? ¿Cómo creamos la corriente de trabajo correcta para que nuestros equipos puedan desarrollar simultáneamente? Tenemos decenas de diferentes desarrolladores trabajando en este proyecto al mismo tiempo. ¿Cómo lo organizas de manera que las personas no estén pisándose los pies? Las personas no están teniendo demasiados conflictos de fusión diferentes o demasiados bloqueos diferentes en el camino de su desarrollo. Así que una de las cosas que miramos muy de cerca fue cómo estructuramos este proyecto? Ahora esta es una estructura de carpetas simplificada, pero espero que se entienda el punto. Una de las cosas que hicimos fue intentar tomar las principales características de la aplicación y ponerlas dentro de paquetes

2. Introducción a Micro Frontends

Short description:

Algunas de las características principales se aislaron en paquetes separados que se podrían utilizar dentro de la aplicación. Este diseño modular basado en características funciona bien para aplicaciones universales y React Native. El siguiente paso natural es explorar microfrontends para móviles. Los microfrontends no son adecuados para todos los proyectos, pero pueden ser beneficiosos para proyectos a gran escala con equipos autónomos. La historia de los microfrontends comienza con la transición de los monolitos a los microservicios en el backend. A medida que las aplicaciones crecen, mantener un frontend monolítico se vuelve desafiante, ralentizando la velocidad de desarrollo.

que los equipos podrían desarrollar de forma autónoma. Así que algunas de las características principales eran cosas como ver transmisiones en vivo o leer artículos de noticias o quizás escuchar un podcast. Y así nosotros aislamos estas características en paquetes separados que luego podrían ser utilizados dentro de la aplicación. Y estos finalmente fueron los bloques de construcción que se unieron y construyeron la plataforma completa. Y una de las cosas agradables acerca de packaging de esta manera era que podríamos efectivamente tomar cualquiera de estos modules, aislarlos, probarlos individualmente, podrían ser desarrollados en aislamiento sin necesidad de lidiar con todas las otras cosas con las que los equipos estaban trabajando, lo que significaba que los desarrolladores realmente no se bloquearían en ningún momento. Y este tipo de design modular basado en características funciona bastante bien para aplicaciones universales y aplicaciones React Native. Porque cuando comenzamos a desglosar nuestros equipos, vimos que habíamos creado estos agradables verticales de características donde un solo equipo se estaba enfocando en la lógica de negocio en el frontend, estaban creando componentes comunes de React Native. Pero también estaban programando en Native para iOS y Android y web y realmente entendiendo el núcleo de la característica que estaban construyendo y convirtiéndose en especialistas en eso. Realmente nos gustó eso, pero no era un concepto nuevo. El siguiente paso natural que podrías tomar de esto era ir por el camino de los microfrontends. Así que despertó esta pregunta en mi mente sobre si los microfrontends para móviles es algo factible. Y eso es lo que vamos a explorar juntos hoy. Esta es una charla muy exploratoria. No estamos buscando... No estoy aquí para abogar por ir a toda máquina con los microfrontends y adoptar ellos para cada proyecto que uses porque eso es absurdo. Creo que hay mucho que podemos aprender de este enfoque. Es aplicable a un tipo muy específico de proyecto. Puede ayudar a muchos proyectos que están a gran escala y son muy, muy grandes y con un gran número de equipos que pueden ser autónomos, pero no es para cada uno proyecto. Así que quiero poner ese grano de sal allí para que todos estén conscientes de que esto no está abogando por que debas usar esto en cada proyecto en el que te embarques de ahora en adelante. Así que vamos a repasar un poco de historia. De los monolitos a los microservices. Así que irónicamente, la historia de los frontends, la historia de los microfrontends, comienza desde el backend donde las aplicaciones comenzaron a pasar de los monolitos a los microservices. Así que digamos que tienes un backend básico que maneja tres características principales, authentication, streaming y pagos. Así que están almacenados bajo una aplicación paraguas. Así que todos ellos encajan en una aplicación que es un monolito y eso está bien. Son realmente tres características. No hay mucha superficie, pero naturalmente con el tiempo empiezas a añadir más y más características. Y así la aplicación crece. Y de repente, a medida que este proyecto va creciendo más y más, inevitablemente te quedas con una especie de behemot de una aplicación. Y cada nuevo desarrollador que llega tiene esta carga cognitiva que es simplemente masiva para lidiar con. Y así la velocidad del equipo naturalmente empezará a disminuir a medida que empieces a construir más y más en esta aplicación.

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

Simplificando los Componentes del Servidor
React Advanced Conference 2023React Advanced Conference 2023
27 min
Simplificando los Componentes del Servidor
Top Content
Los Componentes del Servidor son posiblemente el cambio más grande en React desde su lanzamiento inicial, pero muchos de nosotros en la comunidad hemos tenido dificultades para entenderlos. En esta charla intentaremos desglosar las diferentes partes móviles para que tengas una buena comprensión de lo que está sucediendo bajo el capó, y exploraremos la línea entre React y los marcos que se construyen sobre él.
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.
Explorando los fundamentos de los Componentes del Servidor React
React Day Berlin 2023React Day Berlin 2023
21 min
Explorando los fundamentos de los Componentes del Servidor React
Top Content
He estado desarrollando un marco minimalista para los Componentes del Servidor React (RSC). Esta charla compartirá mi viaje para entender profundamente RSC desde una perspectiva técnica. Demostraré cómo operan las características de RSC a un nivel bajo y proporcionaré ideas sobre lo que RSC ofrece en su núcleo. Al final, deberías tener un modelo mental más fuerte de los fundamentos de los Componentes del Servidor React.
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.
Componentes del Servidor: La Epopeya de la Representación UX
React Summit 2023React Summit 2023
26 min
Componentes del Servidor: La Epopeya de la Representación UX
Los componentes del servidor, introducidos en React v18, ponen fin a estas limitaciones, permitiendo representar completamente los componentes de React en el servidor, en un formato de abstracción intermedio sin necesidad de agregar al paquete de JavaScript.Esta charla tiene como objetivo cubrir los siguientes puntos:1. Una divertida historia de cómo necesitábamos CSR y cómo SSR comenzó a ocupar su lugar2. ¿Qué son los componentes del servidor y qué beneficios aportan, como un tamaño de paquete de JavaScript de 0?3. Demostración de una aplicación simple utilizando representación en el lado del cliente, SSR y componentes del servidor, y análisis de las mejoras de rendimiento y comprensión de cuándo usar cada enfoque4. Mi opinión sobre cómo cambiará la representación de la interfaz de usuario con este enfoque
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced Conference 2023React Advanced Conference 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Los Componentes de Servidor son la nueva gran cosa, pero hasta ahora gran parte del discurso a su alrededor ha sido abstracto. Cambiemos eso. Esta charla se centrará en el lado práctico de las cosas, proporcionando un mapa de ruta para navegar el viaje de migración. Comenzando desde una aplicación que utiliza el antiguo enrutador de páginas de Next.js y React Query, desglosaremos este viaje en un conjunto de pasos accionables e incrementales, deteniéndonos solo cuando tengamos algo que se pueda enviar y que sea claramente superior a lo que comenzamos. También discutiremos los próximos pasos y estrategias para adoptar gradualmente más aspectos de este paradigma transformador.

Workshops on related topic

Presentando FlashList: Construyamos juntos una lista performante en React Native
React Advanced Conference 2022React Advanced Conference 2022
81 min
Presentando FlashList: Construyamos juntos una lista performante en React Native
Top Content
WorkshopFree
David Cortés Fulla
Marek Fořt
Talha Naqvi
3 authors
En esta masterclass aprenderás por qué creamos FlashList en Shopify y cómo puedes usarlo en tu código hoy. Te mostraremos cómo tomar una lista que no es performante en FlatList y hacerla performante usando FlashList con mínimo esfuerzo. Usaremos herramientas como Flipper, nuestro propio código de benchmarking, y te enseñaremos cómo la API de FlashList puede cubrir casos de uso más complejos y aún así mantener un rendimiento de primera categoría.Sabrás:- Breve presentación sobre qué es FlashList, por qué lo construimos, etc.- Migrando de FlatList a FlashList- Enseñando cómo escribir una lista performante- Utilizando las herramientas proporcionadas por la biblioteca FlashList (principalmente el hook useBenchmark)- Usando los plugins de Flipper (gráfico de llamas, nuestro perfilador de listas, perfilador de UI & JS FPS, etc.)- Optimizando el rendimiento de FlashList utilizando props más avanzados como `getType`- 5-6 tareas de muestra donde descubriremos y solucionaremos problemas juntos- Preguntas y respuestas con el equipo de Shopify
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
60 min
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
Top Content
Workshop
Oli Bates
Oli Bates
- Introducción - Cleo & nuestra misión- Lo que queremos construir, cómo encaja en nuestro producto & propósito, revisar los diseños- Comenzando con la configuración del entorno & “hola mundo”- Introducción a la animación de React Native- Paso 1: Hacer girar la rueda al presionar un botón- Paso 2: Arrastrar la rueda para darle velocidad- Paso 3: Agregar fricción a la rueda para frenarla- Paso 4 (extra): Agregar hápticos para una sensación inmersiva
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.
React Server Components Unleashed: Un profundo buceo en el desarrollo web de próxima generación
React Advanced Conference 2023React Advanced Conference 2023
153 min
React Server Components Unleashed: Un profundo buceo en el desarrollo web de próxima generación
Workshop
Maurice de Beijer
Maurice de Beijer
¡Prepárate para potenciar tus habilidades de desarrollo web con React Server Components! En esta inmersiva masterclass de 3 horas, desbloquearemos todo el potencial de esta tecnología revolucionaria y exploraremos cómo está transformando la forma en que los desarrolladores construyen aplicaciones web rápidas y eficientes.
Únete a nosotros mientras nos adentramos en el emocionante mundo de React Server Components, que combina a la perfección la renderización del lado del servidor con la interactividad del lado del cliente para un rendimiento y una experiencia de usuario inigualables. Obtendrás experiencia práctica a través de ejercicios prácticos, ejemplos del mundo real y orientación experta sobre cómo aprovechar el poder de los Server Components en tus propios proyectos.
A lo largo de la masterclass, cubriremos temas esenciales, incluyendo:
- Entender las diferencias entre los componentes del servidor y del cliente- Implementar Server Components para optimizar la obtención de datos y reducir el tamaño del paquete de JavaScript- Integrar Server y Client Components para una experiencia de usuario fluida- Estrategias para pasar datos eficazmente entre componentes y gestionar el estado- Consejos y mejores prácticas para maximizar los beneficios de rendimiento de React Server Components
Nivel de la masterclass:
No importa tu nivel actual de experiencia en React, esta masterclass te equipará con el conocimiento y las herramientas para llevar tu juego de desarrollo web a nuevas alturas. No pierdas esta oportunidad de mantenerte a la vanguardia y dominar la tecnología de vanguardia que está cambiando la cara del desarrollo web. ¡Inscríbete ahora y desata todo el poder de React Server Components!