모노리스(Monolith) 라고도 부르며, 하나의 서비스가 하나의 거대한 구조를 가질 때 부르는 용어이며, 앱에 사용되는 모든 코드가 들어가 있다. 하지만 한 공간에 모든 코드를 저장하다 보니, 규모가 커지면 커질수록 생산성이 떨어지게 된다.
이런 단점들 때문에, 마이크로서비스 아키텍쳐가 등장하게 된다.
마이크로서비스 아키텍쳐는, 모놀리식 아키텍쳐의 단점을 보완하기 위해 만들어진 패턴으로, 최소한의 공통 모듈만을 두고, 각각의 서비스를 다른 저장소로 관리한다. 이로 인해 개발 속도와, 안정성, 확장성등이 증가하였고, 이를 구현하기 위해 멀티레포 구조를 사용하기 시작했다.
하지만 하나의 서비스를 개발할 때 마다 각각의 저장소에서 다른 버전의 언어, 프레임워크들을 사용하다 보니 의존성 문제도 발생했다.
따라서 개발자들은 위의 두 패턴에서 장점만 챙긴 아키텍쳐를 생각하기 시작했다.
모노레포는 둘 이상을 프로젝트를 동일한 저장소에서 관리하는 소프트웨어 개발전략이다. 그저 한 저장소에 프로젝트를 여러 개 욱여넣는다고 모노레포가 되는 것이 아니라, 각각의 프로젝트들이 서로 공통적인 부분과, 의존성이 있을 때, 이를 하나의 저장소로 관리하는 것이 모노레포이다.
모노레포는 다음과 같은 편의성을 제공한다