개요
진행중인 프로젝트에서 웹과 앱 버전을 모두 제작해야 했는데, 웹 버전과 앱 버전의 레포지토리를 따로 관리해서 관리하다보니, 이런저런 애로사항이 많아. 한 곳에서 관리를 할 수는 없나 하던 차에, 모노레포라는 구조를 알게 되어 적용해보기 위해 조사해보게 되었다.
Monorepo?

<aside>
📢
“모노레포란 잘 정의된 관계를 가진, 여러 개의 독립적인 프로젝트들이 있는 하나의 레포지토리이다.”
</aside>
- 여러 프로젝트나 애플리케이션의 코드를 단일 저장소에서 관리하는 개발 전략
vs Monolithic
- monolithic은 모듈화 없이 하나의 프로젝트로 구성된 단일 애플리케이션 구조
- monorepo는 여러 프로젝트/애플리케이션을 포함하는 저장소 구조
기존의 멀티레포(Polyrepo)가 가지고 있던 문제점

- 새 프로젝트 생성 비용이 큼
- 프로젝트 간 코드 공유가 어려움
- 같은 이슈를 수정하기 위해 각각의 레포지토리에 커밋이 필요
- 히스토리 관리의 어려움
- 제각각인 툴링으로 개발자 경험이 일관적이지 않음
모노레포가 해결해주는 것
- 새 프로젝트 생성 비용이 작음
- 프로젝트간 코드 공유가 쉬움
- Atomic Commits