![[의존성의 방향을 따라 2/5] 의존 그래프를 읽는 Planner](https://flex.team/blog/og/main.jpg)
아키텍처
[의존성의 방향을 따라 2/5] 의존 그래프를 읽는 Planner
두줄요약
레포 간 의존성을 그래프로 복원해 변경 전파 순서를 자동 계산하는 Planner를 설명했습니다. 또한 Kotlin과 Spring Boot처럼 변경 유형에 따라 upstream-first와 downstream-first를 구분하는 방법을 정리했습니다.
구조와 흐름
- 레포 간 의존성을 build.gradle.kts 선언에서 파싱해 전체 의존 그래프를 복원하는 Planner 역할
- DAG 성질과 위상 정렬로 변경 전파 순서를 계산하며, 순환 의존이 없다는 점이 안전한 계획의 전제
- 변경 성격에 따라 upstream-first, downstream-first, parallel로 전파 방향을 달리 적용
선택 이유
- Kotlin 버전업은 바이트코드 메타데이터 호환성 때문에 downstream-first가 필요
- Spring Boot 버전업은 API/BOM 의존성 때문에 upstream-first가 필요
- 버전 관리 플러그인이 선언 형식을 통일해 파서와 그래프 생성 로직을 단순화
성능/운영 포인트
- 위상 정렬 결과를 Wave로 나눠 직렬 대기 횟수를 최소화
- gradle-plugins, backend-commons처럼 폭발 반경이 큰 변경의 영향 범위를 정량화
- 리뷰 정책과 PR 생성 시 위험도 판단 근거로 활용
