내부 npm 레지스트리로 모노레포 지배하기: Verdaccio, Artifactory, GitHub Packages 활용법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
모노레포를 사용하는 개발자 및 DevOps 엔지니어. 중간 수준의 npm 패키지 관리와 인프라 설정 지식이 필요.
핵심 요약
- 모노레포에서의 문제점:
@utils/logger
같은 공유 라이브러리의 중복 설치, 버전 불일치, 보안 취약점(left-pad@0.0.1-security
). - 내부 레지스트리의 핵심 기능:
Verdaccio
,Artifactory
,GitHub Packages
를 통해 사용자 정의 패키지 호스팅, 버전 통일, 캐싱 프록시 제공. - 설정 예시:
npm install -g verdaccio
로 5분 내에 자체 호스팅 가능.npm publish --registry
명령어로 패키지 배포.
섹션별 세부 요약
1. 모노레포의 문제점
- 중복 설치: 10개 팀이
@utils/logger
를 10가지 방식으로 설치. - 버전 불일치:
@ui/button
의 버전이 프로젝트별로 다름. - 보안 취약점:
left-pad@0.0.1-security
와 같은 취약 패키지가 생산 환경에 혼입.
2. 내부 레지스트리 도입
- 사용자 정의 패키지 호스팅:
@your-org
같은 조직 내부 패키지 관리. - 캐싱 기능:
react
같은 대규모 패키지 다운로드 2회 방지. - 보안 강화:
npm audit
또는Snyk
으로 CVE 취약점 스캔.
3. 도구별 특징
- Verdaccio:
- 장점: 무료, 5분 내 설정 가능,
npm/yarn/pnpm
호환. - 단점: 50명 이상 개발자 확장 시 복잡성 증가.
- Artifactory:
- 장점: 기업용 기능(역할 기반 권한, SSO), 다중 언어(Java, Python) 지원.
- 단점: 비용이 높고, XML 설정 복잡.
- GitHub Packages:
- 장점: GitHub Actions와 통합, 공개 저장소 무료.
- 단점: 사설 저장소 저장 공간 제한, 세부 권한 설정 부족.
4. 구현 전략
- 버전 관리:
npm version patch|minor|major
로 세미버전 관리. - 자동화: CI/CD로 머지 시 자동 패키지 배포.
- 문서화: 내부 패키지마다
README
작성 필수.
5. 사례 연구
- 20명 규모 금융 기술 팀:
Verdaccio
를 $10/월 VM에 배포.@fintech/utils
,@fintech/ui
로 공유 코드 이관.- 캐싱으로 설치 시간 70% 감소.
결론
- 내부 레지스트리 선택 가이드:
- 초기 단계:
Verdaccio
로 간단한 설정. - 기업 규모:
Artifactory
의 기업 기능 활용. - GitHub 중심:
GitHub Packages
로 CI/CD 통합. - 핵심 팁:
- 보안: 정기적으로
npm audit
실행. - 캐싱: 대규모 패키지 다운로드 방지.
- 문서화: 모든 내부 패키지에
README
포함. - 비교:
Verdaccio
는 비용 효율적이지만 확장성 저하,Artifactory
는 기능이 많으나 비용 증가.