모노레포 란?
- 하나의 레파지토리에서 여러 프로젝트, 모듈 또는 패키지를 관리하는 개발 방식
- 모든 소스 코드를 중앙화하여 관리하고 필요한 패키지를 공유하여 사용할 수어 코드의 재사용성과 개발의 협업을 용이하게 만든다.
모노레포 장점
- 중복 코드를 줄이고, 공통 모듈을 사용으로써 코드의 재사용서 높인다.
- 모든 서비스가 동일한 환경에서 작동하므로 일관성을 유지하고 호환성을 확보할 수 있다.
- 코드의 히스토리를 추적하기 쉽다.
- 다른 서비스를 수정 시 추가적인 배포 없이 테스트하고, 함께 빌드 배포를 할 수 있다.
모노레포 단점
- 레파지토리가 크기가 무거워질 수 있다.
- 여러 서비스와 모듈을 포함하여 레퍼지토리의 복잡성을 증가시킬 수 있다.
- 권한 관리와 보안 설정이 중요하다.
모노레포 경험하면서 느낀 점 아쉬웠던 점
- 다른 서비스나 공통 모듈의 변경이 필요할 때, 추가적인 배포 없이 신속하게 변경을 확인할 수 있어서 개발 생산성이 향상되었다.
- 다양한 모노레포 관리 도구가 존재한다는 사실을 알게 되었고, 이 도구들의 특징과 장단점을 파악하고 활용하는 것이 중요하다는 것을 느꼈다.
- https://monorepo.tools/
- NX를 사용하면서 느낀 점
- https://nx.dev/
- 로컬 캐싱 기능을 통해 동일한 로컬에서 동일한 작업을 여러 번 빌드하거나 테스트하지 않고 이전 결과를 재사용할 수 있어 개발자의 생산성을 향상시킨다.
- 로컬 환경에서 테스트를 병렬로 실행하고 변경된 부분만 테스트하는 등의 기능을 제공하여 코드 변경 후 빠른 피드백을 받을 수 있다.
- 코드 제너레이터로 페이지, 템플릿 등을 빠르게 생성할 수 있다.
- 서브 도메인과 공통 모듈 정의를 잘하지 않고 프로젝트를 진행하면 코드의 중복, 유지보수 등 문제 가 발생할 수 있다. (가장 중요하다고 생각)
'MSA' 카테고리의 다른 글
[MFA] NX 특징 , NX Cache Example (2) | 2023.11.26 |
---|---|
[MFA] Node 패키지 매니저, 워크스페이스 개념(soft-navigation,hard-navigation) (0) | 2023.11.19 |
[MFA] 마이크로 프론트엔드 아키텍처 특징 장,단점 (0) | 2023.10.22 |
[MSA] Prometheus, Grafana 란? Grafana연동Example (1) | 2023.05.16 |
[MSA] Spring Boot - Micrometer란? Micrometer Timer example (0) | 2023.05.15 |