FEStudy-boostcamp / FEStudy

0 stars 0 forks source link

모노레포에 대한 이해 #2

Open ed-jinyoung-park opened 1 year ago

ed-jinyoung-park commented 1 year ago

목차

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

중점

레퍼런스

ed-jinyoung-park commented 1 year ago

모노레포란?

image

모놀리식(monolith)

image

모듈화(modular)

image

멀티레포(multirepo 혹은 polyrepo)

image

monorepo

image

frontend에서 monorepo가 적절한 사례

puba5 commented 1 year 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 1 year ago

모노 레포 툴 세부 비교

puba5 commented 1 year ago

npm/yarn workspace

Lerna

puba5 commented 1 year ago

nx

Turborepo

puba5 commented 1 year ago

마무리, 후기

puba5 commented 1 year 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 1 year ago

NX 실제 후기

폴더 구조

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

도입하게 된 계기

장점

단점 및 한계