모노 리포지토리 및 다중 리포지토리 살펴보기
리포지토리는 일반적으로 git 하위 디렉터리에 작업 기록이 저장되는 곳입니다.
코드 리포지토리는 어떻게 구성해야 할까요? 개발 팀은 리포지토리와 소프트웨어 문제를 분리하는 것을 목표로 합니다. 시간이 지남에 따라 코드 리포지토리가 관련 없는 코드와 아티팩트로 어수선해지기 일쑤입니다.
리포지토리를 구성하는 데는 모노 리포지토리(Monorepo) 사용과 다중 리포지토리 사용이라는 두 가지 기본 원리가 있습니다.
- 모노 리포지토리는 모든 소스 코드가 하나의 리포지토리에 보관되는 단일 원본 제어 패턴입니다. 모든 직원에게 한 번에 모든 항목에 대한 액세스 권한을 쉽게 제공합니다. 복제만 하면 끝입니다.
- 다중 리포지토리는 프로젝트를 별도의 여러 리포지토리로 구성하는 것입니다.
모노 리포지토리와 다중 리포지토리 원리의 근본적인 차이점은 효율적인 팀 협력을 지원하는 방식에 있습니다. 극단적인 시나리오에서 다중 리포지토리 뷰는 각 하위 팀이 각자의 리포지토리에서 작업할 수 있음을 보여줍니다. 각자의 영역에서 작업하면서 생산성을 최적화하는 라이브러리, 도구 및 개발 워크플로를 사용할 수 있습니다.
본인의 리포지토리에서 개발되지 않은 항목을 사용하는 비용은, 근처에 앉아 있는 동료 작성한 것이라도, 타사 라이브러리 또는 서비스를 사용하는 비용과 같습니다.
라이브러리에 버그가 발생하는 경우 해당 리포지토리에서 문제를 해결해야 합니다. 새 아티팩트를 게시했다면 본인의 리포지토리로 돌아가 필요한 코드를 변경할 수 있습니다. 그러나 버그가 다른 코드 베이스에 있거나 다른 라이브러리, 도구 또는 워크플로가 포함된 경우 해당 시스템의 소유자로부터 도움을 구하고 응답을 기다려야 할 수 있습니다.
모노 리포지토리 뷰를 사용하는 경우 복잡한 종속성 그래프를 관리하면 단일 피로지토리를 사용하기가 더 어려워질 수 있습니다. 각 팀의 독립적 작업을 허용함으로써 얻는 이점이 감소될 수 있습니다. 일부 팀은 효율적인 작업 방법을 찾을 수 있지만, 모든 그룹이 그런 것은 아닙니다. 또한 어떤 팀에서 최적이 아닌 접근 방식을 선택하는 경우 다른 팀에서 얻은 이점이 상쇄될 수도 있습니다. 모노 리포지토리에 모든 작업을 통합하면 이 단일 리포지토리를 면밀히 모니터링하는 데 집중할 수 있습니다.
누구든지 변경 작업을 할 수 있는 모노 리포지토리에서는 다른 리포지토리에 변경 내용을 적용하거나 팀에서 변경해 주기를 기다리는 번거로움을 피할 수 있습니다.
라이브러리에서 버그를 발견하면 본인의 코드에서 버그를 찾는 것만큼 쉽게 수정할 수 있습니다.
참고 항목
Azure DevOps에서는 일반적으로 한 프로젝트 안에서 연결된 각 솔루션에 대해 별도의 리포지토리를 사용합니다.