![[의존성의 방향을 따라 4/5] PR을 전파하는 Distributer](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fv31psllp%2Fproduction%2Fa10397a45e1395d33088919d69b74c3219e27ac8-1684x1030.png%3Fauto%3Dformat%26fit%3Dmax%26w%3D1200&w=3840&q=75)
의존성 지옥을 탈출하는 법: 위상 정렬과 상태 머신으로 구현한 자동화된 PR 전파 시스템 'Distributer'
본 아티클은 대규모 마이크로서비스 환경에서 의존성 업데이트를 자동화하는 'Distributer'의 동작 원리를 설명합니다. 단순한 코드 변환을 넘어 실질적인 운영 단계인 PR 생성, CI 모니터링, 자동 머지 과정을 Wave 기반 모델로 구조화하여 효율을 극대화한 사례를 다룹니다.
다수의 마이크로서비스를 운영하며 라이브러리 버전 관리에 고통받는 팀에게 권장하며, 도입 전 전사적인 CI/CD 컨벤션 통일이 선행되어야 합니다.
수십 개의 마이크로서비스 레포지토리에 걸쳐 의존성 업데이트를 수동으로 전파할 때, 복잡한 선후 관계와 CI 상태 및 리뷰 과정을 일일이 추적하며 머지 순서를 관리하는 것은 물리적으로 불가능합니다.
의존성 그래프를 기반으로 한 'Wave' 모델을 도입하여, 선행 의존성이 해결된 후 다음 단계의 PR을 자동 생성하고 CI 상태 추적, Flaky Test 재시도, 자동 머지까지 수행하는 Distributer 시스템을 구축했습니다.
수동으로 2~4주가 소요되던 50개 이상의 레포지토리 업데이트 작업을 하루(약 8.5시간) 만에 완료했으며, 사람이 개입해야 하는 에스컬레이션 비율을 패치 버전 기준 5% 미만으로 억제했습니다.
Trade-off
모든 레포지토리가 일관된 CI/CD 파이프라인과 빌드 구조를 갖춰야만 자동화가 작동하며, 비즈니스 로직 판단이 필요한 특정 에러는 여전히 사람의 수동 개입이 필수적입니다.
의존성 그래프를 위상 정렬하여 서로 의존성이 없는 그룹(Wave) 단위로 순차적인 업데이트를 진행하는 방식입니다.
코드 변경과 무관하게 간헐적으로 실패하는 테스트를 과거 이력을 바탕으로 판단하여 처리하는 기법입니다.
자동화 도구나 AI가 스스로 해결할 수 없는 복잡한 판단 문제를 사람(엔지니어)에게 위임하는 프로세스입니다.




