모노레포 (Monolithic Repositories)
최근 부서이동을 하면서 새로운 프로젝트를 인수인계 받고 있는데요. 해당 프로젝트가 Monorepo 로 구성되어 있었습니다. Monorepo는 이미 Google, Facebook, Microsoft 같은 글로벌 테크 회사들이 사용중인데요. Monorepo 는 한개의 프로젝트로 구성된 Monolith 과, 여러개의 레포지토리로 구성된 Multi-Repo, 의 대안으로 나온 소프트웨어 개발 전략 입니다. Monolith(단일 계층 소프트웨어 어플리케이션) 은 단일 버전이라 코드의 재사용성이 용이하지만, 관심분리가 어렵고, Multi-Repo 는, 여러 레포지토리라서 관심분리가 용이하지만, 재사용성이 어렵고 관리 포인트가 많아집니다. Monorepo는 2개 이상의 프로젝트가 하나의 Repository 로 관리되어, 코드의 재 사용성 이 용이 하면서, 각각의 서브 패키지가 독립적 이기 때문에 관심 분리가 가능합니다. 각각의 서브 패키지들은 Symbolic link 로 연결되어 각각의 패키지를 수정하면 의존하고 있는 다른 패키지에 바로 반영 되어 서로 다른 서브 프로젝트 간의 소스 코드를 손쉽게 공유가 가능합니다. 모듈을 적절히 분리하여 관심 분리를 이루면서도, 동시에 분리된 모듈을 쉽게 참조하고 테스트 및 빌드 배포도 쉽게 할 수 있는 것이죠. 만약 프로젝트가 유사한 제품의 집합, 공통 기능을 재사용 하는 프로젝트의 집합 이라면 Monorepo 도입을 고려해보는것도 괜찮을것 같습니다