본문으로 건너뛰기

Depfu의 패키지 그룹 관리 기능 개선: 프라이빗 모노레포 및 공용 그룹 지원 확대

Package groups, but better

작성자
발행일
2025년 12월 03일
https://depfu.com/blog/package-groups-but-better

핵심 요약

  • 1 Depfu는 동일한 버전 번호로 동시 배포되는 패키지들을 하나의 그룹으로 묶어 업데이트 PR을 통합 관리하는 기능을 대폭 강화했습니다.
  • 2 공용 패키지 그룹 정의를 GitHub 오픈소스로 전환하여 사용자가 직접 기여할 수 있게 했으며, 현재 npm과 Bundler 생태계를 우선 지원합니다.
  • 3 .depfu.yml 설정 파일을 통해 프라이빗 패키지 그룹을 직접 정의할 수 있는 기능을 추가하여 기업 내부 모노레포 환경에서도 효율적인 업데이트가 가능해졌습니다.

도입

소프트웨어 개발 환경에서 모듈화가 가속화됨에 따라, 여러 패키지를 하나의 네임스페이스 아래에서 관리하고 동일한 버전 번호로 동시에 배포하는 '모노레포' 구조가 보편화되었습니다. Babel이나 Rails와 같은 대규모 프로젝트들이 대표적인 사례입니다. 의존성 업데이트 자동화 도구인 Depfu는 이러한 패키지 그룹의 업데이트를 효율적으로 처리하기 위해 기존의 제한적인 관리 방식에서 벗어나, 사용자가 직접 그룹을 정의하고 오픈소스 커뮤니티가 함께 관리할 수 있는 새로운 시스템을 도입했습니다. 이번 업데이트는 특히 기업 내부의 프라이빗 패키지 관리 편의성을 높이는 데 중점을 두고 있습니다.

1. 패키지 그룹 관리 방식의 근본적인 변화

Depfu는 과거 Greenkeeper의 정의를 활용하거나 내부적인 비공개 리스트를 통해 모노레포 패키지들을 그룹화해 왔습니다. 하지만 패키지 생태계의 빠른 변화에 대응하기 위해, 이러한 그룹 정의를 GitHub의 depfu/package-groups 저장소로 공개했습니다.

  • 커뮤니티 참여: 이제 누구나 npm이나 Bundler(RubyGems) 환경에서 함께 업데이트되어야 하는 패키지 목록을 발견하면 Pull Request를 통해 직접 기여할 수 있습니다.
  • 자동 반영: 제출된 리스트가 승인되면 Depfu 시스템에 신속하게 반영되어 모든 사용자가 혜택을 입게 됩니다.
  • 적용 기준: 그룹화의 핵심 전제 조건은 해당 패키지들이 ‘동일한 버전 번호’로 ‘동시에(Lockstep)’ 배포되어야 한다는 점입니다.

2. 프라이빗 패키지 그룹 지원 (Proprietary Package Parcels)

오픈소스 외에도 기업 내부에서 운영하는 프라이빗 모노레포 패키지들에 대한 그룹화 요구가 높았습니다. Depfu는 이를 해결하기 위해 .depfu.yml 설정 파일을 통한 사용자 정의 그룹 기능을 출시했습니다.

주요 특징 및 제약 사항:

  • 저장소 단위 설정: 현재는 조직(Org) 단위가 아닌 개별 저장소 수준에서 설정이 이루어집니다.
  • 접근 권한: 프라이빗 레지스트리에 대한 읽기 권한이 필요하며, 권한이 없을 경우 Depfu 대시보드에서 접근 승인을 요청하는 안내가 표시됩니다.
  • 우선순위: 사용자가 정의한 그룹보다 Depfu의 공용(Public) 그룹 정의가 항상 우선순위를 가집니다. 만약 공용 패키지가 누락되었다면 설정 파일에 추가하기보다 오픈소스 저장소에 기여하는 것이 권장됩니다.

3. 설정 방법 및 예시

사용자는 프로젝트 루트에 위치한 .depfu.yml 파일에 다음과 같이 패키지 그룹을 정의할 수 있습니다.

npm 설정 예시:

yaml npm: package_groups: depfu_npm_support: - "@depfu/npm-support-main" - "@depfu/npm-support-parser" - "@depfu/npm-support-updater" npm의 경우 그룹 이름은 자유롭게 정할 수 있으며, 이는 PR 제목이나 브랜치 이름에 반영됩니다.

Bundler (Ruby) 설정 특이점:

Ruby의 Bundler 환경에서는 그룹의 이름이 해당 그룹의 ‘메인 패키지’ 이름과 일치해야 합니다. 예를 들어 Rails 관련 젬들을 그룹화한다면 그룹명을 rails로 지정해야 active*, action* 계열의 젬들이 올바르게 통합됩니다.

4. 도입 효과 및 기대 가치

이러한 그룹화 기능을 활용하면 다음과 같은 이점을 얻을 수 있습니다. 1. PR 노이즈 감소: 수십 개의 개별 패키지 업데이트 PR 대신, 논리적으로 연결된 하나의 통합 PR만 검토하면 됩니다. 2. 업데이트 무결성 보장: 모노레포 패키지 중 일부만 업데이트되어 발생할 수 있는 의존성 충돌이나 빌드 오류를 사전에 방지합니다. 3. 워크플로우 최적화: 프라이빗 패키지에 대한 자동화된 관리가 가능해짐에 따라 내부 라이브러리 유지보수 비용이 절감됩니다.

결론

이번 업데이트를 통해 Depfu는 모노레포 및 다중 패키지 환경에서의 의존성 관리 복잡도를 획기적으로 낮추었습니다. 사용자는 공용 그룹 정의에 기여하거나 개별 저장소 설정을 통해 자사만의 패키지 업데이트 전략을 최적화할 수 있습니다. 이는 불필요한 Pull Request 생성을 줄여 개발자의 검토 피로도를 낮추고, 패키지 간 버전 불일치로 인한 런타임 오류를 방지하는 효과가 있습니다. 현재 지원되는 npm과 Bundler 외에도 향후 다양한 생태계로의 확장 가능성이 열려 있어, 현대적인 웹 개발 워크플로우에서 Depfu의 가치는 더욱 높아질 것으로 보입니다.

댓글0

댓글 작성

댓글 삭제 시 비밀번호가 필요합니다.

이미 계정이 있으신가요? 로그인 후 댓글을 작성하세요.

0/1000
정중하고 건설적인 댓글을 작성해 주세요.