Multirepo explained

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

Usage

Multirepo architecture is the most common architecture in use and can be seen in top companies such as:

  • Amazon
  • Netflix

Interesting Reading