목록 보기
모노리포 희망편, 절망의 리포가 희망의 리포로 부활하기까지 걸린 1년
아키텍처

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

토스
토스
2026년 8월 10일

두줄요약

토스는 대규모 프론트엔드 모노리포의 의존성 파편화를 해결하기 위해 카탈로그를 도입했습니다. 이를 통해 설치 속도와 개발 경험을 개선하고 최신 플랫폼 변경을 안정적으로 전파했습니다.

문제 상황

  • 100명 규모로 커진 프론트엔드 모노리포에서 서비스별 의존성 버전이 제각각이라 개발환경이 파편화됨
  • 설치 시간 증가, 오래된 라이브러리 고착화, 플랫폼 라이브러리 검증 난이도 상승 문제가 발생함
  • 폴리리포 전환은 파편화와 공통 코드 관리 비용을 근본적으로 해결하지 못하는 대안으로 판단됨

원인 분석

  • 핵심 의존성 버전 통일 부재로 React, TDS, Jotai, TypeScript, ESLint 등 10~20개 라이브러리 조합이 서비스마다 달라짐
  • 같은 패키지도 버전이 달라 다른 서비스에서의 동작을 보장하기 어려운 구조
  • 버전 선택권이 서비스에 분산되면서 낡은 의존성이 장기간 유지됨

해결 방법

  • 표준 라이브러리 버전을 모아 둔 카탈로그를 도입하고, 서비스는 catalog 프로토콜로 참조하도록 변경
  • 신규 서비스는 기본적으로 최신 카탈로그를 사용하고, 기존 서비스는 CI와 수동 마이그레이션으로 일괄 전환
  • 새 카탈로그를 월 1회만 발행하고, 파괴적 변경은 새 버전으로 분리하며 자동 변환 스크립트와 Yarn 플러그인으로 운영 정책을 강제

성능/운영 포인트

  • .pnp.cjs 크기 96MB에서 15MB로 감소
  • 개발 서버 실행 시간 26.7초에서 20.3초로 개선
  • 전체 의존성 설치 시간 528.4초에서 249.9초로 단축
  • 패키지 검증, 무결성 확인, 보안 패치 전파, 최신 플랫폼 적용을 더 빠르고 안전하게 수행

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...