SlideShare uma empresa Scribd logo
1 de 14
• 최초의 모놀리식 방식은 소스 코드를 모듈화하지 않고 하나의 Repository
에서 모두 관리
• 모든 코드가 단일 버전으로 서로 의존하기 때문에 코드 재사용에 용이하고
배포 과정도 단순하다는 장점
• 관심사 분리가 어렵고, 기능 추가나 삭제가 Repository 전체에 영향을 줄 수
있다는 단점
• Repository 별 Owner를 지정 가
능,
• 버전 관리를 통해 관심 분리 기능
변경이 다른 Repository에 영향을
주지 않음
• 각 Package가 Repository로 분리
된다면 하나의 Repository는 하나
의 CI를 구성 할 수 있기 때문에
CI의 build 속도가 빨라짐
• 각 모듈이 서로 독립된 영역에 존
재하기 때문에 코드 단계에서의 재
사용이 어려워졌고 빌드와 배포 과
정이 복잡해짐
• Repository가 분리되어있기 때문에
공통된 코드가 중복될 가능성이 커
짐
• 프로젝트 및 Package의 규모가 커
짐에 따라 의존도가 복잡해지고 버
전 차이에 따라 종속성이 달라지고
충돌을 야기할 수 있음
• Repository가 하나이기 때문에 모든
프로젝트의 코드간의 관계와 의존성
을 확인하기 쉬움
• 모든 커밋 히스토리가 한 Repository
에 남기 때문에 추적, 개발 방향을 이
해하는 게 쉬워짐
• 여러 곳에서 중복으로 사용하는 코드
를 공유, 재사용이 쉬움
• 배포와 빌드, 테스트를 한 번에 처리할
수 있음
• 하나의 Repository에서 관리가
되기 때문에 규모가 커짐
• MultiRepo와 반대로 Repository
규모가 크기 때문에 CI build 속
도가 느림
• Package간 의존성 관리가 쉽다
는 장점이 있지만, 과도한 의존
관계가 나타날 수 있음
Vercel이 인수한 Turborepo는 Javascript와 Typescript
코드 베이스의 모노레포를 위한 고성능 빌드 시스템
(AWS, Miro, PayPal, Discord, LINE+ 등 여러 프로젝트에서 사용)
• 작업 진행을 캐싱해 이미 계산된
내용은 건너 뛰는 것을 의미
• 빌드는 딱 한 번만 하는 것을 목표
• 타임스탬프가 아닌 콘텐츠를 인
식하는 방식으로 해싱을 지원
• 모든 파일을 다시 빌드하는 것이
아니라 변경된 파일만 빌드
설치 명령어 : Npx create-turbo@latest .
설치 시 docs, web 다른 프로젝트와
Typescript, eslint, next 등 기본 설정 파일이
생성
TurboRepo를 적용 할 폴더를
workspace에 지정
각 프로젝트의 package.json에
private: true를 설정 해야
TurboRepo가 폴더간 링크를 연결
dependsOn
• 종속성을 먼저 빌드 한 후 스크립트 실
행
• 종속성을 여러 개 지정할 경우 순서에
맞춰서 빌드 진행
cache
• 핫 로딩이 필요할 경우 캐시를 비활
성화 할 수 있음
outputs
• 캐시를 활성화 할 폴더를 지정
• 첫 빌드 시 docs, web 프로젝트가 같이 빌드
• 캐싱 된 이력이 없어 캐시를 진행
• 14.95s의 빌드 속도를 가짐
• 프로젝트가 실제로 캐시에 저장 되어 있음
• TurboRepo가 다시 빌드 할 필요가 있나 없나
판단
• 0.33s의 빌드 속도를 가짐
• Docs 프로젝트 수정 후 빌드 진행
• TurboRepo가 다시 빌드할 필요가 있나 없나 판단
• Docs 프로젝트만 새롭게 캐시 저장
• 6.92s의 빌드 속도를 가짐
Yarn build —force
• 캐시 된 이력을 무시하고 전부 다시
캐시 할 때 사용
Yarn build —scope={docs}
• 원하는 프로젝트만 build 할 수 있음
• MultiRepo, MonoRepo 환경 구축 가
능

Mais conteúdo relacionado

Semelhante a TurboRepo

몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차seung-hyun Park
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)Eunwoo Cho
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기SungChanHwang
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
Bottled water 요약 설명 20151114
Bottled water 요약 설명 20151114Bottled water 요약 설명 20151114
Bottled water 요약 설명 20151114Daeyong Shin
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
30기 정성학 "Git, sourcetree 사용법"
30기 정성학 "Git, sourcetree 사용법"30기 정성학 "Git, sourcetree 사용법"
30기 정성학 "Git, sourcetree 사용법"hyu_jaram
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Sangcheol Hwang
 
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...NAVER D2
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
Ipfs : InterPlanetary File System
Ipfs : InterPlanetary File SystemIpfs : InterPlanetary File System
Ipfs : InterPlanetary File System동현 강
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼Kenu, GwangNam Heo
 
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Ubuntu Korea Community
 
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Ian Choi
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Juwon Kim
 
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항rockplace
 

Semelhante a TurboRepo (20)

몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
 
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
Bottled water 요약 설명 20151114
Bottled water 요약 설명 20151114Bottled water 요약 설명 20151114
Bottled water 요약 설명 20151114
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
30기 정성학 "Git, sourcetree 사용법"
30기 정성학 "Git, sourcetree 사용법"30기 정성학 "Git, sourcetree 사용법"
30기 정성학 "Git, sourcetree 사용법"
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
 
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
Ipfs : InterPlanetary File System
Ipfs : InterPlanetary File SystemIpfs : InterPlanetary File System
Ipfs : InterPlanetary File System
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
 
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
Launchpad 활용 사례 in OpenStack: 다루어본 Bug & Blueprint를 중심으로
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
 
Docker storage
Docker storageDocker storage
Docker storage
 
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
왜 컨테이너인가? - OpenShift 구축 사례와 컨테이너로 환경 전환 시 고려사항
 

Mais de Wonjun Hwang

Spring HTTP Client (Kitworks Team Study)
Spring HTTP Client (Kitworks Team Study)Spring HTTP Client (Kitworks Team Study)
Spring HTTP Client (Kitworks Team Study)Wonjun Hwang
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)Wonjun Hwang
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)Wonjun Hwang
 
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)Wonjun Hwang
 
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)Wonjun Hwang
 
Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)Wonjun Hwang
 
JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)Wonjun Hwang
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Wonjun Hwang
 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyWonjun Hwang
 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyWonjun Hwang
 
얕은복사,깊은복사
얕은복사,깊은복사얕은복사,깊은복사
얕은복사,깊은복사Wonjun Hwang
 
Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Wonjun Hwang
 
완전 유용한 CSS 모음
완전 유용한 CSS 모음완전 유용한 CSS 모음
완전 유용한 CSS 모음Wonjun Hwang
 
2024 개발 트렌드
2024 개발 트렌드2024 개발 트렌드
2024 개발 트렌드Wonjun Hwang
 
디바운싱과 쓰로틀링
디바운싱과 쓰로틀링디바운싱과 쓰로틀링
디바운싱과 쓰로틀링Wonjun Hwang
 

Mais de Wonjun Hwang (20)

Spring HTTP Client (Kitworks Team Study)
Spring HTTP Client (Kitworks Team Study)Spring HTTP Client (Kitworks Team Study)
Spring HTTP Client (Kitworks Team Study)
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
This (Kitworks Team Study 김한솔 발표자료 2024.4.22)
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)스토리북(Storybook, Kitworks Team Study 우아라 발표)
스토리북(Storybook, Kitworks Team Study 우아라 발표)
 
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
mysql8 전환기 (Kitworks Team Study 김천규 발표자료)
 
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)Open AI SORA  (키트웍스 팀스터디 발표자료 박준기 240315)
Open AI SORA (키트웍스 팀스터디 발표자료 박준기 240315)
 
Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)Nest JS (Kitworks Team Study 이본훈 발표 240315)
Nest JS (Kitworks Team Study 이본훈 발표 240315)
 
JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)JS Event Loop (Kitworks Team Study 김동현 발표)
JS Event Loop (Kitworks Team Study 김동현 발표)
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)
 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team Study
 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team Study
 
PWA
PWAPWA
PWA
 
얕은복사,깊은복사
얕은복사,깊은복사얕은복사,깊은복사
얕은복사,깊은복사
 
Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기Go언어로 디스코드 봇 만들기
Go언어로 디스코드 봇 만들기
 
완전 유용한 CSS 모음
완전 유용한 CSS 모음완전 유용한 CSS 모음
완전 유용한 CSS 모음
 
2024 개발 트렌드
2024 개발 트렌드2024 개발 트렌드
2024 개발 트렌드
 
디바운싱과 쓰로틀링
디바운싱과 쓰로틀링디바운싱과 쓰로틀링
디바운싱과 쓰로틀링
 

TurboRepo

  • 1.
  • 2.
  • 3. • 최초의 모놀리식 방식은 소스 코드를 모듈화하지 않고 하나의 Repository 에서 모두 관리 • 모든 코드가 단일 버전으로 서로 의존하기 때문에 코드 재사용에 용이하고 배포 과정도 단순하다는 장점 • 관심사 분리가 어렵고, 기능 추가나 삭제가 Repository 전체에 영향을 줄 수 있다는 단점
  • 4. • Repository 별 Owner를 지정 가 능, • 버전 관리를 통해 관심 분리 기능 변경이 다른 Repository에 영향을 주지 않음 • 각 Package가 Repository로 분리 된다면 하나의 Repository는 하나 의 CI를 구성 할 수 있기 때문에 CI의 build 속도가 빨라짐 • 각 모듈이 서로 독립된 영역에 존 재하기 때문에 코드 단계에서의 재 사용이 어려워졌고 빌드와 배포 과 정이 복잡해짐 • Repository가 분리되어있기 때문에 공통된 코드가 중복될 가능성이 커 짐 • 프로젝트 및 Package의 규모가 커 짐에 따라 의존도가 복잡해지고 버 전 차이에 따라 종속성이 달라지고 충돌을 야기할 수 있음
  • 5. • Repository가 하나이기 때문에 모든 프로젝트의 코드간의 관계와 의존성 을 확인하기 쉬움 • 모든 커밋 히스토리가 한 Repository 에 남기 때문에 추적, 개발 방향을 이 해하는 게 쉬워짐 • 여러 곳에서 중복으로 사용하는 코드 를 공유, 재사용이 쉬움 • 배포와 빌드, 테스트를 한 번에 처리할 수 있음 • 하나의 Repository에서 관리가 되기 때문에 규모가 커짐 • MultiRepo와 반대로 Repository 규모가 크기 때문에 CI build 속 도가 느림 • Package간 의존성 관리가 쉽다 는 장점이 있지만, 과도한 의존 관계가 나타날 수 있음
  • 6. Vercel이 인수한 Turborepo는 Javascript와 Typescript 코드 베이스의 모노레포를 위한 고성능 빌드 시스템 (AWS, Miro, PayPal, Discord, LINE+ 등 여러 프로젝트에서 사용)
  • 7. • 작업 진행을 캐싱해 이미 계산된 내용은 건너 뛰는 것을 의미 • 빌드는 딱 한 번만 하는 것을 목표 • 타임스탬프가 아닌 콘텐츠를 인 식하는 방식으로 해싱을 지원 • 모든 파일을 다시 빌드하는 것이 아니라 변경된 파일만 빌드
  • 8. 설치 명령어 : Npx create-turbo@latest . 설치 시 docs, web 다른 프로젝트와 Typescript, eslint, next 등 기본 설정 파일이 생성
  • 9. TurboRepo를 적용 할 폴더를 workspace에 지정 각 프로젝트의 package.json에 private: true를 설정 해야 TurboRepo가 폴더간 링크를 연결
  • 10. dependsOn • 종속성을 먼저 빌드 한 후 스크립트 실 행 • 종속성을 여러 개 지정할 경우 순서에 맞춰서 빌드 진행 cache • 핫 로딩이 필요할 경우 캐시를 비활 성화 할 수 있음 outputs • 캐시를 활성화 할 폴더를 지정
  • 11. • 첫 빌드 시 docs, web 프로젝트가 같이 빌드 • 캐싱 된 이력이 없어 캐시를 진행 • 14.95s의 빌드 속도를 가짐
  • 12. • 프로젝트가 실제로 캐시에 저장 되어 있음 • TurboRepo가 다시 빌드 할 필요가 있나 없나 판단 • 0.33s의 빌드 속도를 가짐
  • 13. • Docs 프로젝트 수정 후 빌드 진행 • TurboRepo가 다시 빌드할 필요가 있나 없나 판단 • Docs 프로젝트만 새롭게 캐시 저장 • 6.92s의 빌드 속도를 가짐
  • 14. Yarn build —force • 캐시 된 이력을 무시하고 전부 다시 캐시 할 때 사용 Yarn build —scope={docs} • 원하는 프로젝트만 build 할 수 있음 • MultiRepo, MonoRepo 환경 구축 가 능