El debate eterno
Un monorepo aloja muchos proyectos en un repositorio; multi-repo los divide. Ambos entregan productos a escala.
Lo que te da el monorepo
- Commits atómicos cross-proyecto.
- Una sola fuente de verdad.
- Refactoring a gran escala más fácil.
- Tooling unificado.
Lo que te cuesta el monorepo
- El tamaño del repo crece sin límite.
- Inversión en tooling: Bazel, Nx, Turborepo.
- La granularidad de permisos es más difícil.
- CI debe hacer builds de afectados o cada push corre cada test.
Lo que te da multi-repo
- Cadencia de release independiente.
- Repos más pequeños y enfocados.
- Límites naturales de permisos.
- Aislamiento de fallos.
Lo que te cuesta multi-repo
- Cambios cross-repo requieren PRs coordinados.
- Las librerías compartidas se vuelven problemas de "diamante de versiones".
- El tooling deriva.
- La descubribilidad sufre.
Tooling esencial para monorepo
git sparse-checkout set apps/web shared/ui
git clone --filter=blob:none <url>
npx nx affected:test --base=main
Herramientas de coordinación multi-repo
gh repo list myorg --limit 200
for repo in $(gh repo list myorg --json name -q '.[].name'); do
gh pr list -R myorg/$repo
done
Factores de decisión honestos
- Por debajo de 20 ingenieros, multi-repo está bien.
- Por encima de 200, monorepo gana si inviertes en tooling.