monorepo 모노레포

2023. 2. 17. 16:48카테고리 없음

반응형

사내에서 모노레포 작업이 한창인듯 한데 개인적으로는 아직 접해보지 못한 미지의 영역이라 시장 조사 차원에서 모노레포가 왜 필요하며 어떤 역할을 하고 어떤 도구들이 있는지 포괄적으로 알아볼게요.

monorepo?

mono는 "하나"를 의미하는 그리스어의 접두사로 말 그대로 하나의 repository(저장소) 라는 뜻이에요. 사내에서 여러 프로젝트를 진행하게 될텐데 만약 프로젝트마다 별도의 github repository를 만들어서 작업한다면 프로젝트가 늘어날때 마다 repository도 늘어나겠죠. 하지만 Monorepo를 이용한다면 하나의 repository에서 모든 프로젝트가 관리되기 때문에 별도의 repository를 만들지 않아도 됩니다.

 

사내에서도 polyrepo 방식으로 앱과 라이브러리를 각각 별도의 repository로 구현하다가 비슷한 성격끼리 다시 묶어서 하나의 monorepo로 방식으로 구현하고 있어요.

 

여기서 중요한건 단순히 하나의 단일 저장소에 여러 프로젝트가 있다고 해서 monorepo가 아니라는 점이에요. monorepo는 monolith 다릅니다. monolith 는 전체 소프트웨어가 단일 애플리케이션으로 구동되는 방식을 의미해요.

 

monolith: 하나의 소프트웨어를 구성하는데 모든 코드가 하나의 저장소에 있다면 모놀리스.

monorepo: 여러 프로젝트나 모듈을 단일 저장소에서 관리하는 구성 방식을 통해서 구현된 하나의 저장소. 여러 앱이 있을 수도 있고 다양한 패키지가 존재해서 별도의 앱으로 관리 할 수 있어요.

Tools

모노레포를 위한 도구들은 생각보다 많은 편인데요. state of 2022 기준으로 대표적인것 몇 개만 나열해볼게요.

- Truborepo

- npm Workspace

- yarn Workspace

- nx

- Lerna

 

참고

모노레포에 대한 오해

모노레포 툴즈

 

 

 

반응형