Monorepo (ένα αποθετήριο για πολλά έργα/υπηρεσίες) και polyrepo (ένα ξεχωριστό αποθετήριο ανά έργο) είναι δύο στρατηγικές για την οργάνωση του κώδικα σε πολλαπλά έργα. Κάθε μία έχει σημαντικές αντικρουόμενες απαιτήσεις που επηρεάζουν τη συνεργασία, τα εργαλεία και τη κλιμάκωση — η κατανόησή τους ενημερώνει σημαντικές αρχιτεκτονικές αποφάσεις.
Monorepo — ένα αποθετήριο για όλα
Many projects/services/libraries in a SINGLE repository:
✓ SHARED code/libraries easy to use and refactor (one place, atomic changes)
✓ ATOMIC commits across projects (change an API and all its consumers together)
✓ Unified tooling, versioning, CI; consistent standards; easy cross-project visibility
✓ Simplified dependency management (one version of shared code)
✗ Repo can get HUGE (needs scaling tooling — sparse checkout, build caching)
✗ Needs sophisticated build/CI tooling (Nx, Turborepo, Bazel) to be efficient
✗ Broad access; CI must be smart (only build what changed)
→ Used by Google, Meta, etc. (with heavy tooling investment).
