모노레포란
모노레포는 여러 개의 프로젝트, 애플리케이션, 라이브러리, 혹은 모듈들을 하나의 대규모 저장소(repository)에 통합하여 관리하는 방식이다.
왜 우리 프론트에 모노레포가 필요한가?
- 현재는 각 서비스별로 서로 다른 레포지토리에서 관리되고 있음(멀티레포)
- 하지만 각 프론트 코드들의 베이스는 굉장히 비슷함(쌍둥이 급).
전체적인 프론트 코드의 통일성 유지 및 관리 일원화
- 다양한 프로젝트에서 공통적으로 사용하는 베이스 컴포넌트와 스타일(예: font, SCSS color 변수)이 굉장히 유사하다.
- 이전에는 플리토 디자인 시스템 라이브러리를 사용했지만, 프로젝트별로 베이스 컴포넌트를 커스터마이즈하는 경우가 늘어나면서, 코드를 각 프로젝트에서 개별적으로 수정하고 사용하는 일이 빈번해짐.
- 또한, 라이브러리의 버전이 업데이트되면 모든 프로젝트에서 패키지 버전을 수동으로 업데이트해야 하므로 관리가 어려워짐.
중복 작업 최소화
- 특정 변경이 필요한 경우, 모든 프로젝트에서 동일한 변경사항을 적용해야 한다. 예를 들어, axios의 error response 핸들링 방식이나 비밀번호 입력 validation 규칙이 변경될 때 중복 작업이 발생한다.
- 모노레포를 사용하지 않는 경우, 각 프로젝트에서 동일한 변경사항을 처리하기 위해 중복된 PR을 올려야 하며, 이로 인해 비효율적인 관리와 실수 가능성이 높아짐.