모노레포를 위한 준비
소개
최근 Next.js, Flutter 등 많은 프레임워크에서 모노레포를 통한 코드 관리를 사용하고 많은 회사들에서도 모노레포를 이미 도입하거나 도입하기 위한 준비를 진행하고 있다. 최근 우리 회사에서도 중복 작업을 줄이고 코드를 더 잘 관리하기 위해 모노레포, 멀티 패키지 도입을 준비하고 있는데 이 과정에서 찾아본 내용과 왜 회사 코드관리에 도입하도록 결정하게 되었는지 정리한 내용이다.
목차
모노레포란?
모노레포(monolithic repository)는 여러 프로젝트의 모든 코드가 단일 저장소에 저장되는 저장 방식을 말한다. 이 중앙 저장소에는 저장소의 각 프로젝트에 대한 모든 구성 요소, 라이브러리 및 내부 종속성을 보관하며, 종종 여러 프로그래밍 언어와 애플리케이션 유형으로 구성된다.
모노레포를 적용하는 이유는 무엇일까?
- 간소화된 코드 관리
- 강화된 협업
- 간소화된 툴링
- 코드 공유 및 재사용성
- 종속성 관리
- 일관된 개발 환경
- 유연성 및 확장성
- 커뮤니케이션 오버헤드 완화
모노레포 작성 규칙
- 일관된 폴더 구조
- 모듈러 아키텍처
- 버전 관리 및 종속성 관리
- 코드 검토 및 품질 보증
- 분기 전략
- 지속적인 통합 및 전달(CI/CD)
- 문서 및 Readme 파일
- 개발자 교육 및 온보딩
- 테스트 전략
- 모니터링 및 로깅
- 지속적인 학습 및 개선
참고 자료
-
플러터 모노레포 관리 툴: Melos
-
플러터 패키지 관리: pub.dev
-
테스트: 단위테스트(flutter test), UI 테스 트(widgetbook), E2E 테스트(Patrol)
-
배포
-
CI/CD: Github action
-
JS 모노레포 관리 툴: Turborepo, nx
-
JS 패키지 관리: npm, yarn, pnpm
-
테스트: 단위테스트(Jest vs. vitest), UI 테스트(Storybook), E2E 테스트(Cypress vs. Playwright)
-
배포 환경: AWS Amplify vs. Vercel
-
CI/CD: Github action