2026 멀티리전 원격 Mac Git·Docker 레지스트리 재시도·타임아웃·캐시 런북

약 14분 읽기 · MACCOME

대상: 싱가포르·일본·한국·홍콩·미국 동·서부 등에서 원격 Mac CI를 돌리면서 주 Git, Docker 레지스트리, 아티팩트 스토어가 다른 대륙에 있는 팀. 야간 잡이 git fetch, 레이어 pull, 아티팩트 다운로드에서 멈춥니다.기대 효과: 토폴로지 결정은 아티팩트 근접 매트릭스에 두고, 토폴로지가 얼어 있는 동안 타임아웃, 저속 차단, 지수 백오프, 동시성 상한을 템플릿에 박습니다.구성: 통증 목록, 리전 불일치 표, Git/Docker 손잡이, 여섯 단계, KPI, 마무리 가이드입니다.

CPU는 충분히 빠른데 CI는 왜 느린가

Apple Silicon은 컴파일 상한을 올리지만 파이프라인 시간은 대양 횡단 전송 반복에 자주 막힙니다. 노트북에선 즉각인 워크플로가 Git 홈 리전과 어긋난 러너에선 시간 단위 꼬리로 바뀝니다. 자주 반복되는 오해 여섯 가지입니다.

  1. Git HTTP 기본 타임아웃만 믿기: RTT·손실로 오래 멈추고 GIT_HTTP_LOW_SPEED_LIMIT / GIT_HTTP_LOW_SPEED_TIME이 없으면 무관한 단계에서 터져 트리아지가 엇나갑니다.
  2. 얕은/부분 클론 정책 생략: 히스토리와 LFS가 같은 이그레스 예산을 쓰고 매트릭스 병렬이 git 프로세스·TLS·DNS를 압박합니다.
  3. Docker pull 동시성·중복 제거 무시: 공유 캐시 호스트의 “무작위” 429·TLS 리셋은 대개 손상 이미지가 아니라 백오프 부족입니다.
  4. “한 번 빌드하고 아티팩트 승격” 생략: 리전마다 재빌드하고 재개 가능 업로드가 없으면 컴파일이 반복 크로스 리전 이동이 됩니다.
  5. 네트워크 꼬리를 디스크·Xcode로 잘못 라벨: 디스크·CPU는 한가한데 fetch/pull 재시도가 보이면 M4 Pro·2TB 전에 링크 표로 돌아가십시오.
  6. Pods/SPM 이슈를 Git/레지스트리와 한 덩어리로: 리졸버 지연이 공존할 수 있으나 로그 지문은 다릅니다. CocoaPods·SwiftPM 미러 가이드와 짝을 이룹니다.

셀프호스티드 러너 체크리스트를 겹치십시오. 러너는 잡을 머신에 매핑하고, 이 런북과 근접 매트릭스가 pull 성공률을 결정합니다. 세 문서를 한 마일스톤에서 검토하십시오.

표 1: Git·레지스트리·빌더 리전이 어긋날 때 네 가지 질문

아키텍처 패킷에 멀티리전 대여 가이드와 함께 넣으십시오. 왼쪽은 사실, 오른쪽은 이번 주 우선 조치입니다.

신호전형적 증상먼저 할 일(이번 주)하드웨어 각도
빌더는 APAC, 주 Git은 미동부clone/fetch P95 높음, 야간 실패 뭉침얕은/단일 브랜치 클론, 저속 임계 상향, 병렬 git 상한, 읽기 미러 검토CPU 전에 네트워크. 링크 수정 후에도 꼬리면 M4→Pro 검토
프라이빗 레지스트리가 대륙 간레이어 타임아웃, 간헐 5xx, pull 재시도 누적Pull-through 캐시, 매트릭스 축소, 지터 재시도캐시 디스크를 1TB/2TB 알림에 연결
아티팩트가 다른 리전으로 부채질업로드는 되나 검증이 느림, 중복 빌드단일 빌드+청크 체크섬, 주 빌드 리전 문서화피크 기간은 데이터 홈에 맞추고 최저가 리전만 쫓지 않음
기업 출구 프록시MITM 인증서, SNI·HTTP/2 특이점git과 containerd/docker용 허용 목록 분리, TLS 지문 비교SSH/VNC 접근 정책과 함께 검토

표 2: YAML에 붙일 Git·Docker 손잡이(RTT로 조정)

감사 친화적 기본값입니다. 플레이스홀더는 자사 mtr, 레지스트리 로그, 파이프라인 백분위로 바꾸십시오.

컴포넌트핵심 손잡이예/의미실패 지문
Git (HTTP/S)GIT_HTTP_LOW_SPEED_LIMIT, GIT_HTTP_LOW_SPEED_TIME너무 느린 전송 중단긴 침묵 뒤 급실패, 매트릭스 부하에서 악화
Git 깊이--depth, --single-branchCI HEAD용 객체 전송 축소병렬 클론이 이그레스 포화
Docker / BuildKit레지스트리 미러, max-concurrent-downloads, 빌드 병렬캐시 티어로 동시 레이어 pull 상한429, TLS 리셋, 레지스트리 폭풍
오케스트레이터 백오프재시도, 기본 지연, 상한, 지터동기화된 재시도 스탬피드 방지분 단위로 맞춰진 대량 실패
bash
# Git: avoid cross-region hangs (tune per link; set in CI env)
export GIT_HTTP_LOW_SPEED_LIMIT=1000
export GIT_HTTP_LOW_SPEED_TIME=120
git fetch --depth=1 origin "+refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH}"

# Docker: example daemon concurrency (platform-specific; align with ops)
# "max-concurrent-downloads": 3,
# "registry-mirrors": ["https://your-pull-through.example"]

# Orchestrator sketch: jittered backoff
# sleep = min(cap, base * 2**attempt) + random_jitter
info

참고: 플릿 롤아웃 전 단일 잡으로 검증하십시오. 동시성 변경을 일괄 적용하면 산발적 이슈가 확정 사고로 바뀝니다. 결과가 근접 매트릭스와 충돌하면 일일 요금보다 데이터 상주를 우선하십시오.

여섯 단계: 크로스 리전 pull을 감사 가능한 템플릿으로

전제: 러너 라벨·시크릿은 러너 가이드대로 격리되어 있습니다. .git 자격 증명과 캐시 경로를 임시로 공유 중이면 먼저 수정하십시오.

  1. 주 링크 맵 그리기: 기본 Git 리모트, 주 레지스트리, 아티팩트 버킷, 빌더 리전을 적고 대시보드에 “빌더 리전 == 데이터 홈” 불리언을 둡니다.
  2. pull 정책 동결: 얕은 깊이, git fetch --unshallow 허용 여부, 단일 브랜치 강제. CI에서 암시적 전체 히스토리 금지.
  3. fetch 대 pull SLO 분리: P50/P95와 실패 클래스(타임아웃, 5xx, TLS, 429)를 Git 로그와 런타임 로그로 나눕니다.
  4. 백오프·동시성 상한 추가: 오케스트레이터 재시도는 지터 필수. Docker 동시성은 잡 병렬과 함께 무한 확장하지 않습니다.
  5. 캐시 계약: pull-through 소유, 정리, 디스크 임계를 운영 매뉴얼에 쓰고 1TB/2TB 리뷰에 묶습니다.
  6. 이주일 리뷰: 꼬리가 남으면 무한 재시도 대신 리전·미러 이동을 트리거합니다.

주간 리뷰·알림용 KPI 세 가지

대시보드 제목을 그대로 쓰십시오.

  1. Git fetch/clone P95 대 저속 중단 건수: 병렬 매트릭스 폭 옆에 그립니다. CPU 유휴인데 P95만 오르면 링크 사고 신호입니다.
  2. 이미지 pull 재시도율과 429 비중: 동시 pull 잡과 상관합니다. 동시 스파이크면 호스트 추가 전 동시성을 줄입니다.
  3. 크로스 리전 아티팩트 바이트·중복 빌드 수: “어디서나 빌드” 비용을 대역폭·엔지니어 시간으로 수치화합니다.

방향 맥락(벤치마크 아님): 2025–2026에는 차가운 대양 횡단 pull과 넓은 매트릭스가 꼬리 지연을 수십 분 넘기기 쉽습니다. 데이터 홈 정렬+백오프가 P95에서는 CPU 업그레이드를 이기는 경우가 많습니다.

애드혹 단기 대여·수제 스크립트가 엔터프라이즈 체인 안정을 잘 못 맞추는 이유

개인 스크립트는 감사 추적이 약하고 리전이 바뀔 때마다 타임아웃·캐시가 무효화됩니다. 계약급 Apple Silicon CI에는 베어메탈 격리, 멀티리전 선택, 베이스+피크 기간 조합, Git/레지스트리 정책을 한 페이지에 담을 수 있어야 합니다.

데이터 홈과 맞지 않은 이그레스를 가진 파편화 공급자는 팀을 재시도 폭풍에 가둡니다. 재현 가능한 pull 경로, 리전 간 수평 확장, 프로덕션에 가까운 CI 시크릿 모델이 필요한 팀에게 전용 멀티리전 Mac 클라우드가 순환 임시 호스트보다 조용한 경우가 많습니다. MACCOME은 싱가포르·일본·한국·홍콩·미국 동·서부에서 Mac mini M4·M4 Pro 베어메탈 노드를 유연한 조건으로 제공합니다. 저장소·레지스트리와 같은 곳에 빌더를 두고 공개 요금·리전 페이지·멀티리전·러너 가이드로 확정하십시오.

파일럿: 데이터 홈과 동일 리전에 단기 빌더를 두고 이 글의 이주일 리뷰를 돌린 뒤 월/분기·2TB를 결정합니다. “저렴한 리전, 비싼 링크” 장기 청구를 피하십시오.

FAQ

아티팩트 근접 매트릭스와 어떻게 짝을 이루나요?

매트릭스는 체인을 어디에 둘지 고릅니다. 이 런북은 마이그레이션·동결 창에서 CI를 살립니다. 대여 요금멀티리전 가이드를 열고 두 문서를 같은 변경 티켓에 붙이십시오.

동시성을 먼저 줄일까, 리전을 옮길까?

대시보드에 429·TLS 리셋·동기 재시도가 보이면 동시성을 내리고 지터를 더합니다. P95가 높은 채 데이터를 옮길 수 있으면 리전 이동을 계획합니다. 자세한 내용은 고객 센터를 참고하십시오.

CocoaPods/SPM 글과의 경계는?

그 글은 리졸버 소스와 trunk/CDN 경로를 고정합니다. 이 글은 Git 리모트와 컨테이너 레이어를 고정합니다. 로그에 pod installgit fetch 꼬리가 함께 나오면 지표를 나누고 한 체인만 최적화하지 마십시오.