La Era de los Monorepos

Rate this content
Bookmark

La historia de la web se puede dividir en saltos evolutivos en el desarrollo. La era de los scripts en línea, la era de jQuery, la era de las SPAs, la era de JAMStack...

Ahora estamos entrando en la siguiente etapa que ha sido cuidadosamente preparada en los últimos años. Permíteme invitarte al mundo de las soluciones modernas de monorepo y compartir contigo los beneficios que obtendrás al usarlas en proyectos de cualquier tamaño y configuración. Es hora de automatizar esas tareas de boilerplate y reducir los cuellos de botella para que puedas centrarte en lo que realmente importa.

¡Prepárate para el próximo salto! ¡Bienvenido a la era de los monorepos!

FAQ

Los monorepos son repositorios que contienen múltiples proyectos, como aplicaciones y bibliotecas, en un único repositorio. Son importantes porque facilitan la gestión de dependencias, mejoran la sincronización entre equipos y potencian la reutilización de código, acelerando así el desarrollo y despliegue de software.

La web comenzó con páginas estáticas y simple HTML. Con el tiempo, se introdujo dinamismo con tecnologías como JavaScript, lo que llevó a la creación de aplicaciones web más complejas, incluidas las aplicaciones de una sola página (SPA) con frameworks como AngularJS, React y Vue.

Los monorepos resuelven problemas de coordinación entre diferentes partes de un proyecto, como el frontend y el backend, evitando desincronizaciones y errores debido a cambios no comunicados entre equipos. Facilitan la visibilidad y el seguimiento de todas las partes del proyecto en un solo lugar.

Los monorepos permiten generar gráficos de dependencias y llevar a cabo una orquestación de tareas eficiente, lo que reduce el tiempo de compilación y despliegue solo a los proyectos afectados por cambios. Esto resulta en ciclos de desarrollo más rápidos y menor uso de recursos.

NX ofrece una integración y configuración simplificadas para manejar monorepos, con características como caché distribuida y ejecución de tareas distribuidas. Además, permite una fácil migración y actualización de proyectos, y proporciona herramientas consistentes a través de diferentes frameworks.

Las restricciones de código en los monorepos son reglas que limitan cómo los diferentes proyectos dentro del repositorio pueden interactuar entre sí, evitando que se generen dependencias no deseadas y manteniendo una arquitectura limpia y gestionable.

Miroslav Jonas
Miroslav Jonas
25 min
16 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla de hoy trata sobre el mundo de los monorepos, su historia, beneficios y características. Los monorepos abordan desafíos en el desarrollo web, como procesos de compilación lentos y conexiones inestables en dispositivos móviles. La colocación en monorepos permite compartir fácilmente funciones y componentes entre proyectos. La velocidad y eficiencia en los monorepos se logran a través de la colocación, los gráficos de dependencia y la orquestación de tareas. Herramientas de monorepo como Learnr ofrecen características como el almacenamiento en caché y la ejecución distribuida de tareas. Los monorepos proporcionan compartir código, herramientas consistentes y migración automatizada, lo que resulta en una experiencia de desarrollo 10 veces mejor.

Available in English: The Age of Monorepos

1. Introducción a los Monorepos

Short description:

Gracias a todos por unirse a mi charla. Hoy voy a hablar sobre el increíble mundo de los monorepos. Pero antes de sumergirnos en eso, tengo un importante aviso legal. En esta diapositiva, verán algunos ejemplos de un diseño web extremadamente malo. Verán algunos colores parpadeantes que podrían causar ataques de felicidad. Y finalmente, verán algunas características que cambiarán sus vidas.

Desafortunadamente, el MC decidió renunciar en el último momento, así que tengo que presentarme yo mismo, pero está bien. Hoy voy a hablar sobre el increíble mundo de los monorepos. Pero antes de sumergirnos en eso, tengo un importante aviso legal. En esta diapositiva, verán algunos ejemplos de un diseño web extremadamente malo. Verán algunos colores parpadeantes que podrían causar ataques de felicidad. Y finalmente, verán algunas características que cambiarán sus vidas. Así que, si tienen antecedentes médicos con alguno de estos síntomas, tal vez sea mejor cambiar de tema. De lo contrario, asumo que asumen la plena responsabilidad de estar aquí.

2. Introducción a la Historia del Desarrollo Web

Short description:

Y con esa nota formal, permítanme presentarme. Mi nombre es Miroslav Janas. Trabajo para Narval en la herramienta llamada nX. Antes de sumergirnos en lo que son los monorepos, hagamos un viaje al pasado para entender cómo llegamos aquí. Al principio, la web era estática. Las páginas eran aburridas, pero luego los lenguajes de programación como JavaScript trajeron dinamicidad. A medida que los sitios web se volvieron más complicados, surgieron las aplicaciones de una sola página. Sin embargo, el auge de los teléfonos inteligentes trajo nuevos desafíos con conexiones inestables.

Y con esa nota formal, permítanme presentarme. Mi nombre es Miroslav Janas. Trabajo para Narval en la herramienta llamada nX, de la que escucharán mucho hoy. También coorganizo dos encuentros en Viena, ViennaJS y AngularVienna.

Ahora, antes de sumergirnos en lo que son los monorepos, para entender cómo llegamos al punto en el que se necesitan los monorepos, debemos hacer un viaje al pasado, hasta los inicios de la web, para rastrear nuestros pasos y ver cómo llegamos aquí. Abróchense los cinturones, es hora de la historia.

Al principio, como todos saben, la web era estática. Era simplemente una colección de páginas HTML enlazadas con hipervínculos. Las primeras páginas web se veían algo así como esta página de Yahoo. Tenían mucho texto, muchos enlaces, imágenes muy pequeñas, era la época de la conexión dial-up, por lo que las cosas tenían que ser pequeñas y rápidas. Por lo general, tenían una elección de colores contrastantes, pero las páginas eran aburridas. Eran demasiado estáticas, así que la gente ideó un formato gráfico que daría un poco de vida. ¿Quién recuerda a este bebé bailarín? Algunas páginas llevaron esto a un nivel completamente nuevo, donde toda la página estaba girando en animations. Pero verán, aún no era lo que necesitábamos porque esto se ejecutaba en un bucle, no era una animación controlada, no era un movimiento controlado. Entonces, a Brendan Eich de Netscape, una empresa que producía el navegador popular en ese momento, se le asignó la tarea de crear un lenguaje en solo dos semanas que recogiera algunas ideas de Java y que finalmente llevara dinamicidad al navegador. Y dos semanas después, nació LiveScript, que luego se renombró a JavaScript, para deleite de generaciones de reclutadores y cazatalentos desde entonces.

Y así comenzó la era de la programación de scripts y con esto finalmente tuvimos páginas con galerías de imágenes elegantes, teníamos efectos de menú locos, botones que huían de nuestro cursor, pero las páginas, bueno, todavía podían verse muy feas, pero al menos tenían movimiento controlado finalmente. Y a medida que el número de scripts en una página crecía, comenzamos a encontrar ciertos patterns para reconocer ciertas cosas que se repetían. Al mismo tiempo, este fue un momento de famosas guerras de navegadores entre Microsoft y Netscape y había muchas inconsistencias entre los estándares en estos dos navegadores, por lo que los desarrolladores generalmente tenían que implementar cosas para ambos navegadores. Afortunadamente, ahora teníamos bibliotecas de ayuda, especialmente jQuery, que superaría estas diferencias y crearía una envoltura alrededor de la manipulación del DOM. Esto te permitiría crear rápidamente tus sitios web. Y a medida que los sitios web se volvieron más y más complicados, comenzamos a llamarlos aplicaciones web, no sitios web.

Pero encapsular el DOM y las animations no era la única plantilla. Todavía había mucho por encapsular, como el enrutamiento, la gestión de eventos, la gestión del estado, y esto fue lo que llevó a las aplicaciones de una sola página. El primer framework popular que implementó aplicaciones de una sola página fue AngularJS, y pronto le siguieron React y Vue. Todos ellos todavía se usan hoy en día en algunas variaciones y juntos cambian nuestra forma de pensar en el desarrollo web. Establecieron el desarrollo web tal como lo conocemos hoy. Desafortunadamente para ellos, este también fue el momento en que nuestros teléfonos se volvieron inteligentes y ahora de repente ya no navegamos por Internet en nuestras computadoras de escritorio, sino que comenzamos a navegar por Internet en nuestros teléfonos móviles mientras estábamos sentados en bancos de parques o en transporte público o sentados en un asiento de inodoro. En estos lugares, la conexión no era realmente estable. Podíamos esperar como máximo 3G con muchas interrupciones.

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

Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
Aprenda más sobre cómo aprovechar las características predeterminadas de los espacios de trabajo de npm para ayudarlo a administrar su proyecto monorepo, mientras también explora algunas de las nuevas características de npm cli.
Poner fin al dolor: Repensando CI para Monorepos Grandes
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Poner fin al dolor: Repensando CI para Monorepos Grandes
Escalar bases de código grandes, especialmente monorepos, puede ser una pesadilla en los sistemas de Integración Continua (CI). El panorama actual de las herramientas de CI tiende a ser orientado a máquinas, de bajo nivel y exigente en términos de mantenimiento. Lo peor es que a menudo están desconectadas de las necesidades y el flujo de trabajo real del desarrollador.¿Por qué es un obstáculo el CI? Porque los sistemas de CI actuales son comodines, sin una comprensión específica de tu base de código. No pueden aprovechar el contexto en el que operan para ofrecer optimizaciones.En esta charla, exploraremos el futuro del CI, diseñado específicamente para bases de código grandes y monorepos. Imagina un sistema de CI que comprenda la estructura de tu espacio de trabajo, paralelice dinámicamente las tareas en máquinas utilizando datos históricos, y haga todo esto con una configuración mínima y de alto nivel. Repensemos el CI, haciéndolo más inteligente, eficiente y alineado con las necesidades del desarrollador.
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.
Escala tu aplicación de React sin micro-frontends
React Summit 2022React Summit 2022
21 min
Escala tu aplicación de React sin micro-frontends
A medida que tu equipo crece y se convierte en múltiples equipos, el tamaño de tu base de código también crece. Llegas a las 100k líneas de código y el tiempo de compilación se acerca peligrosamente a los 10 minutos 😱 Pero eso no es todo, tus verificaciones estáticas de CI (linting, cobertura de tipos, código muerto) y pruebas también están tardando cada vez más...¿Cómo puedes mantener a tus equipos avanzando rápidamente y enviando funciones a los usuarios de manera regular si tus PRs tardan una eternidad en ser probados y desplegados?Después de explorar algunas opciones, decidimos seguir el camino de Nx. ¡Veamos cómo migrar una gran base de código a Nx y aprovechar sus compilaciones incrementales!
Remixando tu Stack en un Espacio de Trabajo Monorepo
Remix Conf Europe 2022Remix Conf Europe 2022
22 min
Remixando tu Stack en un Espacio de Trabajo Monorepo
Remix entró en escena con una visión única y refrescante sobre cómo desarrollar en la web. Pero, ¿cómo lo integras en tu ecosistema existente de aplicaciones? ¿Quieres probar Remix en un proyecto pequeño o quieres ir a fondo, pero es complicado hacer una migración completa desde tu aplicación React existente? En esta charla, vamos a explorar cómo una organización de código basada en monorepo puede ayudar a integrar Remix con tu infraestructura existente de React y TypeScript, facilitando la reutilización de código y un camino de migración hacia Remix.
Monorepos Rápidos de React con una Alta Calidad DX
React Summit 2022React Summit 2022
22 min
Monorepos Rápidos de React con una Alta Calidad DX
Los monorepos han estado presentes durante algún tiempo, pero solo recientemente han ganado popularidad en la comunidad de JavaScript. La promesa de compartir fácilmente código, hacer cumplir mejores estándares organizativos, mayor movilidad del desarrollador debido a herramientas comunes y más, es muy atractiva. Sin embargo, si se aborda de manera ingenua, un monorepo rápidamente se convertirá en un gran desorden: tiempos de CI lentos que se disparan, dependencias enredadas entre proyectos, difícil de navegar y, en última instancia, frustrante. En esta charla, veremos las herramientas disponibles, cómo comenzar rápidamente un nuevo monorepo de React en particular y aprenderemos los ingredientes clave necesarios para construir un monorepo exitoso y duradero que se pueda escalar.

Workshops on related topic

React a Escala con Nx
React Summit 2023React Summit 2023
145 min
React a Escala con Nx
Top Content
Featured WorkshopFree
Isaac Mann
Isaac Mann
Vamos a utilizar Nx y algunos de sus plugins para acelerar el desarrollo de esta aplicación.
Algunas de las cosas que aprenderás:- Generar un espacio de trabajo Nx prístino- Generar aplicaciones frontend React y APIs backend dentro de tu espacio de trabajo, con proxies preconfigurados- Crear librerías compartidas para reutilizar código- Generar nuevos componentes enrutados con todas las rutas preconfiguradas por Nx y listas para usar- Cómo organizar el código en un monorepositorio- Mover fácilmente las librerías alrededor de tu estructura de carpetas- Crear historias de Storybook y pruebas e2e de Cypress para tus componentes
Tabla de contenidos: - Lab 1 - Generar un espacio de trabajo vacío- Lab 2 - Generar una aplicación React- Lab 3 - Ejecutores- Lab 3.1 - Migraciones- Lab 4 - Generar una librería de componentes- Lab 5 - Generar una librería de utilidades- Lab 6 - Generar una librería de rutas- Lab 7 - Añadir una API de Express- Lab 8 - Mostrar un juego completo en el componente de detalle de juego enrutado- Lab 9 - Generar una librería de tipos que la API y el frontend pueden compartir- Lab 10 - Generar historias de Storybook para el componente de interfaz de usuario compartido- Lab 11 - Prueba E2E del componente compartido
Monorepos de Node con Nx
Node Congress 2023Node Congress 2023
160 min
Monorepos de Node con Nx
Top Content
WorkshopFree
Isaac Mann
Isaac Mann
Varias apis y varios equipos en el mismo repositorio pueden causar muchos dolores de cabeza, pero Nx te tiene cubierto. Aprende a compartir código, mantener archivos de configuración y coordinar cambios en un monorepo que puede escalar tanto como tu organización. Nx te permite dar estructura a un repositorio con cientos de colaboradores y elimina las desaceleraciones de CI que normalmente ocurren a medida que crece la base de código.
Índice de contenidos:- Laboratorio 1 - Generar un espacio de trabajo vacío- Laboratorio 2 - Generar una api de node- Laboratorio 3 - Ejecutores- Laboratorio 4 - Migraciones- Laboratorio 5 - Generar una biblioteca de autenticación- Laboratorio 6 - Generar una biblioteca de base de datos- Laboratorio 7 - Añadir un cli de node- Laboratorio 8 - Limites de módulo- Laboratorio 9 - Plugins y Generadores - Introducción- Laboratorio 10 - Plugins y Generadores - Modificación de archivos- Laboratorio 11 - Configuración de CI- Laboratorio 12 - Caché distribuida