Buildkite는 에이전트가 실제 빌드를 수행하는 구조라, macOS 파이프라인을 자가 호스팅으로 가져갈 때 「항상 켜 둔 Mac 풀」과 「일 단위로 켜는 클라우드 Mac」을 어떻게 섞느냐가 비용과 대기열 SLO를 동시에 결정합니다.
급증 빌드 탄력: 일 단위 클라우드 Mac을 언제 붙일까
고정 Mac 미니 풀은 야간·릴리스에 안정적이지만, PR 폭주 시 큐 꼬리가 길어집니다. 일 단위 클라우드 Mac은 이미지 베이스라인과 에이전트 태그만 맞추면 Buildkite 큐에 바로 가중치를 더할 수 있어, 스프린트 막바지에만 비용을 쓰는 구조가 됩니다.
| 시나리오 | 탄력 전략 | Artifact·스토리지 | 대기열 SLO 힌트 |
|---|---|---|---|
| 평시 PR | 상시 1~2대, 태그 mac-default |
짧은 TTL, 로그·xcresult는 S3 계열로 이관 | p95 대기 ≤ 10분 |
| 릴리스 주간 | 일 단위 노드 추가, 태그 mac-burst |
IPA·dSYM은 버전별 버킷 경로 고정 | 릴리스 큐만 p95 ≤ 5분 |
| 인프라 장애 | 대체 큐로 우회, 에이전트 중지 전 작업 드레인 | 실패 빌드 Artifact는 보존 일수 연장 | 실패율 알림과 분리 |
Artifact 보존: Buildkite 기본 저장과 객체 스토리지 분리
대용량 .xcarchive나 테스트 산출물은 Buildkite Artifact에만 두면 보존 기간·대역폭 비용이 커질 수 있습니다. 메타데이터와 작은 로그만 Artifact로 남기고, 큰 바이너리는 버전 경로가 명시된 객체 스토리지로 직접 업로드하는 패턴이 운영에 유리합니다.
# 큐·우선순위·라벨을 인프라 코드와 일치시키기 BUILDKITE_AGENT_TAGS="queue=ios,profile=burst" BUILDKITE_AGENT_NAME="mac-cloud-$(hostname -s)" # 대용량 산출물은 스크립트에서 aws s3 cp 등으로 분리 업로드
대기열 SLO: 지표와 알림을 한 세트로
스케줄된 빌드와 PR 빌드를 같은 SLO로 보면 야간 배치가 주간 지표를 망칩니다. 브랜치·파이프라인 유형별로 p95 대기·큐 깊이를 나누고, 버스트 태그 에이전트 가용성을 별도 패널에 두면 원인 분리가 쉬워집니다. 더 알아보기: 2026년 단주기 버스트 빌드: GitLab CI 셀프 호스팅 macOS Runner를 클라우드 Mac에 붙일 때의 Shell Executor, 캐시 키와 태그 전략——GitHub Actions와 혼용할 때의 의사결정 매트릭스와 실행 가능한 파라미터 FAQ, 2026년 단주기 iOS 빌드 대안: CircleCI 클라우드 macOS 실행기 vs 일 단위 자체 호스팅 클라우드 Mac Runner——비공개 의존성·동시 실행 상한·대기열 SLO 의사결정 매트릭스 FAQ.
클라우드 Mac mini에서 이 파이프라인이 더 매끄럽게
Buildkite 에이전트가 돌아가는 macOS 호스트는 Apple Silicon 통합 메모리 덕분에 Xcode·링커·테스트 러너가 동시에 올라와도 대역폭 병목이 덜하고, Mac mini M4급 노드는 유휴 시 약 4W 수준의 전력으로 장시간 상주시키기 좋습니다. Homebrew·SSH·Unix 도구가 기본이라 에이전트 설치와 런북이 단순해지고, Gatekeeper·SIP로 무인 노드의 면적 공격 노출도 줄일 수 있습니다.
Windows 워크스테이션을 임시 빌드기로 쓰는 것과 비교하면, 동일 가격대에서도 Apple Silicon은 빌드 wall time과 전력 효율에서 유리하고, macOS의 낮은 크래시율은 릴리스 주간 온콜 부담을 줄입니다.
일 단위로 macOS 빌드 용량을 늘리려는 팀이라면, VPSSpark 클라우드 Mac mini M4는 검증된 출발점입니다——지금 바로 플랜 확인하고 Buildkite 큐 대기를 설계하세요.