{"id":43451,"date":"2021-09-09T09:33:28","date_gmt":"2021-09-09T07:33:28","guid":{"rendered":"https:\/\/kinsta.com\/?p=100242"},"modified":"2025-02-07T15:16:15","modified_gmt":"2025-02-07T14:16:15","slug":"monorepo-vs-multi-repo","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/","title":{"rendered":"Monorepo vs Multi-Repo: Ventajas y Desventajas de las Estrategias de Repositorio de C\u00f3digo"},"content":{"rendered":"<p class=\"p1\">Existen dos estrategias principales para <a href=\"https:\/\/kinsta.com\/es\/precios\/\"><span class=\"s1\">alojar<\/span><\/a> y gestionar el c\u00f3digo a trav\u00e9s de Git: monorepo vs multi-repo. Ambos enfoques tienen sus pros y sus contras.<\/p>\n<p class=\"p1\">Podemos utilizar cualquiera de los dos enfoques para cualquier base de c\u00f3digo en cualquier lenguaje. Puedes utilizar cualquiera de estas estrategias para proyectos que contengan desde un pu\u00f1ado de <a href=\"https:\/\/kinsta.com\/es\/blog\/bibliotecas-javascript\/\"><span class=\"s1\">bibliotecas<\/span><\/a> hasta miles de ellas. Incluso si se trata de unos pocos miembros del equipo o cientos, o si quieres alojar c\u00f3digo privado o de c\u00f3digo abierto, puedes optar por monorepo o multi-repo en funci\u00f3n de varios factores.<\/p>\n<p class=\"p1\">\u00bfCu\u00e1les son las ventajas e inconvenientes de cada enfoque? \u00bfCu\u00e1ndo debemos utilizar uno u otro? Averig\u00fc\u00e9moslo.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>\u00bfQu\u00e9 son los repositorios?<\/h2>\n<p class=\"p1\">Un repo (abreviatura de repositorio) es un almac\u00e9n para todos los cambios y archivos de un proyecto, lo que permite a los desarrolladores \u00abcontrolar la versi\u00f3n\u00bb de los activos del proyecto a lo largo de su etapa de desarrollo.<\/p>\n<p class=\"p1\">Normalmente nos referimos a los repositorios <a href=\"https:\/\/kinsta.com\/es\/docs\/alojamiento-wordpress\/gestion-del-sitio\/git\/\"><span class=\"s1\">Git<\/span><\/a> (como los que proporcionan <a href=\"https:\/\/kinsta.com\/es\/blog\/git-vs-github\/\"><span class=\"s1\">GitHub<\/span><\/a>, <a href=\"https:\/\/kinsta.com\/es\/blog\/gitlab-vs-github\/\"><span class=\"s1\">GitLab<\/span><\/a> o <a href=\"https:\/\/kinsta.com\/es\/blog\/bitbucket-vs-github\/\"><span class=\"s1\">Bitbucket<\/span><\/a>), pero el concepto tambi\u00e9n se aplica a otros sistemas de control de versiones (como Mercurial).<\/p>\n\n<h2>\u00bfQu\u00e9 es un monorrepo?<\/h2>\n<p class=\"p1\">El enfoque monorepo utiliza un \u00fanico <a href=\"https:\/\/kinsta.com\/es\/blog\/bitbucket-vs-github\/\"><span class=\"s1\">repositorio<\/span><\/a> para alojar todo el c\u00f3digo de las m\u00faltiples bibliotecas o servicios que componen los proyectos de una empresa. En su versi\u00f3n m\u00e1s extrema, todo el c\u00f3digo base de una empresa &#8211; que abarca varios proyectos y est\u00e1 codificado en diferentes lenguajes &#8211; se aloja en un \u00fanico repositorio.<\/p>\n<h2>Los Beneficios de Monorepo<\/h2>\n<p class=\"p1\">Alojar todo el c\u00f3digo base en un \u00fanico repositorio ofrece las siguientes ventajas.<\/p>\n<h3>Reduce las barreras de entrada<\/h3>\n<p class=\"p1\">Cuando los nuevos miembros del personal empiezan a trabajar en una empresa, necesitan descargar el c\u00f3digo e instalar las herramientas necesarias para empezar a trabajar en sus tareas. Supongamos que el proyecto est\u00e1 disperso en muchos repositorios, cada uno con sus instrucciones de instalaci\u00f3n y las herramientas necesarias. En ese caso, la configuraci\u00f3n inicial ser\u00e1 compleja y, en la mayor\u00eda de los casos, la documentaci\u00f3n no estar\u00e1 completa, lo que obligar\u00e1 a estos nuevos miembros del equipo a pedir ayuda a sus colegas.<\/p>\n<p class=\"p1\">Un monorepo simplifica las cosas. Al haber una \u00fanica ubicaci\u00f3n que contiene todo el c\u00f3digo y la <a href=\"https:\/\/kinsta.com\/es\/docs\/devkinsta\/\"><span class=\"s1\">documentaci\u00f3n<\/span><\/a>, se puede agilizar la configuraci\u00f3n inicial.<\/p>\n<h3>Gesti\u00f3n centralizada del c\u00f3digo<\/h3>\n<p class=\"p1\">Tener un \u00fanico repositorio da visibilidad de todo el c\u00f3digo a todos los desarrolladores. Simplifica la gesti\u00f3n del c\u00f3digo, ya que podemos utilizar un \u00fanico gestor de incidencias para vigilar todas las incidencias a lo largo del ciclo de vida de la aplicaci\u00f3n.<\/p>\n<p class=\"p1\">Por ejemplo, estas caracter\u00edsticas son valiosas cuando un problema se extiende a dos (o m\u00e1s) bibliotecas hijas con el error existente en la biblioteca dependiente. Con m\u00faltiples repositorios, puede ser un reto <a href=\"https:\/\/kinsta.com\/es\/blog\/inspeccion-elementos\/\"><span class=\"s1\">encontrar el trozo de c\u00f3digo<\/span><\/a> donde se produce el problema.<\/p>\n<p class=\"p1\">Adem\u00e1s, tendr\u00edamos que averiguar qu\u00e9 repositorio utilizar para crear la incidencia y, a continuaci\u00f3n, invitar y etiquetar a miembros de otros equipos para que ayuden a resolver el problema.<\/p>\n<p class=\"p1\">Sin embargo, con un monorrepo, tanto la localizaci\u00f3n de los problemas del c\u00f3digo como la colaboraci\u00f3n para solucionarlos son m\u00e1s sencillas.<\/p>\n<h3>Refactorizaciones de la aplicaci\u00f3n sin complicaciones<\/h3>\n<p class=\"p1\">Al crear una refactorizaci\u00f3n del c\u00f3digo en toda la aplicaci\u00f3n, se ver\u00e1n afectadas m\u00faltiples bibliotecas. Si las alojas en varios repositorios, la gesti\u00f3n de todos los pull requests para mantenerlos sincronizados entre s\u00ed puede resultar un reto.<\/p>\n<p class=\"p1\">Un monorepo facilita la realizaci\u00f3n de todas las modificaciones de todo el c\u00f3digo de todas las bibliotecas y su env\u00edo bajo un \u00fanico pull request.<\/p>\n<h3>M\u00e1s dif\u00edcil de romper la funcionalidad adyacente<\/h3>\n<p class=\"p1\">Con el monorepo, podemos configurar todas las pruebas de todas las bibliotecas para que se ejecuten cada vez que se modifique alguna de ellas. Como resultado, la probabilidad de hacer un cambio en algunas bibliotecas ha minimizado los efectos adversos en otras bibliotecas.<\/p>\n<h3>Los equipos comparten la cultura del desarrollo<\/h3>\n<p class=\"p1\">Aunque no es imposible, con un enfoque monorrepo, resulta dif\u00edcil inspirar subculturas \u00fanicas entre los distintos equipos. Dado que compartir\u00e1n el mismo repositorio, lo m\u00e1s probable es que compartan las mismas metodolog\u00edas de <a href=\"https:\/\/kinsta.com\/es\/blog\/mejor-lenguaje-de-programacion-para-aprender\/\"><span class=\"s1\">programaci\u00f3n<\/span><\/a> y gesti\u00f3n y que utilicen las mismas <a href=\"https:\/\/kinsta.com\/es\/blog\/herramientas-apm\/\"><span class=\"s1\">herramientas de desarrollo<\/span><\/a>.<\/p>\n<h2>Problemas con el enfoque monorrepo<\/h2>\n<p class=\"p1\">Utilizar un \u00fanico repositorio para todo nuestro c\u00f3digo tiene varios inconvenientes.<\/p>\n<h3>Ciclos de desarrollo m\u00e1s lentos<\/h3>\n<p class=\"p1\">Cuando el c\u00f3digo de una biblioteca contiene cambios de ruptura, que hacen que las pruebas de las bibliotecas dependientes fallen, el c\u00f3digo tambi\u00e9n debe ser corregido antes de fusionar los cambios.<\/p>\n<p class=\"p1\">Si estas bibliotecas dependen de otros equipos, que est\u00e1n ocupados trabajando en alguna otra tarea y no son capaces (o no est\u00e1n dispuestos) a adaptar su c\u00f3digo para evitar los cambios de ruptura y hacer que las pruebas pasen, el desarrollo de la nueva caracter\u00edstica puede estancarse.<\/p>\n<p class=\"p1\">Es m\u00e1s, es muy posible que el proyecto empiece a avanzar solo a la velocidad del equipo m\u00e1s lento de la empresa. Este resultado podr\u00eda frustrar a los miembros de los equipos m\u00e1s r\u00e1pidos, creando las condiciones para que quieran abandonar la empresa.<\/p>\n<p class=\"p1\">Adem\u00e1s, una biblioteca tendr\u00e1 que ejecutar las pruebas de todas las dem\u00e1s bibliotecas tambi\u00e9n. <a href=\"https:\/\/kinsta.com\/es\/blog\/prueba-de-velocidad\/\"><span class=\"s1\">Cuantas m\u00e1s pruebas haya que ejecutar<\/span><\/a>, m\u00e1s tiempo se tarda en hacerlo, lo que ralentiza la rapidez con la que podemos iterar en nuestro c\u00f3digo.<\/p>\n<h3>Requiere la descarga de todo el c\u00f3digo base<\/h3>\n<p class=\"p1\">Cuando el monorepo contiene todo el c\u00f3digo de una empresa, puede ser enorme y contener gigabytes de datos. Para contribuir a cualquier biblioteca alojada en \u00e9l, cualquiera necesitar\u00eda descargar todo el repositorio.<\/p>\n<p class=\"p1\">Tratar con una amplia base de c\u00f3digo implica un mal uso del espacio en nuestros discos duros e interacciones m\u00e1s lentas con ella. Por ejemplo, acciones cotidianas como ejecutar <code><span class=\"s1\">git status<\/span><\/code> o buscar en la base de c\u00f3digo con una regex pueden tardar muchos segundos o incluso minutos m\u00e1s de lo que tardar\u00edan con m\u00faltiples repos.<\/p>\n<h3>Las bibliotecas no modificadas pueden tener una nueva versi\u00f3n<\/h3>\n<p class=\"p1\">Cuando <a href=\"https:\/\/kinsta.com\/es\/blog\/etiquetas-de-wordpress\/\"><span class=\"s1\">etiquetamos<\/span><\/a> el monorepo, a todo el c\u00f3digo que contiene se le asigna la nueva etiqueta. Si esta acci\u00f3n desencadena una nueva publicaci\u00f3n, entonces todas las bibliotecas alojadas en el repositorio ser\u00e1n reci\u00e9n publicadas con el n\u00famero de versi\u00f3n de la etiqueta, aunque muchas de esas bibliotecas no hayan tenido ning\u00fan cambio.<\/p>\n<h3>La bifurcaci\u00f3n es m\u00e1s dif\u00edcil<\/h3>\n<p class=\"p1\">Los proyectos de c\u00f3digo abierto deben facilitar al m\u00e1ximo la participaci\u00f3n de los colaboradores. Con m\u00faltiples repositorios, los colaboradores pueden dirigirse directamente al repositorio espec\u00edfico del proyecto al que quieren contribuir. Sin embargo, con un monorepositorio que aloja varios proyectos, los colaboradores deben navegar primero hacia el proyecto correcto y tendr\u00e1n que entender c\u00f3mo su contribuci\u00f3n puede afectar a todos los dem\u00e1s proyectos.<\/p>\n<h2>\u00bfQu\u00e9 es el Multi-Repo?<\/h2>\n<p class=\"p1\">El enfoque multirepo utiliza varios repositorios para alojar las m\u00faltiples bibliotecas o servicios de un proyecto desarrollado por una empresa. En su punto m\u00e1s extremo, alojar\u00e1 cada conjunto m\u00ednimo de c\u00f3digo reutilizable o funcionalidad independiente (como un microservicio) bajo su repositorio.<\/p>\n<h2>Ventajas del Multi-Repo<\/h2>\n<p class=\"p1\">Alojar cada biblioteca de forma independiente de todas las dem\u00e1s proporciona una gran cantidad de ventajas.<\/p>\n<h3>Versionado independiente de bibliotecas<\/h3>\n<p class=\"p1\">Al etiquetar un repositorio, se asigna la etiqueta \u00abnuevo\u00bb a todo tu c\u00f3digo base. Dado que solo el c\u00f3digo de una biblioteca espec\u00edfica est\u00e1 en el repositorio, la biblioteca puede ser etiquetada y versionada independientemente de todas las dem\u00e1s bibliotecas alojadas en otros lugares.<\/p>\n<p class=\"p1\">Tener una versi\u00f3n independiente para cada librer\u00eda ayuda a definir el \u00e1rbol de dependencias de la aplicaci\u00f3n, permiti\u00e9ndonos configurar qu\u00e9 versi\u00f3n de cada librer\u00eda utilizar.<\/p>\n<h3>Comunicados de servicio independientes<\/h3>\n<p class=\"p1\">Dado que el repositorio solo contiene el c\u00f3digo de alg\u00fan servicio y nada m\u00e1s, puedes tener tu propio ciclo de despliegue, independientemente de los avances de las aplicaciones que acceden a \u00e9l.<\/p>\n<p class=\"p1\">El servicio puede utilizar un ciclo de liberaci\u00f3n r\u00e1pido, como la entrega continua (donde el nuevo c\u00f3digo se despliega despu\u00e9s de pasar todas las pruebas). Algunas bibliotecas que acceden al servicio pueden utilizar un ciclo de lanzamiento m\u00e1s lento, como las que solo producen una nueva versi\u00f3n una vez a la semana.<\/p>\n<h3>Ayuda a definir el control de acceso en toda la organizaci\u00f3n<\/h3>\n<p class=\"p1\">Solo los miembros del equipo implicados en el desarrollo de una librer\u00eda necesitan a\u00f1adirse al repositorio correspondiente y descargar su c\u00f3digo. Como resultado, hay una estrategia impl\u00edcita de control de acceso para cada capa de la <a href=\"https:\/\/kinsta.com\/es\/blog\/monitoreo-rendimiento-aplicaciones\/\"><span class=\"s1\">aplicaci\u00f3n<\/span><\/a>. Aquellos involucrados con la biblioteca tendr\u00e1n derechos de edici\u00f3n, y todos los dem\u00e1s pueden no tener acceso al repositorio. O puede que se les den derechos de lectura pero no de edici\u00f3n.<\/p>\n<h3>Permite a los equipos trabajar de forma aut\u00f3noma<\/h3>\n<p class=\"p1\">Los miembros del equipo pueden dise\u00f1ar la arquitectura de la biblioteca e implementar su c\u00f3digo trabajando de forma aislada de todos los dem\u00e1s equipos. Pueden tomar decisiones basadas en lo que hace la biblioteca en el contexto general sin verse afectados por los requisitos espec\u00edficos de alg\u00fan equipo o aplicaci\u00f3n externa.<\/p>\n<h2>Problemas con el enfoque Multir-Repo<\/h2>\n<p class=\"p1\">El uso de m\u00faltiples repositorios puede dar lugar a varios problemas.<\/p>\n<h3>Las bibliotecas deben resintonizarse constantemente<\/h3>\n<p class=\"p1\">Cuando se publique una nueva versi\u00f3n de una biblioteca que contenga cambios de ruptura, las bibliotecas que dependan de ella tendr\u00e1n que adaptarse para empezar a utilizar la \u00faltima versi\u00f3n. Si el ciclo de publicaci\u00f3n de la biblioteca es m\u00e1s r\u00e1pido que el de sus bibliotecas dependientes, \u00e9stas podr\u00edan quedar r\u00e1pidamente desincronizadas entre s\u00ed.<\/p>\n<p class=\"p1\">Los equipos tendr\u00e1n que ponerse al d\u00eda constantemente para utilizar las \u00faltimas versiones de otros equipos. Dado que los distintos equipos tienen diferentes prioridades, esto puede resultar a veces arduo de conseguir.<\/p>\n<p class=\"p1\">En consecuencia, un equipo que no sea capaz de ponerse al d\u00eda puede acabar ci\u00f1\u00e9ndose a la versi\u00f3n anticuada de la biblioteca de la que depende. Este resultado tendr\u00e1 implicaciones en la aplicaci\u00f3n (en t\u00e9rminos de seguridad, velocidad y otras consideraciones), y la brecha en el desarrollo a trav\u00e9s de las bibliotecas solo puede aumentar.<\/p>\n<h3>Puede fragmentar los equipos<\/h3>\n<p class=\"p1\">Cuando los diferentes equipos no necesitan interactuar, pueden trabajar en sus propios silos. A largo plazo, esto puede dar lugar a que los equipos produzcan sus subculturas dentro de la empresa, como el empleo de diferentes metodolog\u00edas de programaci\u00f3n o gesti\u00f3n o la utilizaci\u00f3n de diferentes conjuntos de herramientas de desarrollo.<\/p>\n<p class=\"p1\">Si alg\u00fan miembro del equipo tiene que trabajar finalmente en un equipo diferente, puede sufrir un peque\u00f1o choque cultural y aprender una <span class=\"s1\">nueva forma de hacer su trabajo<\/span>.<\/p>\n<h2>Monorepo vs Multi-Repo: Principales diferencias<\/h2>\n<p>Ambos enfoques se ocupan, en \u00faltima instancia, del mismo objetivo: gestionar el c\u00f3digo base. Por lo tanto, ambos deben resolver los mismos retos, como la gesti\u00f3n de las versiones, el fomento de la <a href=\"https:\/\/kinsta.com\/es\/blog\/microsoft-teams-contra-slack\/\"><span class=\"s1\">colaboraci\u00f3n entre los miembros del equipo<\/span><\/a>, la gesti\u00f3n de los problemas y la ejecuci\u00f3n de las pruebas, entre otros.<\/p>\n<p class=\"p1\">Su principal diferencia radica en el momento en que los miembros del equipo deben tomar decisiones: por adelantado en el caso de los monorepos o por debajo de la l\u00ednea en el caso de los multi-repos.<\/p>\n<p class=\"p1\">Analicemos esta idea con m\u00e1s detalle.<\/p>\n<p class=\"p1\">Dado que todas las bibliotecas se versionan de forma independiente en el multi-repo, un equipo que libere una biblioteca con cambios de ruptura puede hacerlo de forma segura asignando un nuevo n\u00famero de versi\u00f3n principal a la \u00faltima versi\u00f3n. Otros grupos pueden hacer que sus bibliotecas dependientes se ci\u00f1an a la versi\u00f3n antigua y cambien a la nueva una vez adaptado su c\u00f3digo.<\/p>\n<p class=\"p1\">Este enfoque deja la decisi\u00f3n de cu\u00e1ndo adaptar todas las dem\u00e1s bibliotecas a cada equipo responsable, que puede hacerlo en cualquier momento. Si lo hacen demasiado tarde y se publican nuevas versiones de las bibliotecas, cerrar la brecha entre ellas ser\u00e1 cada vez m\u00e1s dif\u00edcil.<\/p>\n<p class=\"p1\">En consecuencia, mientras que un equipo puede iterar r\u00e1pidamente y con frecuencia en su c\u00f3digo, otros equipos pueden resultar incapaces de ponerse al d\u00eda, produciendo finalmente bibliotecas divergentes.<\/p>\n<p class=\"p1\">Por otro lado, en un entorno monorepo, no podemos liberar una nueva versi\u00f3n de una biblioteca que rompa alguna otra biblioteca, ya que tus pruebas fallar\u00e1n. En este caso, el primer equipo debe comunicarse con el segundo para incorporar los cambios.<\/p>\n<p class=\"p1\">Este enfoque obliga a los equipos a adaptar <a href=\"https:\/\/kinsta.com\/es\/blog\/bibliotecas-javascript\/\"><span class=\"s1\">todas las bibliotecas<\/span><\/a> en conjunto cada vez que haya que hacer un cambio en una sola biblioteca. Todos los equipos se ven obligados a hablar entre s\u00ed y llegar a una soluci\u00f3n conjunta.<\/p>\n<p class=\"p1\">Como resultado, el primer equipo no podr\u00e1 iterar tan r\u00e1pido como desea, pero el c\u00f3digo de las diferentes bibliotecas no empezar\u00e1 a divergir en ning\u00fan momento.<\/p>\n<p class=\"p1\">En resumen, el enfoque multi-repo puede ayudar a crear una cultura de \u00abmoverse r\u00e1pido y romper cosas\u00bb entre los equipos, donde los equipos \u00e1giles e independientes pueden producir sus resultados a su velocidad. En cambio, el enfoque monorrepo favorece una cultura de concienciaci\u00f3n y cuidado, en la que los equipos no deben quedarse atr\u00e1s para resolver un problema por s\u00ed solos.<\/p>\n<h2>Enfoque h\u00edbrido Poly-As-Mono<\/h2>\n<p class=\"p1\">Si no podemos decidir si utilizar el enfoque multi-repo o monorepo, tambi\u00e9n existe el enfoque intermedio: utilizar m\u00faltiples repositorios y emplear alguna herramienta para mantenerlos sincronizados, asemej\u00e1ndose a un monorepo pero con m\u00e1s flexibilidad.<\/p>\n<p class=\"p1\"><span class=\"s1\"><a href=\"https:\/\/github.com\/mateodelnorte\/meta\">Meta<\/a> <\/span>es una de esas herramientas. Organiza m\u00faltiples repositorios en subdirectorios y proporciona una <a href=\"https:\/\/kinsta.com\/es\/blog\/guia-desarrollador-usar-ssh\/\"><span class=\"s1\">interfaz de l\u00ednea de comandos<\/span><\/a> que ejecuta el mismo comando en todos ellos simult\u00e1neamente.<\/p>\n<p class=\"p1\">Un meta-repositorio contiene la informaci\u00f3n sobre los repositorios que componen un proyecto. La clonaci\u00f3n de este repositorio a trav\u00e9s del meta-repositorio clonar\u00e1 recursivamente todos los repositorios necesarios, facilitando que los nuevos miembros del equipo puedan empezar a trabajar en sus proyectos inmediatamente.<\/p>\n<p class=\"p1\">Para clonar un meta-repositorio y todos tus repositorios m\u00faltiples definidos, debemos ejecutar lo siguiente:<\/p>\n<pre><code class=\"language-bash\">meta git clone [meta repo url]\n<\/code><\/pre>\n<p class=\"p1\">Meta ejecutar\u00e1 un <code>git <span class=\"s1\">clone<\/span><\/code> para cada repositorio y lo colocar\u00e1 en una subcarpeta:<\/p>\n<figure id=\"attachment_100243\" aria-describedby=\"caption-attachment-100243\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/meta-cloning.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-100243 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/meta-cloning-1024x755.png\" alt=\"Clonaci\u00f3n de un metaproyecto. \" width=\"1024\" height=\"755\"><\/a><figcaption id=\"caption-attachment-100243\" class=\"wp-caption-text\">Clonaci\u00f3n de un metaproyecto. (Fuente de la imagen: <a href=\"https:\/\/github.com\/mateodelnorte\/meta\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/mateodelnorte\/meta<\/a>)<\/figcaption><\/figure>\n<p class=\"p1\">A partir de ah\u00ed, al ejecutar el comando <code><span class=\"s1\">meta exec<\/span><\/code> se ejecutar\u00e1 el comando en cada subcarpeta. Por ejemplo, ejecutar <code><span class=\"s1\">git checkout master<\/span><\/code> en cada repositorio se hace as\u00ed:<\/p>\n<pre><code class=\"language-bash\">meta exec \"git checkout master\"\n<\/code><\/pre>\n<h2>Enfoque h\u00edbrido Mono-As-Poly<\/h2>\n<p class=\"p1\">Otro enfoque es gestionar el c\u00f3digo a trav\u00e9s de un monorepo para el desarrollo, pero copiando el c\u00f3digo de cada biblioteca en tu repositorio independiente para el despliegue.<\/p>\n<p class=\"p1\">Esta estrategia es frecuente en el ecosistema PHP porque <a href=\"https:\/\/packagist.org\/\"><span class=\"s1\">Packagist<\/span><\/a> (el repositorio principal de <a href=\"https:\/\/getcomposer.org\/\"><span class=\"s1\">Composer<\/span><\/a>) requiere una <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-una-url\/\"><span class=\"s1\">URL<\/span><\/a><span class=\"s1\"> de<\/span> repositorio p\u00fablico para publicar un paquete, y no es posible indicar que el paquete se encuentra dentro de un subdirectorio del repositorio.<\/p>\n<p class=\"p1\">Dada la limitaci\u00f3n de Packagist, los <a href=\"https:\/\/graphql-api.com\/blog\/extending-the-monorepo-builder\/\"><span class=\"s1\">proyectos de PHP pueden seguir utilizando un monorepo para el desarrollo<\/span><\/a>, pero deben utilizar el enfoque multi-repo para el despliegue.<\/p>\n<p class=\"p1\">Para lograr esta conversi\u00f3n, podemos <a href=\"https:\/\/stackoverflow.com\/questions\/359424\/detach-move-subdirectory-into-separate-git-repository\/17864475#17864475\"><span class=\"s1\">ejecutar un script con <\/span><code><span class=\"s2\">git subtree split<\/span><\/code><\/a> o utilizar una de las herramientas disponibles que realizan la misma l\u00f3gica:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/splitsh\/lite\" target=\"_blank\" rel=\"noopener noreferrer\">Git Subtree Splitter<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dflydev\/git-subsplit\" target=\"_blank\" rel=\"noopener noreferrer\">Git Subsplit<\/a><\/li>\n<li class=\"li1\"><span class=\"s1\"><a href=\"https:\/\/github.com\/symplify\/monorepo-split-github-action\"><span class=\"s2\">Acci\u00f3n de GitHub para la divisi\u00f3n de Monorepo<\/span><\/a><\/span><\/li>\n<\/ul>\n<h2>\u00bfQui\u00e9n utiliza Monorepo frente a Multi-Repo?<\/h2>\n<p class=\"p1\">Varias grandes empresas tecnol\u00f3gicas se decantan por el m\u00e9todo monorrepo, mientras que otras han decidido utilizar el m\u00e9todo multirrepo.<\/p>\n<p class=\"p1\"><span class=\"s1\"><a href=\"https:\/\/cacm.acm.org\/magazines\/2016\/7\/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository\/fulltext\">Google<\/a><\/span>, <a href=\"https:\/\/www.facebook.com\/atscaleevents\/videos\/systems-scale-2019-monorepos-moving-fast-in-a-huge-repository\/457153524992062\/\"><span class=\"s1\">Facebook<\/span><\/a>, <a href=\"https:\/\/blog.twitter.com\/engineering\/en_us\/a\/2016\/the-release-of-pants-10\"><span class=\"s1\">Twitter<\/span><\/a> y <a href=\"https:\/\/www.youtube.com\/watch?v=lV8-1S28ycM\"><span class=\"s1\">Uber<\/span><\/a> han respaldado p\u00fablicamente el enfoque de los monorrepos. Microsoft <a href=\"https:\/\/devblogs.microsoft.com\/bharry\/the-largest-git-repo-on-the-planet\/\"><span class=\"s1\">gestiona el mayor monorepo Git del planeta<\/span><\/a> para alojar el c\u00f3digo fuente del sistema operativo Windows.<\/p>\n<p class=\"p1\">En el lado opuesto, <a href=\"https:\/\/netflixtechblog.com\/towards-true-continuous-integration-distributed-repositories-and-dependencies-2a2e3108c051\"><span class=\"s1\">Netflix<\/span><\/a>, <a href=\"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3328433.3328435\"><span class=\"s1\">Amazon y Lyft<\/span><\/a> son empresas famosas que utilizan el enfoque de m\u00faltiples reposiciones.<\/p>\n<p class=\"p1\">En el lado h\u00edbrido poli-as-mono, <a href=\"https:\/\/source.android.com\/setup\/create\/coding-tasks\"><span class=\"s1\">Android<\/span><\/a> actualiza m\u00faltiples repositorios, que se gestionan como un monorepo.<\/p>\n<p class=\"p1\">En el lado h\u00edbrido mono-as-poly, <a href=\"https:\/\/kinsta.com\/es\/blog\/frameworks-php\/#symfony\"><span class=\"s1\">Symfony<\/span><\/a> mantiene el c\u00f3digo de todos sus componentes en un monorepo. Lo dividen en repositorios independientes para el despliegue (como <a style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\" href=\"https:\/\/github.com\/symfony\/dependency-injection\"><code>symfony\/dependency-injection<\/code><\/a><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"> y\u00a0<\/span><a style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\" href=\"https:\/\/github.com\/symfony\/event-dispatcher\"><code>symfony\/event-dispatcher<\/code><\/a><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">.)<\/span><\/p>\n<h2>Ejemplos de Monorepo y Multi-Repo<\/h2>\n<p class=\"p1\">La <a href=\"https:\/\/github.com\/WordPress\/WordPress\"><span class=\"s1\">cuenta de WordPress en GitHub<\/span><\/a> alberga ejemplos de los enfoques monorepo y multirrepo.<\/p>\n<p class=\"p1\"><span class=\"s1\"><a href=\"https:\/\/kinsta.com\/es\/blog\/gutenberg-wordpress-editor\/\">Gutenberg<\/a><\/span>, el editor de bloques de WordPress, se compone de varias docenas de paquetes <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-javascript\/\"><span class=\"s1\">JavaScript<\/span><\/a>. Estos paquetes est\u00e1n todos alojados en el <a href=\"https:\/\/github.com\/WordPress\/gutenberg\"><span class=\"s1\">monorepo <\/span><code><span class=\"s2\">WordPress\/gutenberg<\/span><\/code><\/a> y gestionados a trav\u00e9s de <a href=\"https:\/\/github.com\/lerna\/lerna\"><span class=\"s1\">Lerna<\/span><\/a> para ayudar a publicarlos en el repositorio <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-node-js\/#what-is-npm\"><span class=\"s1\">npm<\/span><\/a>.<\/p>\n<p class=\"p1\"><span class=\"s1\"><a href=\"https:\/\/wordpress.org\/news\/2021\/05\/welcome-to-openverse\/\">Openverse<\/a><\/span>, el motor de b\u00fasqueda de medios con licencia abierta, <a href=\"https:\/\/github.com\/WordPress\/openverse\/blob\/918b7cf1b6323291ab16c1ad5a27f3733709ec17\/README.md#openverse\"><span class=\"s1\">aloja sus partes principales<\/span><\/a> en repositorios independientes: <a href=\"https:\/\/github.com\/wordpress\/openverse-frontend\"><span class=\"s1\">Front-end<\/span><\/a>, <a href=\"https:\/\/github.com\/wordpress\/openverse-catalog\"><span class=\"s1\">Cat\u00e1logo<\/span><\/a> y <a href=\"https:\/\/github.com\/wordpress\/openverse-api\"><span class=\"s1\">API<\/span><\/a>.<\/p>\n<h2>Monorepo vs Multi-Repo: \u00bfC\u00f3mo elegir?<\/h2>\n<p class=\"p1\">Como ocurre con muchos problemas de desarrollo, no hay una respuesta predefinida sobre el enfoque que debe utilizarse. Diferentes empresas y proyectos se beneficiar\u00e1n de una estrategia u otra en funci\u00f3n de sus condiciones \u00fanicas, como por ejemplo:<\/p>\n<ul>\n<li class=\"li1\">\u00bfQu\u00e9 tama\u00f1o tiene el c\u00f3digo base? \u00bfContiene gigabytes de datos?<\/li>\n<li class=\"li1\">\u00bfCu\u00e1ntas personas trabajar\u00e1n en el c\u00f3digo base? \u00bfSon 10, 100 o 1.000?<\/li>\n<li class=\"li1\">\u00bfCu\u00e1ntos paquetes habr\u00e1? \u00bfSon unos 10, 100 o 1.000?<\/li>\n<li class=\"li1\">\u00bfEn cu\u00e1ntos paquetes tiene que trabajar el equipo en un momento dado?<\/li>\n<li class=\"li1\">\u00bfQu\u00e9 grado de acoplamiento tienen los paquetes?<\/li>\n<li class=\"li1\">\u00bfSe trata de diferentes lenguajes de programaci\u00f3n? \u00bfRequiere la instalaci\u00f3n de un <a href=\"https:\/\/kinsta.com\/es\/blog\/software-cms\/\"><span class=\"s2\">software<\/span><\/a> concreto o un hardware especial para funcionar?<\/li>\n<li class=\"li1\">\u00bfCu\u00e1ntas herramientas de despliegue se necesitan y qu\u00e9 complejidad tienen a la hora de configurarlas?<\/li>\n<li class=\"li1\">\u00bfCu\u00e1l es la cultura de la empresa? \u00bfSe anima a los equipos a colaborar?<\/li>\n<li class=\"li1\">\u00bfQu\u00e9 <a href=\"https:\/\/kinsta.com\/es\/blog\/herramientas-desarrollo-web\/\"><span class=\"s2\">herramientas y tecnolog\u00edas<\/span><\/a> saben utilizar los equipos?<\/li>\n<\/ul>\n\n<h2>Resumen<\/h2>\n<p class=\"p1\">Existen dos estrategias principales para alojar y gestionar el c\u00f3digo: monorepo y multirepo. El enfoque monorepo implica almacenar el c\u00f3digo de diferentes bibliotecas o proyectos -e incluso todo el c\u00f3digo de una empresa- en un \u00fanico repositorio. Y el sistema multi-repo divide el c\u00f3digo en unidades, como bibliotecas o servicios, y mantiene su c\u00f3digo alojado en repositorios independientes.<\/p>\n<p class=\"p1\">El enfoque a utilizar depende de una multitud de condiciones. Ambas estrategias tienen varias ventajas y desventajas, y acabamos de cubrir todas ellas en detalle en este art\u00edculo.<\/p>\n<p class=\"p1\"><em>\u00bfTe queda alguna duda sobre los monorrepos o los multirrepos? \u00a1H\u00e1znoslo saber en la secci\u00f3n de comentarios!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Existen dos estrategias principales para alojar y gestionar el c\u00f3digo a trav\u00e9s de Git: monorepo vs multi-repo. Ambos enfoques tienen sus pros y sus contras. Podemos &#8230;<\/p>\n","protected":false},"author":196,"featured_media":43454,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[430,809],"topic":[1329],"class_list":["post-43451","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-git","tag-github","topic-consejos-tecnologicos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Monorepo vs Multi-Repo: Ventajas y Desventajas Clave<\/title>\n<meta name=\"description\" content=\"Monorepo vs multi-repo: \u00bfcu\u00e1l es el mejor para tu proyecto? Hay ventajas y desventajas en cada uno. Conoce los pros y los contras de cada enfoque.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Monorepo vs Multi-Repo: Ventajas y Desventajas de las Estrategias de Repositorio de C\u00f3digo\" \/>\n<meta property=\"og:description\" content=\"Monorepo vs multi-repo: \u00bfcu\u00e1l es el mejor para tu proyecto? Hay ventajas y desventajas en cada uno. Conoce los pros y los contras de cada enfoque.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-09T07:33:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-07T14:16:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Leonardo Losoviz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Monorepo vs multi-repo: \u00bfcu\u00e1l es el mejor para tu proyecto? Hay ventajas y desventajas en cada uno. Conoce los pros y los contras de cada enfoque.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@losoviz\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Leonardo Losoviz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/\"},\"author\":{\"name\":\"Leonardo Losoviz\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238\"},\"headline\":\"Monorepo vs Multi-Repo: Ventajas y Desventajas de las Estrategias de Repositorio de C\u00f3digo\",\"datePublished\":\"2021-09-09T07:33:28+00:00\",\"dateModified\":\"2025-02-07T14:16:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/\"},\"wordCount\":3182,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"keywords\":[\"git\",\"GitHub\"],\"articleSection\":[\"Sin Categor\u00eda\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/\",\"name\":\"Monorepo vs Multi-Repo: Ventajas y Desventajas Clave\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"datePublished\":\"2021-09-09T07:33:28+00:00\",\"dateModified\":\"2025-02-07T14:16:15+00:00\",\"description\":\"Monorepo vs multi-repo: \u00bfcu\u00e1l es el mejor para tu proyecto? Hay ventajas y desventajas en cada uno. Conoce los pros y los contras de cada enfoque.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Monorepo vs Multi-Repo: Ventajas y desventajas de las estrategias de repositorio de c\u00f3digo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Consejos Tecnol\u00f3gicos\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/consejos-tecnologicos\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Monorepo vs Multi-Repo: Ventajas y Desventajas de las Estrategias de Repositorio de C\u00f3digo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238\",\"name\":\"Leonardo Losoviz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g\",\"caption\":\"Leonardo Losoviz\"},\"description\":\"Leo writes about innovative web development trends, mostly concerning PHP, WordPress and GraphQL. You can find him at leoloso.com and twitter.com\/losoviz.\",\"sameAs\":[\"https:\/\/leoloso.com\",\"https:\/\/x.com\/losoviz\",\"https:\/\/www.youtube.com\/@GatoGraphQL\"],\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/leonardolosoviz\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Monorepo vs Multi-Repo: Ventajas y Desventajas Clave","description":"Monorepo vs multi-repo: \u00bfcu\u00e1l es el mejor para tu proyecto? Hay ventajas y desventajas en cada uno. Conoce los pros y los contras de cada enfoque.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/","og_locale":"es_ES","og_type":"article","og_title":"Monorepo vs Multi-Repo: Ventajas y Desventajas de las Estrategias de Repositorio de C\u00f3digo","og_description":"Monorepo vs multi-repo: \u00bfcu\u00e1l es el mejor para tu proyecto? Hay ventajas y desventajas en cada uno. Conoce los pros y los contras de cada enfoque.","og_url":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2021-09-09T07:33:28+00:00","article_modified_time":"2025-02-07T14:16:15+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg","type":"image\/jpeg"}],"author":"Leonardo Losoviz","twitter_card":"summary_large_image","twitter_description":"Monorepo vs multi-repo: \u00bfcu\u00e1l es el mejor para tu proyecto? Hay ventajas y desventajas en cada uno. Conoce los pros y los contras de cada enfoque.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg","twitter_creator":"@losoviz","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Leonardo Losoviz","Tiempo de lectura":"13 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/"},"author":{"name":"Leonardo Losoviz","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238"},"headline":"Monorepo vs Multi-Repo: Ventajas y Desventajas de las Estrategias de Repositorio de C\u00f3digo","datePublished":"2021-09-09T07:33:28+00:00","dateModified":"2025-02-07T14:16:15+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/"},"wordCount":3182,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg","keywords":["git","GitHub"],"articleSection":["Sin Categor\u00eda"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/","url":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/","name":"Monorepo vs Multi-Repo: Ventajas y Desventajas Clave","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg","datePublished":"2021-09-09T07:33:28+00:00","dateModified":"2025-02-07T14:16:15+00:00","description":"Monorepo vs multi-repo: \u00bfcu\u00e1l es el mejor para tu proyecto? Hay ventajas y desventajas en cada uno. Conoce los pros y los contras de cada enfoque.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2021\/08\/monorepo-vs-multi-repo.jpeg","width":1460,"height":730,"caption":"Monorepo vs Multi-Repo: Ventajas y desventajas de las estrategias de repositorio de c\u00f3digo"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/monorepo-vs-multi-repo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Consejos Tecnol\u00f3gicos","item":"https:\/\/kinsta.com\/es\/secciones\/consejos-tecnologicos\/"},{"@type":"ListItem","position":3,"name":"Monorepo vs Multi-Repo: Ventajas y Desventajas de las Estrategias de Repositorio de C\u00f3digo"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238","name":"Leonardo Losoviz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g","caption":"Leonardo Losoviz"},"description":"Leo writes about innovative web development trends, mostly concerning PHP, WordPress and GraphQL. You can find him at leoloso.com and twitter.com\/losoviz.","sameAs":["https:\/\/leoloso.com","https:\/\/x.com\/losoviz","https:\/\/www.youtube.com\/@GatoGraphQL"],"url":"https:\/\/kinsta.com\/es\/blog\/author\/leonardolosoviz\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/43451","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/196"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=43451"}],"version-history":[{"count":13,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/43451\/revisions"}],"predecessor-version":[{"id":70213,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/43451\/revisions\/70213"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/translations\/en"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/translations\/de"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/translations\/pt"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/translations\/nl"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/translations\/se"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/43451\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/43454"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=43451"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=43451"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=43451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}