![[의존성의 방향을 따라 2/5] 의존 그래프를 읽는 Planner](https://cdn.sanity.io/images/v31psllp/production/cfc2fee7bc9a333e841c5c5cf5cc07721137979c-1684x1030.png)
3
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
이 게시물은 레포 간 의존성 선언을 파싱해 변경의 안전한 전파 순서와 실행 계획(wave)을 생성하는 Planner를 설명합니다.
Planner는 각 레포 build.gradle.kts의 의존성 선언을 수집해 레포 간 의존 그래프를 복원하며, 선언 형태의 구조적 일관성이 파싱 전제 조건입니다.
그래프는 DAG로 순환 의존이 없어 위상 정렬이 가능하고, 전파 방향에 따라 간선 방향을 뒤집거나 병렬 처리를 압축해 wave 단위 계획을 만듭니다.
변경 성격에 따라 전파 방향이 달라지며, Kotlin은 downstream-first(컴파일 메타데이터 호환), Spring Boot는 upstream-first(API/BOM 의존)로 안전 순서가 반전됩니다.
Planner는 Kahn’s algorithm 기반으로 wave를 생성해 “어디까지 동시에 가능한지”를 제시하며, 이로써 불필요한 직렬 대기를 줄이고 병렬 최대화를 돕습니다.
의존 그래프는 변경의 폭발 반경(blast radius)을 정량화해 리뷰 정책과 PR 생성 시 신중도 판단에 근거를 제공합니다.
![[의존성의 방향을 따라 1/5] 버전업이 고통인 이유](https://cdn.sanity.io/images/v31psllp/production/6b5c6a4d92aeec8eb1400140ea58d591749ec8ee-1684x1030.png)
![[미래를 담아낸 뼈대 7/7] 의존성의 방향을 따라](https://cdn.sanity.io/images/v31psllp/production/85a2456afffb0f96fb7c09ce89e31b7ad3400ab7-1684x1030.png)