피드로 돌아가기
GeekNewsDevOps
원문 읽기
git-sync - 로컬 체크아웃 없이 Git 리모트 간 ref를 직접 미러링하는 CLI 도구
로컬 체크아웃 없는 Relay 기반 Git 리모트 간 ref 직접 미러링 구현
AI 요약
Context
기존 Git 미러링 방식의 로컬 디스크 체크아웃 필수 구조로 인한 저장소 크기 비례 리소스 소모 발생. 대규모 저장소 동기화 시 발생하는 디스크 I/O 병목과 메모리 오버헤드 해결 필요성 증대.
Technical Solution
- 소스 upload-pack 데이터를 타겟 receive-pack으로 직접 연결하는 Relay 전송 경로 설계
- 로컬 저장소 체크아웃 과정을 제거하여 저장소 크기와 무관한 일정 메모리 사용량 유지
- Force, Prune 등 Relay 불가 작업 시 go-git 기반 인메모리 Materialized 폴백 메커니즘 적용
- --materialized-max-objects 설정을 통한 인메모리 스토어의 엄격한 메모리 상한 제어
- Probe, Plan, Sync, Replicate로 이어지는 단계적 API 설계를 통한 동기화 상태 정밀 제어
- 타입드 JSON 출력 지원을 통한 CI/CD 파이프라인 연동 최적화
실천 포인트
1. 대규모 데이터 전송 시 로컬 스토리지 의존성을 제거한 스트리밍 아키텍처 검토
2. 기본 경로(Fast path)와 예외 처리 경로(Fallback path)를 분리하여 효율성 확보
3. 인메모리 처리 시 최대 객체 수 제한을 통한 OOM(Out of Memory) 방지 전략 수립
4. 외부 도구 연동을 위한 표준화된 JSON Plan 출력 인터페이스 설계