모노리포 희망편, 절망의 리포가 희망의 리포로 부활하기까지 걸린 1년
박서진/박성범 · 토스 · 토스 기술 블로그
소개
토스에서 100명이 넘는 엔지니어들이 모노리포에서 장점만을 누리기 위해 카탈로그를 도입한 이야기를 소개합니다.
AI 핵심 요약
토스 프론트엔드 플랫폼 팀은 서비스마다 의존성 버전이 달라 설치가 느리고 개발 경험이 파편화되며, 공통 라이브러리 변경도 검증하기 어려운 문제를 겪었다. 폴리리포 전환 대신 pnpm·Yarn 카탈로그를 도입해 React, Next.js, TypeScript 등 핵심 라이브러리의 표준 버전을 관리하고, 서비스가 이를 참조하도록 마이그레이션했다. 카탈로그를 월별로 버저닝하고 새 버전은 일부 서비스에서 검증한 뒤 배포했으며, 자체 Yarn 플러그인·CLI와 코드 변환 스크립트로 정책 적용과 업그레이드를 지원했다. 그 결과 의존성 정보 파일은 96MB에서 15MB로 줄고 설치 시간은 약 52% 단축됐으며, 일관된 버전 관리와 운영 정책이 모노리포의 성능·안정성·업데이트 속도를 함께 개선한다는 점을 확인했다.
- pnpm이나 Yarn의 카탈로그로 공통 의존성 버전을 선언하고, 각 워크스페이스가 `catalog:` 프로토콜로 참조하게 할 수 있다.
- 이미 발행한 카탈로그의 파괴적 변경은 금지하고, 메이저 업데이트는 새 카탈로그로 발행해 서비스가 선택적으로 전환하도록 한다.
- 카탈로그 변경 전 대표 서비스에서 검증하고, 코드 변환 스크립트와 CI 검사로 업데이트 위험과 실수를 줄인다.
- 대규모 모노리포에서는 버전 정책뿐 아니라 이를 강제하는 도구, 정기적인 변경 논의, 패키지 관리 체계도 함께 설계해야 한다.
비슷한 학습 자료
우리는 하나다! 모노레포 with pnpm #우아콘2022 #Day2_음식그이상의것을문앞으로
우아콘 2022 · YouTube
멈춰있던 PG의 시간, 토스페이먼츠가 다시 흐르게 합니다
하태호 · 토스 기술 블로그
Node.js 라이브러리 배포 파이프라인에 플러그인 시스템 도입기
장지훈 · 토스 기술 블로그
200여개 서비스 모노레포의 파이프라인 최적화
정석호 · 토스 기술 블로그
토스 팀은 점심 시간에 사용자를 만난다
서소희 · 토스 기술 블로그
코드 악취를 맡는 후각 훈련의 시간
홍혜린 · 컬리 기술 블로그