monorepo로 관리하면 어떤 장점이 있을까 ?
우리 팀은 모노 레포로 프로젝트들을 관리하고 있다.
이전 회사에서는 서비스마다 레포지토리를 분리하여 관리하고 있었기 때문에 처음 입사하고 모노레포를 clone 받아 코드 구조를 파악할 때 낯설었던 기억이 있었다.
나는 당연히 프로젝트 단위로 레포지토리를 관리하는 것이 CVS의 의도대로 코드를 관리하는 것이며 적합한 방법이라고 생각했는데, 이번에 monorepo로 작업하면서 직접 느끼고, 찾아보면서 다른 시각을 가지게 되었다.
monorepo(여러 프로젝트를 하나의 레포지토리로 관리)의 장점으로 제가 직접 느낀 부분은 모듈화가 간편하다는 점이었다, 여러 프로젝트에 사용할 만한 컴포넌트들을 모듈화해서 손쉽게 공유할 수 있는 것이 장점이라고 느껴졌다. (서로 다른 레포로 관리하더라도 라이브러리화해서 어떻게 공유할 수 있겠지만 고려해야될 부분과 불편한 부분이 많을 것이다. )그리고 여러 라이브러리들의 버전관리가 용이하다는 것도 큰 장점이라 여겨졌다.(특히 버전이 자주 바뀌고, 하위호환이 잘 안되는? Javascript 진영에서는 더욱이 큰 장점이라 생각들었다.)
그리고 한 팀에서 여러 서비스를 개발하고 관리하는 우리 팀의 특성상 monorepo를 사용하는 것이 작업의 효율성을 증대시키는데도 도움이 될 것이라 생각한다. (반대로 이전회사에서는 서비스 별로 팀이 나눠져 있었고, 각 팀 단위로 개발 규칙들이 있을 것이기 때문에 레포를 분리해서 관리하는 것이 편할 것이다.)
구글도 크롬과 안드로이드를 제외한 나머지 코드를 하나의 모노레포로 관리한다고 한다! 레포지토리 용량이 86TB이고, 해당 레포에 하루 커밋수가 40,000정도 된다고 한다. ㅋㅋ