- 컴포넌트 구조와 관련된 아키텍처를 침범하는 힘은 기술적이며, 정치적이고, 가변적이다
ADP: 의존성 비순환 원칙
컴포넌트 의존성 그래프에 순환(cycle)이 있어서는 안 된다.
- 숙취 증후군: 본인보다 더 늦게까지 일하면서 본인이 의존하고 있던 무언가를 수정하여 생긴 문제
- 숙취 증후군은 많은 개발자가 동일한 소스 파일을 수정하는 환경에서 발생
- 이를 위한 해결책으로 '주 단위 빌드'와 '의존성 비순환 원칙'이 있다
주 단위 빌드(Weekly Build)
- 첫 4일 동안은 신경쓰지 않고 개발하다가 마지막 날 모두 통합하여 시스템을 빌드
- 단점은 마지막 날 고통을 치루어야 한다
- 프로젝트가 커지면 프로젝트 통합은 금요일 하루 만에 끝마치는 게 불가능해진다
- 개발보다 통합에 드는 시간이 늘어나면서 팀의 효율성도 서서히 나빠진다
- 효율성을 유지하기 위해 빌드 일정을 늘리고, 주기가 늦어질수록 프로젝트가 감수할 위험은 커진다
- 통합과 테스트를 수행하기가 점점 더 어려워지고, 팀은 빠른 피드백이 주는 장점을 잃는다
순한 의존성 제거하기
- 개발 환경을 릴리스 가능한 컴포넌트 단위로 분리하여 개별 개발자 또는 단일 개발팀이 책임질 수 있는 작업 단위가 된다
- 개발자가 해당 컴포넌트가 동작하도록 만들고, 이를 릴리스하여 다른 개발자가 사용할 수 있도록 만든다
- 담당 개발자는 이 컴포넌트에 릴리스 번호를 부여하고, 다른 팀에서 사용할 수 있는 디렉터리로 이동시킨다
- 그 이후 개발자는 자신만의 공간에서 해당 컴포넌트를 지속적으로 수정
- 나머지 개발자는 릴리스된 버전을 사용한다
- 컴포넌트가 새로 릴리스되어 사용 가능하면, 다른 팀은 당장 적용할지 결정