MSA

[MFA] 모노레포(Mono Repo)란? 장단점

차노도리 2023. 10. 28. 23:36

모노레포 란?

  • 하나의 레파지토리에서 여러 프로젝트, 모듈 또는 패키지를 관리하는 개발 방식
  • 모든 소스 코드를 중앙화하여 관리하고 필요한 패키지를 공유하여 사용할 수어 코드의 재사용성과 개발의 협업을 용이하게 만든다.

 

모노레포 장점

  • 중복 코드를 줄이고, 공통 모듈을 사용으로써 코드의 재사용서 높인다.
  • 모든 서비스가 동일한 환경에서 작동하므로 일관성을 유지하고 호환성을 확보할 수 있다.
  • 코드의 히스토리를 추적하기 쉽다.
  • 다른 서비스를 수정 시 추가적인 배포 없이 테스트하고, 함께 빌드 배포를 할 수 있다.

 

모노레포 단점

  • 레파지토리가 크기가 무거워질 수 있다.
  • 여러 서비스와 모듈을 포함하여 레퍼지토리의 복잡성을 증가시킬 수 있다.
  • 권한 관리와 보안 설정이 중요하다.

 

 

모노레포 경험하면서 느낀 점 아쉬웠던 점

  • 다른 서비스나 공통 모듈의 변경이 필요할 , 추가적인 배포 없이 신속하게 변경을 확인할 있어서 개발 생산성이 향상되었다.
  • 다양한 모노레포 관리 도구가 존재한다는 사실을 알게 되었고, 도구들의 특징과 장단점을 파악하고 활용하는 것이 중요하다는 것을 느꼈다.
  • https://monorepo.tools/
  • NX를 사용하면서 느낀 점
    • https://nx.dev/
    • 로컬 캐싱 기능을 통해 동일한 로컬에서 동일한 작업을 여러 빌드하거나 테스트하지 않고 이전 결과를 재사용할 있어 개발자의 생산성을 향상시킨다.
    • 로컬 환경에서 테스트를 병렬로 실행하고 변경된 부분만 테스트하는 등의 기능을 제공하여 코드 변경 빠른 피드백을 받을 수 있다.
    • 코드 제너레이터로 페이지, 템플릿 등을 빠르게 생성할 수 있다.
  • 서브 도메인과 공통 모듈 정의를 잘하지 않고 프로젝트를 진행하면 코드의 중복, 유지보수 등 문제 가 발생할 수 있다. (가장 중요하다고 생각)