2026 Mac 클라우드 디스패치 가능 빌드 풀: 잡 샤딩, DerivedData 어피니티, 큐 SLO 체크리스트
PR은 탄력 호스트 러너에, 나잇틀리는 전용 Mac에 싣는 그림은 있는데 노드를 여러 대 두면 둘째 층이 무너집니다. Mac 클라우드가 각각 VPS처럼 행동하고 Archive와 가벼운 증분이 한 NVMe 큐를 다투며 링크 타임아웃이 제품 결함처럼 보입니다. 이 글은 macOS 빌더를 프로그램 가능한 용량으로 만들 팀을 위해 네 가지 통증, 샤딩 매트릭스, 다섯 단계 롤아웃, 재무에도 통하는 세 지표, FAQ를 정리합니다. 읽은 뒤에는 일화 대신 한 장 체크리스트로 용량 계획을 방어할 수 있습니다.
목차
1. 통증: 단일 호스트 습관, 샤드 부재, 어피니티 드리프트, SLO 언어 불일치
단일 SSH Mac에서 다중 CI 노드로 넓히면 실패 원인은 CPU에서 스케줄·캐시 정책 결핍으로 옮겨갑니다. 큰 Swift 워크스페이스는 NVMe 큐와 모듈 지역성에 민감하고, 리눅스 빌드 팜과 같은 설계 도약이 필요하지만 Apple 체인은 공유 루트 페널티가 큽니다.
- SSH 습관: 스케줄러는 무작위 배치입니다. 라벨·큐 계약 없으면 로그와 물리 경로가 맞지 않아 사건이 패턴화되지 않습니다.
- 샤드 없는 가짜 병렬: 슬롯이 많아도 DerivedData가 하나면 디스크에서 직렬화되고 링크 타임아웃이 납니다.
- 어피니티 드리프트: 연속 빌드가 다른 파티션에 떨어지면 증분 이득이 사라져 컴파일 업데이트 탓으로 오인합니다.
- CPU만 보는 SLO: 재무는 분, 플랫폼은 초록만 보면 회의가 멈춥니다. 큐 비중·링크 분산·재시도 분을 한 화면에 두세요.
2. 매트릭스: 샤드 입도, 큐 형태, 디스크 정책
후속 글 맥락: 웜 경로, PR/나잇틀리 라우팅, 분 과금·큐. 리뷰 시 주 샤드 축·디스크 배치·병렬 상한을 묶어 적습니다.
| 차원 | 스킴으로 샤드 | 테스트 슬라이스로 샤드 | 라벨 풀 |
|---|---|---|---|
| 주 이득 | 무거운 스킴별 링크 경합 감소 | 병렬 테스트의 큐 꼬리 단축 | Archive를 가벼운 잡과 물리 분리 |
| 주 리스크 | 샤드 과다 시 checkout 부담 | 불균등 슬라이스는 거짓 녹색 | 라벨 표류는 자동화 위생 필요 |
| 디스크 정책 | 스킴별 하위 디렉터리·야간 gc | 슬롯별 DerivedData | Archive 호스트는 빌드·산출물 듀얼 파티션 |
| 큐 SLO 힌트 | 스킴별 동시 실행 상한 | 슬라이스별 타임아웃·재시도 상한 | Archive 전역 병렬 1~2 |
3. DerivedData 어피니티와 스탬피드 방지
어피니티는 캐시 재사용 확률을 올리는 배치입니다. 슬롯마다 DERIVED_DATA_PATH, Archive는 별도 큐, 여유 15% 미만이면 신규 Archive 중단, 관측 Webhook과 같은 채널로 이벤트를 보냅니다.
export JOB_SLOT=${JOB_SLOT:-1}
export DERIVED_DATA_PATH=/Volumes/ci/nvme/slot-${JOB_SLOT}/dd
export COCOAPODS_CACHE_PATH=/Volumes/ci/nvme/slot-${JOB_SLOT}/pods
xcodebuild -scheme App -destination 'platform=iOS Simulator,name=iPhone 16' build
백오프는 링크 실패는 성기게, 컴파일 실패는 빨리 끊어 슬롯을 돌려줍니다. 이단계 큐 임계로 병렬 조정과 용량 티켓을 나눕니다. Archive를 가벼운 증분과 같은 큐에 두지 않는 것만으로도 밤샘 릴리스 주간의 분산이 줄어듭니다.
4. 프로파일에서 세 번 수락까지 다섯 단계
- 프로파일: 증분·시뮬·Archive 분리 후 비율 측정. 링크 비중 정체는 공유 DD 의심.
- 경로 계약:
JOB_SLOT·라벨·디렉터리를 템플릿에 고정, 공유 캐시 직접 쓰기 금지. - 병렬 게이트: Archive 전역 1~2, PR은 백오프형 상한, 시뮬 매트릭스는 별 큐.
- 관측: 큐·여유 디스크·재시도 분 비율을 클러스터 패널에. 반복 링크 타임아웃은 기본 인프라 티켓.
- 세 번 수락: 동일 커밋 세 번 P95 비교, 분산이 남으면 단일기 병렬 극대화보다 둘째 저병렬 베이스라인 우선.
5. 인용하기 좋은 세 지표
- 큐 비중: E2E의 15% 넘고 커밋과 상관이면 샤드·게이트 먼저.
- 링크 분산: 동일 세 번 P95가 25% 이상 떨어지면 공유 DD·여유 공간·Archive 혼합 큐 점검.
- 재시도 분 비율: 총의 4분의 1 넘으면 병렬·상한 먼저 조여 스케일아웃은 나중.
셋이 동시에 악화면 성공률이 높아도 용량 사건으로 봅니다.
6. 웜 노드·탄력 풀 글과의 조합
탄력 라우팅은 호스티드 분과 전용 Mac 사이 배치를, 웜 튜닝은 각 호스트 내부 캐시 거동을, 본고는 전용 노드 여러 대가 서로 캐시와 디스크를 빼앗지 않게 하는 계약을 다룹니다. 샤드·어피니티·SLO 어휘를 세트로 쓰면 재무 리뷰와 플랫폼 리뷰가 같은 차트를 봅니다.
7. FAQ
Q: 두 대도 풀? A: 계약·관측 있으면 예, 없으면 아픈 SSH 두 대.
Q: 스킴 먼저 테스트 먼저? A: 링크 스탬피드 vs 큐 꼬리 중 무엇이 지배하는지 보고 Archive는 항상 분리.
Q: 바로 분산 원격 캐시? A: 로컬 NVMe 분할·잡별 경로가 선행, 외부 캐시는 일관성·egress 부담.
8. 결론
풀은 샤드로 병렬 진위, 어피니티로 증분 신뢰, SLO로 리뷰 재현성을 결정합니다. 큐와 디스크를 함께 읽습니다.
공유 호스티드 풀만 쓰면 디스크 레이아웃과 벤더 병렬 상한이 가려져 macOS를 완전한 자산으로 다루기 어렵습니다. 샤드·어피니티 없이 작은 디스크 노드를 쌓으면 Archive와 PR이 같은 링크 스탬피드를 재생산해 꼬리·재시도 분이 함께 악화합니다. VPSMAC Apple Silicon Mac 클라우드를 임대해 무거운 링크 체인을 전용·저병렬 베이스라인에 올리고 템플릿에 샤드·관측 계약을 코드화하며 모든 잡이 하나의 DerivedData 루트를 나눠 쓰지 않게 하는 편이 iOS 딜리버리를 정상 용량으로 안정시키는 지름길입니다.