단일 보고서 시작
단일 보고서 시작
mono
: 단일repo
: 창고말 그대로 단일 창고로 여러 프로젝트를 관리하는 것이다
예컨대.
하나의 서비스
sample-project-backend
: 백엔드sample-project-user
: 사용자 헬프데스크sample-project-partner
: 협력업체용 관리 화면sample-project-staff
: 사내 관리 화면단일 리포트로 구성되면 이렇게 하나의 창고로 관리할 수 있다
apps/
└ user-front-sp
└ user-front-pc
└ backend
└ partner
└ staff
libs/
└ shared/
└ constants/
└ components/
세분화(Uber의 예)
├── apps
│ ├── iphone-driver
│ ├── iphone-eats
│ ├── iphone-rider
├── libraries
│ ├── analytics
│ ├── …
│ └── utilities
└── vendor
├── fbsnapshottestcase
├── …
└── ocmock
참조https://eng.uber.com/ios-monorepo/
Tips: 이 개념을 채택한 주요 기업
단일 보고서의 이점
생기는 의문
포장 버전 관리 힘들죠?
A. 힘들 때도 있어요.
공구
Nx
에서 원칙적으로 이 창고 안의 물건은 같은 포장의 버전 관리 하에 있다.따라서 버전을 올리려면 다 올려야 돼요.
lerna
에서 각 디렉토리의 다른 패키지 관리이것들은 모두 길고 짧기 때문에 자신의 서비스와 팀의 상태를 고려하여 선택해야 한다
CI/CD가 느려지겠죠?
A.안 돼요.
Nx
도구와 CI/CD의 조합이 더 빠를 수 있음Nx
등 도구 관리 코드의 의존 관계는 변경 가능한 부분만 재구성하고 재테스트한다.캐시에 사용되는 다른 내용은 수정과 무관한 부분의 구축과 테스트 시간을 단축할 수 있다.
예컨대
relay
와 user
의 부분만 바뀌면 다음과 같은 의존 관계의 영향을 받을 수 있다.user-e2e
및 components
의 경우 재구축 및 재테스트 필요 없음의존 관계를 모르면 예상치 못한 변경이 생기겠죠?
이 가능하다, ~할 수 있다,...그러나 도구를 정확하게 사용하면 이런 가능성을 줄일 수 있다
Code Owners
Giithub 및 Gitlab의 기능CODE_OWNERS
다음과 같은 방법으로 권한을 설정할 수 있습니다.
apps/app-a/* @kobori.hikaru
apps/app-b/* @tarou
libs/components/* @kobori.hikaru @tarou
이렇게 설정하면 변경에 따른 영향을 감지할 수 있습니다.의존 관계의 구속
constants
와 같은 도구에서는 메타데이터를 추가하여 import 범위를 줄일 수 있다예컨대
apps/
└ user-front-sp
└ user-front-pc
└ backend
└ admin
└ sadmin
libs/
└ components
└ user/
└ admin/
└ api-client
└ constants
이러한 구조로 구성될 때 Nx
또는 libs/components/user/*
에서 가져오는 것을 원하지 않는다admin
메타데이터 추가이렇게 오류를 표시할 수 있습니다.
공통적으로 파괴적인 변경이 있을 경우 영향 범위가 확대되겠죠?
이 가능하다, ~할 수 있다,...
의존 관계가 있는 프로젝트에서는 반드시 여러 버전을 제작하는 데 공을 들여 구버전에서 신버전으로 이행해야 한다
개인 의견 총결산
Good
반드시 주의해야 할 일
Reference
이 문제에 관하여(단일 보고서 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/anneau/articles/4c9beff9645af7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)