핵심 요약
토스의 프론트엔드 챕터는 모노리포 파편화를 해결하기 위해 카탈로그를 도입해 의존성 버전을 통일하고 개발 환경의 가시성과 업데이트 속도를 크게 개선했습니다. pnp.cjs 크기를 96MB에서 15MB로 감소시키고, 개발 서버 시간을 26.7초에서 20.3초로, 전체 설치 시간을 528.4초에서 249.9초로 대폭 단축했습니다.
구현 방법
- 모노리포의 pnpm-workspace.yml/.yarnrc.yml에 표준 라이브러리 버전을 정의하고, 서비스는 catalog: 프로토콜로 참조
- 카탈로그 버전 발행 정책(월 1회, 파괴적 변경 시 새 카탈로그), 마이그레이션 스크립트 및 CI 검증 도입
- Yarn 플러그인 yarn-plugin-catalogs와 catalogs.yml를 통한 운영 자동화 및 canary 카탈로그 활용
- 내부 패키지의 분산 개편을 패키지 모노리포로 통합 관리
주요 결과
- 의존성 종류와 크기 감소로 설치 시간이 크게 단축
- 카탈로그를 통한 버전 통일로 개발자 간 신뢰성과 예측성 증가
- 대규모 업그레이드의 전파가 용이해지고, 구조적 개선의 여지가 확대
- 공급망 보안 이슈에 대한 신속한 패치 적용 가능


