[FE] 모노레포에 대해 살펴보기

Minhyuk Song·2025년 1월 3일
1

Frontend

목록 보기
1/1

⭐️ 미리보기

모노레포(Monorepo)는 여러 프로젝트를 하나의 레파지토리에서 관리하는 방식으로, 대규모 프로젝트에서 특히 유용합니다. 공통 모듈을 쉽게 공유하고, 코드의 일관성을 유지하며, 코드 리뷰와 CI/CD 파이프라인을 단순화할 수 있습니다.

배경


모놀리식은 한 곳에 모든 걸 담은 구조이며, 멀티 레포는 프로젝트를 여러 개로 쪼갠 형식을 의미합니다.

멀티레포에서 한 가지 상황을 가정해봅시다. 프로젝트 A와 비슷한 형태의 프로젝트 B를 새로 추가하여야 하는 상황입니다. 새로운 프로젝트 B를 만들기 위해서 아래와 같은 프로세스를 거치게 됩니다.

가정

  • 새로운 프로젝트 B 레포지토리를 추가한다.
  • CI/CD, Lint, Test, TS 등의 설정을 새로 한다.
  • 프로젝트 A에서 비슷한 기능을 라이브러리화하여 프로젝트 B에서 쓰게끔 한다.
    • 라이브러리 세팅하는 과정을 다시 소요 (CI/CD, Lint, Test, TS 등의 설정)

위와 같은 프로세스에서 작업이 계속 늘어갈 때마다 문제점들이 생깁니다.

멀티레포의 문제점

  • 새 프로젝트 비용이 커진다.
  • 프로젝트 간의 공유가 어려워진다.
  • 같은 이슈로 인한 수정할 때 각각의 레포지토리에서 커밋을 남겨야 한다.
  • 히스토리 관리가 어려워진다.
  • 각각의 레포지토리 관리로 인해 DX가 일관적이지 않다.

모노레포 도입

모노레포(Monorepo)는 여러 프로젝트를 하나의 레파지토리에서 관리하는 방식을 의미합니다.

모노레포의 장점

  • 새 프로젝트 생성 비용이 작다.
  • 공통 모듈을 쉽게 공유하고 관리할 수 있다.
  • 코드의 일관성을 유지할 수 있다. (atomic commit)
  • 히스토리 관리가 용이하다.
  • 공통된 레포지토리 관리로 인해 DX 향상

모노레포 방법

Turborepo로 모노레포 개발 경험 향상하기
쏘카 프론트엔드 모노레포 - Part1. Code Generator로 프로젝트 세팅 자동화하기

모노레포 한계

  • 커지는 레파지토리로 인한 느려지는 작업 (clone이나 pull)
  • 복잡한 의존성 관리
  • 길어지는 빌드 시간
참고 링크
profile
어제보다 더 나은 오늘을 만들 수 있게

0개의 댓글

관련 채용 정보