피드로 돌아가기
Your Artifact Registry Doesn't Need 2 GB of RAM
Dev.toDev.to
Infrastructure

RAM 2GB에서 100MB로, Rust로 재설계한 경량 Artifact Registry

Your Artifact Registry Doesn't Need 2 GB of RAM

Wes2026년 4월 6일7intermediate

Context

Nexus, Artifactory 등 기존 Java 기반 솔루션의 과도한 메모리 점유. JVM 구동 및 Heap 튜닝으로 인한 인프라 리소스 낭비 발생. CI 서버와 같은 제한된 환경에서 메모리 비용 부담 가중.

Technical Solution

  • Rust 언어 기반의 단일 바이너리 설계를 통한 JVM 의존성 제거 및 런타임 오버헤드 최소화
  • Axum과 Tokio 기반의 비동기 HTTP 레이어 구축으로 고성능 패키지 요청 처리
  • 각 레지스트리 프로토콜을 독립 모듈로 분리하고 Storage Trait을 통해 로컬 파일시스템과 S3 백엔드를 추상화한 아키텍처
  • Argon2id 해싱과 Zeroize를 적용하여 메모리 내 보안 자격 증명 노출 방지
  • TTL 캐시 기반의 토큰 검증 레이어를 도입하여 반복적인 해싱 연산 비용 절감
  • 요청 중복 제거 로직을 구현하여 동일 이미지의 동시 풀 요청 시 업스트림 레지스트리 부하 방지

Impact

  • 메모리 사용량: 2 GB 이상 → 100 MB 미만으로 절감
  • 바이너리 크기: 32 MB
  • 테스트 커버리지: 22% → 61.5%로 확대
  • 지원 프로토콜: Docker/OCI, Maven, npm, PyPI, Cargo, Go modules, Raw file 총 7종

Key Takeaway

특정 도메인의 표준 솔루션이 강제하는 런타임 환경(Java/JVM)의 제약을 제거하고, 시스템 요구사항에 최적화된 언어와 아키텍처를 선택함으로써 리소스 효율성을 극대화할 수 있음.


소규모 팀이나 Air-gapped 환경에서 Java 기반 레지스트리의 메모리 부하가 임계치에 도달한 경우 Rust 기반 경량 솔루션 도입 검토

원문 읽기