본문 바로가기

Coding/내일배움캠프

[내일배움캠프] 멀티레포 | Node.js 4기 | Day 66 | 24.03.10.(일)

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를 참고하여 작성되었음을 알립니다.