피드로 돌아가기
Stop Cloning Entire Repos for Your Doc Builds
Dev.toDev.to
DevOps

20만 개 파일 중 필요한 50개만 정밀 추출하는 Selective Fetch 아키텍처

Stop Cloning Entire Repos for Your Doc Builds

sai pramod upadhyayula2026년 5월 27일8intermediate

Context

Docs-as-code 구현을 위해 대규모 Repository를 전체 Clone 하는 방식의 심각한 리소스 낭비 발생. Sparse Checkout이나 Shallow Clone 역시 Git History 협상 과정의 오버헤드와 API Rate Limit 문제로 인해 대규모 파일 시스템에서 병목 지점으로 작용.

Technical Solution

  • Fetch 이전 단계에서 File Listing Metadata를 먼저 확보하여 Resolve 하는 순서 역전 설계
  • Static Site Generator의 Manifest 파일을 활용해 필요한 파일 패턴만 필터링하는 Resolve-before-fetch 로직 구현
  • Git Provider API의 단일 Metadata 호출을 통해 파일 트리 전체를 확보하여 네트워크 왕복 횟수 최소화
  • Content 파일 내부의 참조 경로를 스캔하여 실제 사용되지 않는 Resource 파일을 제거하는 2단계 필터링 공정 도입
  • Provider-agnostic 라이브러리 설계를 통해 특정 Git 서비스에 종속되지 않는 유연한 데이터 추출 구조 확보

Impact

  • 전체 파일 200,000개 중 실제 빌드에 필요한 50개 파일로 데이터 추출 범위 축소

Key Takeaway

전체 데이터를 가져와 필터링하는 'Fetch-then-Filter' 방식에서 메타데이터 기반으로 대상을 확정한 후 가져오는 'Resolve-then-Fetch' 방식으로의 패러다임 전환을 통한 효율성 극대화


- 대규모 저장소에서 일부 파일만 필요한 경우 Full Clone 대신 Metadata API 활용 검토 - RAG 파이프라인 구축 시 코드/테스트 파일을 제외한 문서 파일만 선택적으로 인덱싱하는 필터링 계층 설계 - Asset 파일의 경우 파일 패턴 매칭 후 실제 Content 내 참조 여부를 확인하는 2차 검증 단계 적용

원문 읽기