Turbo Repo란 JS 생태계를 위한 고성능 Mono Repo 빌드 시스템이다.
Mono Repo란 여러 개의 프로젝트가 하나의 저장소(Repository)에서 관리하는 방식을 이야기 한다.
Mono Repo의 장점으로 코드의 재사용, 의존성 관리의 편리함, 통합 작업을 쉽게 할 수 있다.
단점으로는 레포지토리의 사이즈가 커짐에 따라 빌드 속도 저하, VCS에서 관리할 대상이 많아짐에 따라 성능 저하가 있을 수 있다.
Turbo Repo의 주요 특징은
이러한 장점에 입각하여 도입하게 된 이유는 Backend, Frontend 모두 Typescript 기반에서 eslint 등 공통으로 적용되는 모듈들이 있는데 이것을 두 벌로 작업하는 것이 아니라 한 번에 처리하기 위해 Mono Repo를 도입하였다.
또한, Backend, Frontend에서 공통적으로 사용하게 될 API 데이터 타입에 대한 의존성과 Frontend에서 사용하는 공통 컴포넌트에 대한 빌드 속도 증가를 위해 Turbo Repo의 캐싱 기능을 적용할 예정이다.
npm 에서는 package.json에 Mono repo 구성을 위해 workspace라는 기능을 제공한다.