원격 Mac CI에서 sccache·ccache·Redis·NFS·동시 워커를 표로 고정합니다. 복붙 환경 변수·캐시 디렉터리·타임아웃·재시도 임계값만 남겨 검색형으로 따라 하기 쉽게 배열했습니다. 링크: , 블로그, Nix 매트릭스.
1
키 오염: 브랜치·타깃 트리플이 섞이면 조용한 미스가 나고 로그만으로는 원인 추적이 어렵습니다.
2
NFS: 캐시 루트를 네트워크에 두면 메타 지연이 컴파일보다 커져 전체 잡 시간이 불안정해집니다.
3
과병렬: 워커 곱이 Redis 연결 상한을 넘기면 타임아웃이 줄줄이 나며 히트율이 떨어진 것처럼 보입니다.

sccache 대 ccache 빠른 선택

항목 sccache ccache
주 사용처 Rust와 clang MSVC 래핑을 한 번에 묶기 좋음 GCC와 Clang C 계열에 익숙한 팀
원격 백엔드 Redis와 객체 스토어 등 플러그인 선택지가 넓음 원격은 URL과 HTTP 스토어 조합이 중심
운영 난이도 백엔드 조합 로컬 히트 강함

Redis 엔드포인트·키 프리픽스·TLS

러너와 Redis를 같은 리전에 두고 ACL 비밀은 파일 대신 비밀 저장소에서 주입하세요. PR릴리스는 네임스페이스를 나누면 롤백과 캐시 무효가 단순해집니다.

설정 권장 값 메모
엔드포인트 사내 TLS 공용 직결은 지연 큼
키 프리픽스 리포·타깃·브랜치 짧은 키는 충돌

NFS 마운트와 로컬 NVMe 스테이징

APFS 로컬에 캐시를 두고 NFS는 읽기 위주 아티팩트만 두세요. 어쩔 수 없이 NFS를 쓸 때는 락이 적은 전용 익스포트와 긴 actimeo를 검토합니다.

마운트·워커 시작값 이유
CMAKE 병렬 코어 절반 Redis 병목
동시 잡 RAM 상한 미스 시 메모리 급증

복붙 환경 변수·캐시 디렉터리·타임아웃

zsh 예시입니다. 타임아웃은 넉넉히, 재시도는 이삼사팔초 사다리에 지터를 섞으세요.

export RUSTC_WRAPPER=sccache
export SCCACHE_DIR="${CI_WORKSPACE:-$PWD}/.sccache-local"
export SCCACHE_REDIS="redis://:비밀@내부-redis:6379/0"
export SCCACHE_NAMESPACE="ios-main-$(uname -m)"
export SCCACHE_IDLE_TIMEOUT="0"
export SCCACHE_SERVER_CONN_TIMEOUT_SECS="60"
export SCCACHE_RECACHE="false"

export CCACHE_DIR="${CI_WORKSPACE:-$PWD}/.ccache-dir"
export CCACHE_REMOTE_STORAGE="redis://내부-redis:6379/1"
export CCACHE_SLOPPINESS="time_macros"
export CCACHE_MAXSIZE="25G"
export CCACHE_COMPRESSLEVEL="6"

운영 순서 여섯 단계

1
한 래퍼만 남기고 빌드 설정을 정리합니다.
2
Redis에 테스트 키로 권한·TLS를 검증합니다.
3
네임스페이스에 리포·아키텍처를 넣어 오염을 막습니다.
4
로컬 디렉터리 히트를 먼저 확보한 뒤 원격 히트 비율을 대시보드에 붙입니다.
5
워커를 올릴 때 Redis 지연 카운터를 같이 봅니다.
6
이삼사팔초 백오프 후 세 번 넘기면 사람에게 넘깁니다.

인용 가능한 임계값

  • 연결 타임아웃 육십초부터
  • 백오프 이사팔초와 지터
  • 디스크 팔십퍼센트 넘기면 정리

FAQ

동시에 켜도 되나요?

한 컴파일 호출에 이중 래핑하지 말고 팀 표준을 하나로 고정하세요.

Redis가 느리면?

워커를 줄이고 리전을 맞추거나 로컬 히트 비중을 키우는 편이 안전합니다.

NFS 캐시는?

락과 메타 지연이 큽니다. NVMe 로컬 스테이징이 우선입니다.

요약. 도구 하나··로컬·리전·워커·백오프를 묶으세요. GHCR 매트릭스와도 맞추면 좋습니다.

요금·구매·고객 지원·블로그는 로그인 없이 열립니다.

macpull.com에서 원격 Mac 플랜을 비교해 보세요.

컴파일 캐시용 원격 Mac

Redis와 NFS 튜닝을 같이 가져갈 Apple Silicon 노드를 찾는다면 요금과 구매 페이지에서 사양을 비교하세요.