Gestión de proyectos Node.js a gran escala con Monorepos

Rate this content
Bookmark

Descubre los secretos de la gestión de proyectos Node.js a gran escala con Monorepos. Conoce las mejores prácticas, estrategias de escalabilidad, organización efectiva de código y herramientas de colaboración para un desarrollo optimizado a gran escala. Únete a mí para obtener ideas que conviertan los desafíos de la gestión de proyectos en oportunidades.

Fortune Ikechi
Fortune Ikechi
19 min
04 Apr, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Monorepos es una estrategia de desarrollo que te permite almacenar múltiples proyectos en un solo repositorio, facilitando el intercambio de código y simplificando la gestión de dependencias. Proporcionan una gestión de dependencias simplificada, mejoran la reutilización de código y permiten un proceso de compilación, prueba e implementación consistente en todos los proyectos. Herramientas como Nix, Yarn Workspaces y NPM Workspaces agilizan el desarrollo con monorepos. La organización del código y las estrategias de escalabilidad implican modelos detallados, una estructura de directorios consistente y la instalación selectiva de dependencias. La optimización de los procesos de compilación puede reducir el tiempo de compilación, y la optimización del rendimiento y la colaboración implican herramientas de perfilado y procesos efectivos de revisión de código.

1. Introducción a los Monorepos

Short description:

Hola a todos. Soy Fortune Ikechi, un ingeniero de software y escritor técnico. Hoy hablaré sobre cómo gestionar proyectos de Node.js a gran escala con monorepos. Los monorepos son una estrategia de desarrollo que te permite almacenar múltiples proyectos en un solo repositorio, facilitando el intercambio de código y simplificando la gestión de dependencias. También mejoran la colaboración entre equipos.

Hola a todos. Mi nombre es Fortune Ikechi. Soy un ingeniero de software y escritor técnico. Cuando esto fue creado, era un ingeniero desarrollador en Storyblok. Ya no lo soy. Puedes encontrarme en Twitter como underscore, en codoc underscore. Y hoy hablaré, daré una charla relámpago sobre cómo gestionar proyectos de Node.js a gran escala con monorepos.

Y sí, voy a mirar esta tabla de contenidos. El número uno es Introducción a los Monorepos y su papel en el desarrollo de Node.js. Correcto. También veremos las mejores prácticas para organizar tu código. También hablaré sobre las estrategias de escalabilidad para aplicaciones de Node.js, y terminaré con herramientas y flujos de trabajo de colaboración que puedes usar para aplicaciones de Node.js en monorepos.

Ahora, empecemos. Así que el número uno es la Introducción a los Monorepos y su papel en el desarrollo de Node.js. Ahora, antes de empezar, tengo que mencionar qué es un monorepo, ¿verdad? Un monorepo en su totalidad se llama en realidad repositorio monolítico o monolithic repository. Es una estrategia de desarrollo en la que tienes muchos proyectos y almacenas tantos proyectos en un repositorio, actuando como una única fuente de verdad para múltiples proyectos. Así que piénsalo como cuando tienes tus aplicaciones monolíticas, donde tienes todo unido en un proyecto en particular sin separar preocupaciones y todas esas cosas. Básicamente, el frontend, backend están todos en un mismo lugar. Pero en este caso, un repositorio monolítico o un monorepo es básicamente donde tienes tres, cuatro proyectos en un solo proyecto, y eso se convierte en la fuente de verdad para todo el proyecto.

Ahora, lo que los monorepos ayudan a hacer es facilitar el intercambio de código, ¿verdad? Porque con esto, puedes compartir código entre los diferentes proyectos, ¿verdad? Y reutilizar los diferentes componentes de modelos o paquetes en esos proyectos. Y lo segundo que hace es simplificar la gestión de dependencias. Y aquí es donde intentas tener múltiples dependencias, ¿verdad? Probablemente una dependencia de carpeta o archivo o JSON que maneje todos los proyectos enteros. Y lo último que hacen los monorepos es mejorar la colaboración entre diferentes equipos. Ahora, debido a que los monorepos son diferentes proyectos en una configuración particular, puedes tener a todos esos proyectos, ingenieros o personas que trabajan en esos proyectos, o los equipos, nuevamente colaborando para usar probablemente diferentes modelos o paquetes en todos los proyectos.

2. Beneficios de los Monorepos

Short description:

Los Monorepos simplifican la gestión de dependencias y mejoran la reutilización de código. Permiten un proceso de construcción, prueba e implementación coherente en todos los proyectos. Node.js sigue un enfoque modular que complementa a los Monorepos, lo que facilita la gestión de interdependencias. Además, los Monorepos facilitan la refactorización entre proyectos y garantizan la consistencia a través de configuraciones compartidas.

Ahora, voy a hablar de los beneficios de los Monorepos, y aquí he enumerado la simplificación de la gestión de dependencias. Ya expliqué que puedes tener, nuevamente, un paquete centralizado para tus dependencias. Y esto es realmente, realmente esencial en el entorno de Node.js porque Node.js trabaja con la idea de modelos compartidos, ¿verdad? Y ahora, cuando tienes todas estas dependencias, probablemente desde un solo archivo, puedes compartirlas entre los diferentes modelos de tu proyecto de Node.js en un Monorepo. Y también puedes importar todas ellas desde un solo archivo, básicamente. Y lo siguiente que mencioné es que se unifican los scripts lineales. Ahora, con los Monorepos, puedes tener un proceso de construcción, prueba e implementación coherente en todos tus proyectos. Y esto se debe a que puedes tener básicamente un solo archivo, probablemente un solo script allí, como un archivo JSON, package.json, que maneje todos tus scripts, tus herramientas, tus pruebas para todos los proyectos. Y con esto, tus ingenieros y equipos pueden construir de manera consistente siguiendo ese formato de prueba en particular o ese formato de construcción o proceso de implementación.

El siguiente beneficio de los Monorepos es que ayudan a mejorar la reutilización del código. Esto se debe a que es muy fácil compartir código entre los proyectos. Voy a hablar más sobre esto más adelante o dedicar más tiempo a esto más adelante debido a la charla y luego lo veremos. Y añadí aquí que esto reduce la redundancia y fomenta la consistencia. Cuando tienes básicamente un solo código que usas en múltiples proyectos, hay una versión consistente de ese código que se está utilizando, ¿verdad? Es básicamente el mismo código reutilizado en múltiples lugares. Y luego tú y tu equipo pueden estar seguros de la consistencia en múltiples códigos que se utilizan en múltiples proyectos o un solo código que se utiliza en múltiples proyectos. Lo siguiente que mencioné aquí es la colaboración en equipo. Ahora, al centralizar tu base de código, los Monorepos no solo simplifican la gestión de dependencias, sino que también ayudan a colaborar mejor con tu entorno o tu equipo. Ahora, debido a esto, los equipos pueden trabajar más estrechamente con modelos interconectados, ¿verdad? Esto puede ayudar al tiempo de desarrollo porque ahora estás seguro de lo que obtienes de cada modelo. Y luego no tienes que preocuparte por tal vez algunos casos especiales o efectos secundarios de ciertos modelos que ocurren entre los proyectos. Ahora, quería mencionar los Monorepos de Node.js y los Monorepos en el desarrollo de Node.js. Ahora, escuché que Node.js sigue un enfoque modular, ¿verdad? Y esto complementa cómo funcionan básicamente los Monorepos. Y esto facilita mucho la gestión de interdependencias entre modelos porque, nuevamente, tienes una sola dependencia que funciona en los diferentes modelos de tu aplicación. También añadí aquí la compatibilidad con la arquitectura modular, ¿verdad? Y con Node.js, Node.js trabaja con paquetes o modelos muy pequeños y reutilizables que puedes usar en proyectos. Y esto funciona de nuevo con la forma en que funcionan los Monorepos, porque ahora en este caso, puedes tener una carpeta llamada utils y esa carpeta es como todos los paquetes para la autenticación o todos los paquetes para los inicios de sesión de producción y todo eso. Y luego puedes reutilizar este módulo particular en todos tus proyectos, ¿verdad? En diferentes carpetas en ese Monorepo en particular. Y ahora voy a mencionar la refactorización entre proyectos, ¿verdad? Ahora, con esto, no tienes que tener miedo de hacer cambios y luego preocuparte de cómo afecta a todo el proyecto, porque todos tus cambios básicamente funcionan en un solo lugar. Y las dependencias son nuevamente una sola dependencia.

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!
La Era de los Monorepos
JSNation 2022JSNation 2022
25 min
La Era de los Monorepos
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!
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.

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