본문으로 이동
모노리포 희망편, 절망의 리포가 희망의 리포로 부활하기까지 걸린 1년
문서

모노리포 희망편, 절망의 리포가 희망의 리포로 부활하기까지 걸린 1년

박서진/박성범 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

토스 프론트엔드 플랫폼 팀은 서비스마다 의존성 버전이 달라 설치가 느리고 개발 경험이 파편화되며, 공통 라이브러리 변경도 검증하기 어려운 문제를 겪었다. 폴리리포 전환 대신 pnpm·Yarn 카탈로그를 도입해 React, Next.js, TypeScript 등 핵심 라이브러리의 표준 버전을 관리하고, 서비스가 이를 참조하도록 마이그레이션했다. 카탈로그를 월별로 버저닝하고 새 버전은 일부 서비스에서 검증한 뒤 배포했으며, 자체 Yarn 플러그인·CLI와 코드 변환 스크립트로 정책 적용과 업그레이드를 지원했다. 그 결과 의존성 정보 파일은 96MB에서 15MB로 줄고 설치 시간은 약 52% 단축됐으며, 일관된 버전 관리와 운영 정책이 모노리포의 성능·안정성·업데이트 속도를 함께 개선한다는 점을 확인했다.

  • pnpm이나 Yarn의 카탈로그로 공통 의존성 버전을 선언하고, 각 워크스페이스가 `catalog:` 프로토콜로 참조하게 할 수 있다.
  • 이미 발행한 카탈로그의 파괴적 변경은 금지하고, 메이저 업데이트는 새 카탈로그로 발행해 서비스가 선택적으로 전환하도록 한다.
  • 카탈로그 변경 전 대표 서비스에서 검증하고, 코드 변환 스크립트와 CI 검사로 업데이트 위험과 실수를 줄인다.
  • 대규모 모노리포에서는 버전 정책뿐 아니라 이를 강제하는 도구, 정기적인 변경 논의, 패키지 관리 체계도 함께 설계해야 한다.

소개

토스에서 100명이 넘는 엔지니어들이 모노리포에서 장점만을 누리기 위해 카탈로그를 도입한 이야기를 소개합니다.

비슷한 학습 자료

문서 하태호

토스페이먼츠 엔지니어들이 지난 몇 년 간 쏟아부은 치열한 고민과 노력을 기록한 시리즈를 소개합니다.

문서 장지훈

100개가 넘는 라이브러리를 관리하면서 마주했던 문제들을 플러그인 시스템으로 풀어낸 방법을 공유합니다.

프로그래밍 언어 데브옵스 · 인프라

문서 정석호

토스 프론트엔드 챕터에서는 하나의 모노레포에서 200여개가 넘는 서비스를 관리하고 있어요. 이렇게 커진 모노레포에서도 git push 부터 배포까지 5분을 유지할 수 있는 비결을 소개합니다!

프론트엔드 데브옵스 · 인프라

문서 서소희

“유저 무물 런치" 프로그램을 통해 제품 개발에 유저 감수성을 높인 과정에 대해 알려드릴게요.

UI/UX

문서 홍혜린

한 달, 각 잡고 리팩토링하기 좋은 시간, 그 기록의 공유

개발 · 프로그래밍 기타

컨퍼런스 FEConf 2025 A트랙

FEConf 2025 2025.8.23 11:00 ~ 17:40 세종대학교 광개토관 컨벤션센터 TRACK A-6 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년 김종혁 | 플렉스팀 4년에 가까운 시간동안 flex 웹 제품을 지탱해오던 모노레포는 제품과 팀의 규모가 꾸준히 커지며 여러 문제에 맞닥뜨렸습니다. 개발 속도는 느려지고 복잡한 의존관계로 인해 제품 안정성이 위협받았습니다. flex 웹 클라이언트 플랫폼 팀은 제품 개발과 릴리즈를 멈추지 않으면서, 1년간 하나의 레포지토리를 14개의 개별 레포지토리로 분리했습니다. 그 과정에서 안정적이고 빠른 마이그레이션 전략을 만들고, 팀과 제품 규모에 맞는 코드베이스 전략이 무엇인지 깊이 고민했습니다. 모노레포가 어떻게 절망이 되었는지, 그리고 팀이 그것을 극복하기 위해 어떤 기술적·조직적 판단을 내렸는지 공유합니다.

프론트엔드