FEInterview Prep

FEConf · FEConf 2025 2025

모노레포 절망편, 14개 레포로 부활하기

모노레포 운영의 현실적 한계를 경험하고 멀티레포로 분리하면서 얻은 교훈을 공유합니다.

모노레포Turborepo멀티레포빌드 시스템패키지 관리

요약

핵심 토픽

모노레포 vs 멀티레포Turborepo패키지 버전 관리내부 npm 레지스트리팀 규모와 아키텍처

학습 포인트

1. 모노레포의 약속과 현실

모노레포의 이론적 장점: 코드 공유, 원자적 커밋, 통합 CI. 현실적 문제: 규모가 커질수록 CI 시간 폭증(Turborepo 캐시로 일부 완화 가능), 팀이 많아지면 충돌 증가, 패키지 간 암묵적 의존성으로 인한 연쇄 장애. 모노레포는 팀 규모와 프로젝트 성격에 따라 맞지 않을 수 있습니다.

핵심 용어

모노레포 장단점CI 확장성Turborepo 캐시팀 경계

2. 멀티레포에서 코드 공유 전략

멀티레포로 분리하면 코드 중복이 우려되지만, 공유 로직을 내부 npm 패키지로 퍼블리시하면 해결됩니다. 사설 npm 레지스트리(GitHub Packages, Verdaccio)를 운영하거나, 공개 패키지처럼 scoped 패키지를 사용합니다. 주의점: 버전 관리가 복잡해져 소비 레포들이 최신 버전을 사용하도록 자동화가 필요합니다.

핵심 용어

내부 npm 패키지사설 레지스트리Verdaccio버전 관리 자동화

3. 모노레포 vs 멀티레포 선택 기준

모노레포가 유리한 경우: 팀이 작고(10명 이하) 프로젝트 간 결합도가 높을 때, 원자적 변경이 자주 필요할 때. 멀티레포가 유리한 경우: 팀이 크고 독립 배포가 중요할 때, 프로젝트 간 기술 스택이 다를 때, 외부 오픈소스화 예정인 패키지가 있을 때. '모노레포는 항상 좋다'는 환상을 경계해야 합니다.

핵심 용어

팀 규모결합도독립 배포기술 스택 다양성

면접 질문

중급

Q1. 모노레포와 멀티레포의 장단점을 비교하고, 어떤 상황에서 각각을 선택하시겠습니까?

힌트

[감점 답변] 정의만 반복하거나 "모노레포와 멀티레포의 장단점을 비교하고, 어떤 상황에서 각각을 선택하시겠습니까?"에 대해 장단점 없이 단편적으로 답하면 감점 포인트입니다. 면접관은 실무 적용 경험이 부족하다고 판단합니다. [좋은 답변] 모노레포 장점: 코드 공유 용이, 원자적 커밋, 일관된 도구 설정. 단점: 빌드/CI 시간, 팀 간 충돌. 멀티레포 장점: 팀 자율성, 독립 배포, 명확한 경계. 단점: 코드 중복, 버전 관리 복잡성. 선택 기준: 팀 크기, 프로젝트 결합도, 배포 독립성 필요 여부.

중급

Q2. Turborepo가 모노레포의 빌드 시간 문제를 어떻게 해결하나요?

힌트

[감점 답변] 정의만 반복하거나 "Turborepo가 모노레포의 빌드 시간 문제를 어떻게 해결하나요?"에 대해 장단점 없이 단편적으로 답하면 감점 포인트입니다. 면접관은 실무 적용 경험이 부족하다고 판단합니다. [좋은 답변] Turborepo의 핵심은 두 가지: (1) 작업 의존성 그래프 — 어떤 패키지가 어떤 패키지에 의존하는지 파악해 병렬 실행, (2) 캐싱 — 입력(소스 파일, 환경변수)이 같으면 이전 결과를 재사용. Remote 캐시를 팀이 공유하면 CI에서도 캐시 히트가 발생합니다.

고급

Q3. 멀티레포 환경에서 공유 코드를 어떻게 관리하시겠습니까?

힌트

[감점 답변] 정의만 반복하거나 "멀티레포 환경에서 공유 코드를 어떻게 관리하시겠습니까?"에 대해 장단점 없이 단편적으로 답하면 감점 포인트입니다. 면접관은 실무 적용 경험이 부족하다고 판단합니다. [좋은 답변] 세 가지 전략: (1) 내부 npm 패키지로 퍼블리시(버전 관리가 명확하지만 소비 레포 업데이트 필요), (2) git submodule(간단하지만 관리가 번거로움), (3) 공유 레포 + 자동 PR 생성(Renovate 등으로 버전 업데이트 자동화). 현실적으로는 내부 npm 패키지 + Renovate 자동화 조합이 많이 쓰입니다.

선행 학습

  • npm 패키지 구조와 workspaces 이해
  • CI/CD 파이프라인 경험
  • Git 기본 개념

핵심 타임스탬프

모노레포 vs 멀티레포 핵심 구간00:00 - 03:00
Turborepo 핵심 구간03:00 - 07:00
패키지 버전 관리 핵심 구간07:00 - 12:00
내부 npm 레지스트리 핵심 구간12:00 - 17:00

학습 방법

1단계: Turborepo 공식 예제(create-turbo)로 모노레포를 직접 만들고 빌드 캐싱이 어떻게 동작하는지 확인해보세요. 2단계: 본인 프로젝트에서 공유 유틸리티 함수를 npm 패키지로 분리해 `npm pack`으로 로컬 테스트하는 경험을 해보세요. 3단계: 회사나 팀에서 사용하는 레포 구조를 분석하고 현재 선택이 팀 규모와 배포 요구사항에 적합한지 비판적으로 평가해보세요. 이 과정이 면접에서 설득력 있는 답변으로 이어집니다. 4단계: 동료에게 "모노레포 vs 멀티레포"의 핵심을 5분 안에 설명해보세요. 막히는 부분이 아직 구조적으로 이해되지 않은 지점입니다.