
MonoRepo는 Monolithic Repositories의 약자로, 하나의 리포지토리에서 여러개의 프로젝트를 구성하는것을 의미한다.
일반적으로는 하나의 리포지토리 안에 하나의 프로젝트가 들어 있는것이 일반적이다. 이러한 형태의 프로젝트 구성을 MultiRepo 혹은 PolyRepo라고 한다.
MonoRepo이 나타낸 배경과 필요성을 이해하기 위해서 프로젝트 시작부터 MonoRepo까지의 변화 과정을 공부해보려고 한다.
일반적으로 프로젝트 초기에는 Monolithic 형태로 서비스를 구성한다.
왜냐하면 프로젝트의 크기가 크지 않기 때문에 한 곳에서 처리하는것이 효율적이기 때문이다.
따라서, 하나의 리포지토리에서 모든 서비스를 구현하게 된다.
프로젝트가 커지면서 Monolithic 형태의 프로젝트는 여러 가지 문제를 발생시킨다.
아무래도 가장 큰 문제는 코드에서 높은 결합도와 낮은 응집도를 갖아 수정이 어려워질것이다.
이 문제를 해결하기 위해서 프로젝트를 여러 서비스로 분리할것이고, 각각의 서비스를 하나의 리포지토리에서 관리할지 서로 다른 리포지토리에서 관리할지 결정해야 한다.
각각의 서비스를 여러개의 리포지토리로 나눠서 관리하는 방식을 MultiRepo(PolyRepo)라고 부른다.
서비스 별로 리포지토리를 만들어서 관리하며 그에 장점과 단점은 아래와 같다.
장점
단점
각각의 서비스를 하나의 리포지토리에서 관리하는 방식을 MonoRepo라고 부른다.
장점
단점
https://velog.io/@sms8377/DevOps-MonoRepo%EB%9E%80
https://tech.buzzvil.com/handbook/multirepo-vs-monorepo/