Monorepo의 장단점

steve·2023년 7월 3일
0

Backend

목록 보기
1/17

Monorepo는 모든 코드를 단일 리포지토리에 저장하는 것과 관련된 소프트웨어 개발 전략이다. 아이디어는 모든 프로젝트와 라이브러리를 한 곳에 두어 종속성을 보다 쉽게 관리하고 코드를 공유할 수 있도록 하는 것인데 이번 포스팅에서는 Monorepo의 장단점에 대해 설명한다.

Monorepo의 장점

코드 공유

monorepo를 사용하는 가장 큰 장점 중 하나는 서로 다른 프로젝트와 라이브러리 간에 코드를 쉽게 공유할 수 있다. 모든 코드를 한 곳에서 사용하면 다양한 프로젝트에서 쉽게 라이브러리를 가져와 사용할 수 있고 코드베이스 전체에서 일관성을 쉽게 유지하고 중복 가능성을 줄일 수 있음

간소화된 종속성 관리

모든 코드를 한 곳에서 사용하면 종속성을 보다 쉽게 관리하고 버전 충돌을 피할 수 있다. 모든 종속성이 단일 위치에 저장되고 사용 중인 라이브러리 버전을 쉽게 추적할 수 있다.

쉬운 코드 유지 보수

모든 코드가 한 곳에 있으므로 코드베이스를 유지 관리하고 업데이트하는 것이 훨씬 쉽다. 변경하기 위해 다른 리포지토리 간에 전환할 필요가 없으며 한 프로젝트의 변경 사항이 다른 프로젝트에 어떤 영향을 미칠 수 있는지 쉽게 확인할 수 있다.

협업에 유리

모든 코드가 한 곳에 있으므로 개발자가 서로 다른 프로젝트에서 함께 작업하고 코드를 공유하기가 더 쉽다. 따라서 코드베이스 전체에서 일관성을 유지하기가 더 쉬워지고 중복 가능성이 줄어들게 된다.

Monorepo의 단점

느린 빌드

가장 큰 단점 중 하나는 빌드 속도가 느려질 가능성이 있다는 것. 모든 코드가 한 곳에 있으므로 코드베이스를 빌드하고 테스트하는 데 시간이 더 오래 걸릴 수 있다. 또한 한 프로젝트의 변경 사항이 다른 프로젝트에 영향을 미칠 수 있고 모든 것을 다시 빌드하고 테스트해야 하는 경우가 발생할 수도 있다.

복잡성 증가

모든 코드가 한 곳에 있으면 코드베이스의 구조를 탐색하고 이해하기가 더 어려울 수 있다. 새로운 멤버를 온보딩할때, 그리고 시간이 지남에 따라 코드베이스를 유지 관리하기가 더 어려워질 수 있다.

다른 프로젝트에 오류 영향 가능성

다른 프로젝트에 영향을 주는 변경 사항을 실수로 쉽게 만들 수 있다. 이로 인해 예기치 않은 버그 및 문제가 발생할 수 있으며 문제의 원인을 추적하기가 더 어려울 수 있다.

결론

Mono repository를 사용하게 되면 코드 공유, 종속성 관리, 개발자 간 협업이 더 쉬워지지만 빌드 속도가 느려지고 복잡해지며 변경 사항이 있을 때 다른 프로젝트에 영향을 미칠 가능성이 있다. 하지만 Coding convention이나, 코드 리뷰를 통해 단점을 보완시킬 수 있도록 한다면 좋은 선택이 될 수 있다.

Nestjs Monorepo

https://docs.nestjs.com/cli/monorepo

0개의 댓글

관련 채용 정보