상세 컨텐츠

본문 제목

터보레포(Turborepo) 사용기 (with. monorepo)

라이브러리

by ougi 2025. 4. 18. 21:26

본문

오늘은 제가 요즘하고 있는 프로젝트에 적용된 터보레포에 대해서 알아보고 이야기해보겠습니다

그리고 터보레포를 알기 전에 간단하게 모노레포에 대해서도 알고 가보겠습니다


모노레포란?

모노레포란 두 개 이상의 프로젝트 코드를 하나의 레포지토리(저장소)에서 관리하는 방법을 말합니다

모노레포는 두 프로젝트가 겹치는 부분이 많다면 적용하는 것을 적극적으로 추천드립니다

근데 왜 굳이 모노레포를 사용할까요? 모노레포에 장단점에 대해서 알아보자면

 

장점

  • 코드의 재사용성을 높일 수 있습니다
  • 모든 코드가 단일 코드 저장소에 있기 때문에 의존성 문제를 빠르게 해결할 수 있습니다
  • 협업이 용이해집니다
  • 코드리뷰와 테스트를 쉽게 일관되게 수행할 수 있습니다 

단점

  • 빌드하는 시간이 길어질 수 있습니다
  • 저장소 크기가 커질 수 있습니다
  • 저장소가 복잡해질 수 있습니다
  • 특정 프로젝트만 업데이트하기 어려울 수 있습니다

터보레포(Turborepo)란?

 

터보레포는 모노레포 구축을 도와주고 빌드 도구를 제공해 주는 라이브러리입니다

모노레포를 구축하는데 꽤 많은 시간이 필요한데 터보레포가 대신 구축을 해주기 때문에 프로젝트 세팅시간을 단축할 수 있습니다

Turborepo의 기본 원칙은 한 번 작업을 수행하며 수행한 계산은 이후 다시 수행하지 않는 것입니다. 따라서 두 번째 실행할 때는 이전에 계산한 작업은 건너뛰고 이전에 캐싱해 놓은 로그를 다시 보여줍니다. 

 

특징

터보레포는 9가지 특징을 가지고 있습니다

1. Incremental builds

작업 진행을 캐싱하여서 이미 계산한 내용을 건너뛰는 것을 의미합니다 빌드를 한 번만 하는 걸 목표로 합니다

 

2. Content-aware hashing

수정시간으로 빌드하는 것이 아니라 파일 자체로 변경된 파일만 빌드하기 때문에 빌드 시간이 줄게 됩니다

 

3. Cloud caching

클라우드 저장소(예: AWS S3, Vercel, Turborepo Remote Cache 등)에 빌드한 것들을 캐시 한 것을 올리기 때문에 클라우드에 올라간 캐시로 훨씬 더 다른 팀원들이 빠르게 빌드를 진행할 수 있다고 합니다

 

4. Parallel execution

여러 코어를 사용해서 빌드를 최대한 병렬적으로 실행하여서 빌드 시간을 줄입니다

 

5. Task pipelines

태스크 간의 연결을 정의해서 빌드를 언제 어떻게 실행할지 판단해서 최적화합니다

 

6. Zero runtime overhead

런타임 결과물을 다루지 않고 빌드할 때 정확히 정리합니다

 

7. Pruned subsets

빌드에 필요한 요소만으로 모노레포의 하위 집합을 생성하여서 배포 속도를 높입니다

 

8. JSON configuration

별도의 작업 없이 JSON 설정으로 터보를 사용할 수 있습니다

 

9. Profile in your browser

빌드 과정을 기록하고 시각화해서 시간이 오래 걸리는 작업을 쉽게 찾아낼 수 있습니다


사용법

npm install turbo --global # npm

yarn global add turbo # yarn

pnpm install turbo --global # pnpm

이렇게 전역적으로 설치하면 바로 사용할 수 있습니다

 

npx create-turbo@latest # npm

yarn dlx create-turbo@latest # yarn

pnpm dlx create-turbo@latest # pnpm

새롭게 모노레포를 사용하기 위해서 create-turbo 패키지를 사용합니다

 

apps 폴더

이 폴더에는 개별 프로젝트들이 위치합니다. 초기 설정으로 docs web이라는 두 개의 Next.js 최신 버전 프로젝트가 생성됩니다

packages 폴더

모노레포 내에서 공통적으로 사용될 설정 파일이나 UI 컴포넌트를 담는 곳입니다


글을 마치며

이렇게 제가 쓴 라이브러리에 대해서 한 번 더 정리해 보았는데 빌드가 그냥 모노레포에 비해서 훨씬 빨랐던 경험이 있었던 거 같은데

그 이유에 대해서 자세히 알게 된 거 같아서 좋았던 거 같습니다 

글을 읽어주셔서 감사합니다!!!

728x90

관련글 더보기