Reading time: 10 minutes
Multirepo is a software architecture which means a separate repository for each project. Each project is an independent working unit.
It can be a web application, library, mobile application, backend service, standalone CLI application and many others.
Key points in Multirepo
Each project has full control to manage its evolution and deployment. There should be little to no coupling between projects.
Each project manages dependencies on its own. Common library is in a repo of itself. Projects that depend on it can use any version of that library that they deem fit. It can be argued that sharing code is also introducing coupling. And it may result in long tail of maintenance of old libraries. Anyway, Managing dependencies is hard.
Each team's work are different and does not require collaborate between teams
Deployment Pipeline can be easily setup for each project
Access control can be applied at project level such as each employee has access to a small section of projects
This architecture is the most common among developers and can be managed entirely using open source tools
Code management and tooling invesment is at minimum
Multirepo architecture is the most common architecture in use and can be seen in top companies such as: