FEConf · FEConf 2025 2025
모노레포 절망편, 14개 레포로 부활하기
모노레포 운영의 현실적 한계를 경험하고 멀티레포로 분리하면서 얻은 교훈을 공유합니다.
요약
핵심 토픽
학습 포인트
1. 모노레포의 약속과 현실
모노레포의 이론적 장점: 코드 공유, 원자적 커밋, 통합 CI. 현실적 문제: 규모가 커질수록 CI 시간 폭증(Turborepo 캐시로 일부 완화 가능), 팀이 많아지면 충돌 증가, 패키지 간 암묵적 의존성으로 인한 연쇄 장애. 모노레포는 팀 규모와 프로젝트 성격에 따라 맞지 않을 수 있습니다.
핵심 용어
2. 멀티레포에서 코드 공유 전략
멀티레포로 분리하면 코드 중복이 우려되지만, 공유 로직을 내부 npm 패키지로 퍼블리시하면 해결됩니다. 사설 npm 레지스트리(GitHub Packages, Verdaccio)를 운영하거나, 공개 패키지처럼 scoped 패키지를 사용합니다. 주의점: 버전 관리가 복잡해져 소비 레포들이 최신 버전을 사용하도록 자동화가 필요합니다.
핵심 용어
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 기본 개념
핵심 타임스탬프
학습 방법
1단계: Turborepo 공식 예제(create-turbo)로 모노레포를 직접 만들고 빌드 캐싱이 어떻게 동작하는지 확인해보세요. 2단계: 본인 프로젝트에서 공유 유틸리티 함수를 npm 패키지로 분리해 `npm pack`으로 로컬 테스트하는 경험을 해보세요. 3단계: 회사나 팀에서 사용하는 레포 구조를 분석하고 현재 선택이 팀 규모와 배포 요구사항에 적합한지 비판적으로 평가해보세요. 이 과정이 면접에서 설득력 있는 답변으로 이어집니다. 4단계: 동료에게 "모노레포 vs 멀티레포"의 핵심을 5분 안에 설명해보세요. 막히는 부분이 아직 구조적으로 이해되지 않은 지점입니다.