Mono-Repo vs Multi-Repo: arrojar luz sobre las estrategias de repositorio de código

Mono-repo y Multi-repo son dos estrategias principales para alojar y administrar código a través de Git. Discutimos las estrategias y sus ventajas y desventajas en detalle.

Introducción

La mayoría de los proyectos modernos se gestionan y alojan en Git. Git se ha convertido en la plataforma estándar para la gestión distribuida del código fuente, el control de versiones y la colaboración desde cualquier parte del mundo. Git es rápido y eficiente. Existen dos enfoques principales para alojar y administrar su código Git:

Antes de profundizar en estos enfoques, comprendamos cómo funciona el repositorio.

¿Qué son los Repos?

Un Repositorio (Repo) contiene todas las carpetas y archivos de su proyecto. También contiene información sobre usuarios, personas y equipos.

Los datos del repositorio están controlados por versiones. Un repositorio puede ser propiedad de un individuo o de un grupo de miembros del equipo.

Git es un repositorio. Puede ser público, privado o interno. GitHub es un servicio de alojamiento del repositorio Git y tiene una interfaz de usuario.

Git proporciona funciones de control de versiones y uso compartido de código; sin embargo, lo que hace que Git sea diferente es que si los desarrolladores quieren hacer algunos cambios en sus archivos, pueden copiar todo el repositorio en su sistema local. Por lo tanto, incluso si un desarrollador no tiene acceso de escritura a un proyecto en particular, puede copiar los contenidos localmente y modificarlos (lo que se denomina bifurcación).

Además, si el desarrollador desea compartir los cambios realizados localmente, puede enviar una “solicitud de extracción” al propietario del proyecto.

Un proyecto puede tener un solo servicio. Si su proyecto tiene múltiples flujos de trabajo, puede crear múltiples servicios para cada flujo de trabajo. La mayoría de los desarrolladores prefieren dividir proyectos más grandes en servicios independientes más pequeños, que tengan una o más funciones. Cada servicio puede resolver varios problemas comerciales. Con la popularidad de los marcos sin servidor, los usuarios pueden acceder a funciones como servicios.

Una vez que cree estas funciones como servicios y las implemente, el siguiente paso es estructurarlas y controlar su versión; puede tener todos sus servicios en un repositorio (mono-repo) o tener un repositorio separado para cada servicio que tenga ( multi-repo)!

repositorio mono repositorio múltiple

¿Qué es un Mono-repo?

En un enfoque mono-repo, puede mantener todos sus servicios en un solo (mono) repositorio. Todavía puede implementar y administrar cada servicio de forma independiente. Los servicios pueden compartir bibliotecas y códigos comunes.

Empresas como FacebookGoogle y Dropbox usan mono-repo.

Ventajas de Mono-repo

El enfoque mono-repo tiene muchas ventajas:

Un solo lugar para almacenar todo el código del proyecto y todos los miembros del equipo pueden acceder Fácil de reutilizar y compartir código, colaborar con el equipo Fácil de entender el impacto de su cambio en todo el proyecto La mejor opción para la refactorización de código y grandes cambios en el código Los miembros del equipo pueden obtener una vista general de todo el proyecto Dependencias fáciles de administrar

Desventajas de Mono-repo

Por supuesto, mono-repo tiene algunas desventajas, la principal es el rendimiento. Si su proyecto crece y se agregan más archivos cada dos días, las operaciones de desprotección, extracción y otras pueden volverse lentas y las búsquedas de archivos pueden demorar más.

Además, si contrata a muchos contratistas independientes para su proyecto, darles acceso a todo el código base puede no ser tan seguro.

Además, es difícil implementar implementaciones continuas (CD), porque muchas personas pueden registrar sus cambios y es posible que su sistema de integración continua (CI) tenga que realizar varias reconstrucciones.

Las grandes empresas que usan mono-repos tienen herramientas personalizadas para manejar los problemas de ampliación. Por ejemplo, Facebook utiliza un sistema de archivos personalizado y un control de código fuente.

¿Qué es un Multirepo?

En un enfoque de varios repositorios, hay varios repositorios que alojan varias bibliotecas y servicios de un proyecto. Si un servicio cambia, los desarrolladores deben reconstruir solo ese servicio y no todo el proyecto. Los individuos y los equipos pueden trabajar en sus servicios específicos y obtienen acceso solo a los servicios requeridos.

Compañías como Netflix y Amazon usan múltiples repositorios.

Ventajas de Multi-repo

El número de empresas que adoptan multi-repo es mucho mayor que el de mono-repo, por las siguientes razones:

Cada servicio y biblioteca tiene su propio control de versiones. Las extracciones y extracciones de código son pequeñas y están separadas, por lo que no hay problemas de rendimiento incluso si el tamaño del proyecto crece. Los equipos pueden trabajar de forma independiente y no necesitan tener acceso a todo el código base. Desarrollo más rápido y flexibilidad. Cada servicio. se puede lanzar por separado y tener su propio ciclo de implementación, lo que facilita la implementación de CI y CD Mejor control de acceso: no es necesario que todos los equipos tengan acceso completo a todas las bibliotecas, pero pueden obtener acceso de lectura si lo necesitan

Desventajas de Multi-repo

Las dependencias y bibliotecas utilizadas en los servicios y proyectos deben sincronizarse periódicamente para obtener la versión más reciente. Fomenta una cultura aislada en algún momento, lo que genera código duplicado y equipos individuales que intentan resolver el mismo problema. Cada equipo puede seguir un conjunto diferente de mejores prácticas. por su código que causa dificultades para seguir las mejores prácticas comunes

Diferencias entre Mono y Multi Repo

Recapitulemos las diferencias entre mono-repo y multi-repo:

Mono-repo Multirepo
Todo el código de todos los proyectos de una organización reside en un repositorio central Cada servicio y proyecto tiene un repositorio separado
Los equipos pueden colaborar y trabajar juntos; pueden ver los cambios de los demás Los equipos pueden trabajar de forma autónoma; los cambios individuales no afectan los cambios de otros equipos o proyectos
Cada persona tiene acceso a toda la estructura del proyecto. Los administradores pueden limitar el control de acceso al proyecto o servicio al que el desarrollador necesita acceder
Pueden ocurrir problemas de ampliación si el tamaño del proyecto sigue creciendo Buen rendimiento, debido al código limitado y unidades de servicio más pequeñas.
Difícil de implementar Implementación continua (CD) e Integración continua (CI) Los desarrolladores pueden lograr fácilmente CD y CI porque pueden crear servicios de forma independiente
Los desarrolladores pueden compartir fácilmente bibliotecas, API y otros códigos comunes a medida que se actualizan en el repositorio central. Cualquier cambio en las bibliotecas y otros códigos comunes debe sincronizarse periódicamente para evitar problemas más adelante.

Conclusión

Tanto mono-repo como multi-repo son igualmente populares y cuál es mejor depende del tamaño de su proyecto, los requisitos del proyecto y el nivel de control de acceso y control de versiones que necesita.

Mono-repo favorece la consistencia, mientras que multi-repo se enfoca en el desacoplamiento. Mientras que en un repositorio único, todo el equipo puede ver los cambios realizados por una persona, el repositorio múltiple crea un repositorio separado para cada equipo, que tiene acceso solo a los servicios necesarios. Si desea utilizar una combinación de mono-repo y multi-repo para sus proyectos, puede optar por meta, una herramienta para administrar múltiples proyectos y bibliotecas.

También te pueden interesar Recursos gratuitos para aprender Git.

Botón volver arriba