¿Qué es Monorepo? ¿Debería usarlo?

El patrón de Monorepo almacena todos sus proyectos y activos en un solo repositorio de control de versiones. Usted consolidará todos los archivos de configuración de su lado del servidor, front-end e infraestructura en un solo repositorio al que todos contribuyen. ¿Deberías hacerlo? El patrón es ampliamente utilizado por grandes compañías de tecnología.

Las organizaciones utilizan Monorepos como Google, Microsoft y Facebook. ¿Qué es sobre un monorepo que lo hace tan atractivo? Monorepo se opone a Multirepo.

Usted crea un nuevo repositorio para cada uno de sus proyectos utilizando el patrón multi-repo. En general, es bastante obvio cuando un proyecto merece su propio repositorio.

Si está desarrollando una solicitud, es posible que tenga tres ubicaciones de repositorio: todo lo que conforma su negocio se descompone en unidades funcionales distintas. Con un monorepo, siempre tomas la vista agregada.

Todos sus activos son versionados de forma consistente. La colaboración es uno de los beneficios más frecuentemente citados de Monorepo. Todos ven todo en un monorepo.

La contingencia

Esto aumenta la claridad, promueve la transparencia y facilita que los miembros de diferentes equipos se accedan al trabajo de los demás. Los individuos pueden colaborar más fácilmente en una tarea que se encuentre fuera de sus responsabilidades normales. En un escenario que involucra a varios repositorios, es posible que deba solicitar el acceso al repositorio correspondiente primero.

Esto introduce la fricción de que el enfoque de Monorepo evita completamente. Monorepos anima a todos a que tomen la propiedad del resultado final en lugar de las partes componentes. Esto puede resultar en que las personas se sientan más comprometidas e informadas sobre los eventos actuales.

Si bien un desarrollador de aplicaciones nunca puede tocar los componentes del servidor, pueden «sentir» su evolución a medida que avanza su propio trabajo. Además, Monorepos simplifica la abstracción del código. Es bastante común que sus componentes de backend y frontend para compartir funcionalidad similar.

Abstracción de esto en una biblioteca compartida tiene sentido. Bajo el paradigma multi-repo, tendrá que crear un nuevo repositorio y luego vincularlo de los demás.

Esfuerzos de colaboración

Esto podría lograrse creando un paquete o utilizando los submódulos GIT. En cualquier caso, se requiere un trabajo significativo antes de que su código abstraído pueda reintroducido en los proyectos de los que se obtuvo.

Si tiene un monorepo, el proceso se simplifica. Puede mover el código a un directorio conveniente y luego importarlo donde sea necesario. Una «abstracción» toma solo unos segundos.

Cuando llegue el momento de documentar el código, existe una comodidad similar: puede incorporar los documentos en su sistema de documentación compartida. Además, los repositorios multipresentados presentan dificultades prácticas al abstraer el código.

Con frecuencia, un miembro del equipo de desarrollo carece de los permisos requeridos de Gitlab, GitHub o Bitbucket para crear un nuevo repositorio. Esto resulta en un aumento de los gastos generales cuando se requiere un líder del equipo para aprobar la nueva biblioteca y configurar el repositorio.

Facilidad de abstracción

Al obviar la necesidad de procesos especiales de abstracción, Monorepos asiste a desarrolladores individuales en la creación de código reutilizable. Además de abstraer el código, Monorepos simplifica el mantenimiento de los módulos compartidos.

No está obligado a actualizar a cada consumidor de un paquete cuando esté actualizado. Debido a que todas las dependencias están contenidas dentro de la misma base de código, se pueden hacer referencia sin el uso de un administrador de paquetes o versiones dedicadas. Utilizar un monorepo puede ayudar a acelerar el desarrollo.

Tocamos esto brevemente en las secciones anteriores, pero se hace repetir. Monorepos eliminan las acciones redundantes.

Si necesita refactor, es tan simple como realizar un hallazgo y reemplazar a través de toda la base de código. Hay menos conmutación de proyectos y menos solicitudes de tracción para revisar.

Velocidad de desarrollo

Los contribuyentes ganan un aumento de las capacidades de autoservicio. Debido a que la información no se silencia en los repositorios de equipo, las personas están mejor equipadas para encontrar los detalles que requieren.

Esto puede reducir significativamente la comunicación hacia atrás durante la planificación del código y la revisión. Estas cualidades también son ventajosas al refactorizar un sistema existente.

El intento de deconstruir una solicitud heredada en sus componentes «frontend» y «backend» puede ser el enfoque incorrecto. Los cambios en un lado invariablemente tendrán un efecto en el otro, que requirió la reconciliación continua de los dos repositorios.

Al utilizar un Monorepo, puede refactar rápidamente las grandes franjas de la base de código, asegure en el conocimiento de que está afectando a todo el sistema en lugar de componentes aislados. Monorepos son adecuados para grandes equipos que trabajan en numerosos proyectos.

Los beneficios no siempre son evidentes de inmediato con algunos proyectos pequeños. Los monoros funcionan mejor en las escalas donde un enfoque multi-repo se produciría en ineficiencia perceptible.

Monorepos no son sinónimo de monolitos. Normalmente, un monolito se refiere a una aplicación en la que se entremezclan los datos y las capas de presentación. Cada vez que se realiza un cambio, se implementa todo el sistema.

En general, Monorepos encapsule Multi.