FEStudy-boostcamp / FEStudy

0 stars 0 forks source link

모노레포에 대한 이해 #2

Open ed-jinyoung-park opened 12 months ago

ed-jinyoung-park commented 12 months ago

목차

  1. 모노레포란?
  2. Why monorepo?
  3. 모노레포 전반적인 기능
  4. 세부 비교 (사례와 함께 + 특징, 장단점)
    1. Yarn workspace
    2. Lerna
    3. Nx
    4. Turborepo
  5. 마무리, 후기

중점

레퍼런스

ed-jinyoung-park commented 11 months ago

모노레포란?

image

모놀리식(monolith)

image

모듈화(modular)

image

멀티레포(multirepo 혹은 polyrepo)

image

monorepo

image

frontend에서 monorepo가 적절한 사례

puba5 commented 11 months ago

모노레포 전반적인 기능

1. Local computation caching 로컬에서 계산할 내용 캐싱

아래는 터보의 예시입니다. 빌드를 할 때, 이미 빌드된 내용을 건너 띄어 빠르게 작업할 수 있습니다.

Screen Shot 2023-07-18 at 2 24 46 AM

2. Local task orchestration

모든 코어를 사용하는 병렬 실행을 목표로 합니다. 지정된 태스크 단위로 의존성을 판단해 최대한 병렬적으로 작업을 진행합니다.

Screen Shot 2023-07-18 at 2 31 40 AM

3. Distributed computation caching

4. Distributed task execution

5. 영향을 받는 프로젝트/패키지 감지(Detecting affected projects/packages)

6. Dependency graph visualization

의존성 그래프 시각화: 프로젝트 및 작업 간의 종속 관계를 시각화

예시 - NX의 Dependency graph

Screen Shot 2023-07-18 at 11 18 38 AM Screen Shot 2023-07-18 at 11 20 10 AM
puba5 commented 11 months ago

모노 레포 툴 세부 비교

puba5 commented 11 months ago

npm/yarn workspace

Lerna

puba5 commented 11 months ago

nx

Turborepo

puba5 commented 11 months ago

마무리, 후기

puba5 commented 11 months ago

yarn workspace 실제 후기

Yarn workspace + yarn berry

/scripts - static 파일(css, 이미지 등) 가져오는 코드 /  빌드 배포 관련 
/settings - workspace 설정, eslint, prettier, husky 등
/packages
ㄴ common(공통)
ㄴ 플젝 A
ㄴ 플젝 B
ㄴ 플젝 C
ㄴ 플젝 D
  ㄴ ngnix, docker 등 배포 관련
  ㄴ src
    ㄴ common
    ㄴ components
    ㄴ pages
  ㄴ public
  ㄴ msw - test

도입하게 된 계기

비슷한 내용과 스펙을 가지고 관리 주체가 같은 프로젝트들을 묶기 위하여 도입하였습니다. 따라서 빌드 시간 단축 등 다른 기능들의 장점이 필요하지 않아서 가장 간단하게 사용할 수 있는 yarn workspace + yarn berry를 채택하였습니다.

실제 사용했을때 장점

실제 사용했을때 단점 및 고려 사항

puba5 commented 11 months ago

NX 실제 후기

폴더 구조

apps - 어플리케이션
  ㄴ demo
  ㄴ docs
libs - 라이브러리. core를 기준으로 plugin을 확장해나가는 형태
  ㄴ core
  ㄴ plugin A
  ㄴ plugin B ..
tools - nx tool
nx.json
package.json
...

도입하게 된 계기

장점

단점 및 한계