Le débat éternel
Un monorepo héberge plusieurs projets dans un seul dépôt; multi-repo les sépare. Les deux livrent des produits à l'échelle.
Ce que vous donne le monorepo
- Commits atomiques cross-projets.
- Source unique de vérité.
- Refactoring à grande échelle plus facile.
- Tooling unifié.
Ce que vous coûte le monorepo
- La taille du repo grandit sans borne.
- Investissement en tooling : Bazel, Nx, Turborepo.
- La granularité des permissions est plus difficile.
- CI doit faire des builds affected-only.
Ce que vous donne multi-repo
- Cadence de release indépendante.
- Repos plus petits et focalisés.
- Frontières naturelles de permissions.
- Isolation des pannes.
Ce que vous coûte multi-repo
- Les changements cross-repo nécessitent des PRs coordonnés.
- Les bibliothèques partagées deviennent des problèmes de "diamant de versions".
- Le tooling dérive.
- La découvrabilité souffre.
Tooling essentiel pour monorepo
git sparse-checkout set apps/web shared/ui
git clone --filter=blob:none <url>
npx nx affected:test --base=main
Outils de coordination 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
Facteurs de décision honnêtes
- Sous 20 ingénieurs, multi-repo va bien.
- Au-dessus de 200, monorepo gagne si vous investissez en tooling.