1. 멀티레포 등장 배경: 모노리포의 한계 극복
모노리포의 문제점:
- 규모 확장 어려움: 프로젝트 규모가 커질수록 코드 관리, 배포, 테스트 등이 복잡하고 어려워집니다.
- 변경 속도 저하: 모든 코드가 하나의 저장소에 있기 때문에 변경 사항 검토, 병합, 배포 과정이 길어집니다.
- 개발 환경 불안정: 한 부분의 변경이 다른 부분에 영향을 미쳐 예상치 못한 문제 발생 가능성이 높습니다.
- 높은 결합도: 모듈 간 결합도가 높아 독립적인 개발 및 배포가 어렵습니다.
멀티레포의 등장:
모노리포의 한계를 극복하기 위해 각 기능 또는 서비스를 독립적인 저장소로 관리하는 방식인 멀티레포가 등장했습니다.
2. 멀티레포가 해결하는 문제
- 개발 속도 향상: 각 팀이 독립적으로 개발, 배포, 테스트를 진행하여 개발 속도를 높일 수 있습니다.
- 유연한 버전 관리: 각 서비스/모듈에 맞는 버전 관리가 가능하여 안정적인 운영을 유지할 수 있습니다.
- 확장성 증대: 새로운 기능이나 서비스 추가가 용이하여 프로젝트 규모 확장에 유연하게 대응할 수 있습니다.
- 결합도 감소: 모듈 간 결합도를 낮추어 독립적인 개발 및 유지보수가 가능합니다.
- 책임 분산: 각 팀이 담당하는 영역을 명확하게 구분하여 책임 소재를 명확하게 할 수 있습니다.
3. 멀티레포 구축 고려 사항: 꼼꼼한 전략 수립
- 프로젝트 특성: 프로젝트 규모, 팀 구성, 개발 방식 등을 고려하여 멀티레포 적합성을 평가해야 합니다.
- 저장소 구조: 서비스/기능 단위, 도메인 기반, 계층별 구분 등 다양한 구조 중 프로젝트 특성에 맞는 방식을 선택해야 합니다.
- 의존관계 관리: 모듈 간 의존관계를 명확하게 정의하고 관리해야 하며, 버전 호환성 문제 발생 가능성을 고려해야 합니다.
- CI/CD 파이프라인: 각 저장소에 맞는 CI/CD 파이프라인을 구축하여 자동화된 테스트, 배포 과정을 구축해야 합니다.
- 팀 협업: 팀 간 협업 프로세스 및 의사소통 방식을 정립하여 효율적인 개발 환경을 조성해야 합니다.
- 모니터링 및 로그 관리: 각 저장소의 상태를 지속적으로 모니터링하고 로그를 관리하여 문제 발생 시 신속하게 대응할 수 있도록 해야 합니다.
- 보안 관리: 각 저장소의 접근 권한 및 보안 설정을 철저하게 관리하여 코드 유출 등의 보안 위험을 방지해야 합니다.
4. 멀티레포 구축 도구: 효율적인 관리 지원
- Git: 가장 대중적인 버전 관리 시스템으로, 멀티레포 구축에 필수적인 도구입니다.
- GitHub: Git 저장소를 호스팅하는 서비스로, 코드 관리, 협업, 배포 등을 쉽게 할 수 있도록 지원합니다.
- GitLab: GitHub과 유사한 기능을 제공하는 또 다른 Git 호스팅 서비스입니다.
- Bitbucket: Atlassian에서 제공하는 Git 호스팅 서비스이며, Jira와 같은 다른 Atlassian 제품과 연동하여 사용할 수 있습니다.
- CircleCI: CI/CD 파이프라인 구축을 위한 서비스로, 자동화된 테스트, 배포 과정을 자동화할 수 있도록 지원합니다.
- Jenkins: 오픈소스 CI/CD 도구로, 다양한 플러그인을 통해 다양한 기능을 추가할 수 있습니다.
- Travis CI: GitHub과 연동하여 자동화된 테스트 및 배포를 수행하는 CI/CD 서비스입니다.
* 해당 게시글은 gemini를 참고하여 작성되었음을 알립니다.
'Coding > 내일배움캠프' 카테고리의 다른 글
[내일배움캠프] 타입스크립트 개인 과제 3일차 | Node.js 4기 | Day 68 | 24.03.12.(화) (1) | 2024.03.12 |
---|---|
[내일배움캠프] Node.js 4기 | Day 67 | 24.03.11.(월) (0) | 2024.03.12 |
[내일배움캠프] 모노레포 | Node.js 4기 | Day 65 | 24.03.09.(토) (0) | 2024.03.10 |
[내일배움캠프] 타입스크립트 개인 과제 2일차 | Node.js 4기 | Day 64 | 24.03.08.(금) (0) | 2024.03.08 |
[내일배움캠프] 타입스크립트 개인 과제 1일차 | Node.js 4기 | Day 63 | 24.03.07.(목) (0) | 2024.03.08 |