이 글은 iOS와 macOS 앱을 빌드하는 팀이 GitHub-hosted runner와 self-hosted runner를 비용만으로 비교하지 않도록 돕습니다. 실행 시간, 대기열, Xcode 고정, 보안, 유지 보수와 맥 러너 임대의 활용 시점을 함께 판단합니다.
GitHub Actions macOS Runner는 저렴한 쪽이 아니라 업무 이용률과 대기 시간을 함께 계산해 선택해야 합니다. 실행량이 적고 변동이 크면 GitHub-hosted runner가 적합하고, 빌드가 길며 이용률이 안정적이거나 Xcode와 내부 의존성을 고정해야 하면 self-hosted runner가 유리합니다. 아직 수요를 모른다면 맥 러너를 일정 기간 임대해 실제 데이터를 모은 뒤 장비 구매를 결정하는 편이 안전합니다.
이 글은 GitHub Actions로 iOS와 macOS 앱을 빌드하는 팀을 위한 내용입니다. macOS 빌드 분이 빠르게 늘어난 팀, 인증서와 Xcode를 고정해야 하는 CI 담당자, 장비 구매와 클라우드 맥 임대 비용을 비교하는 기술 관리자가 특히 참고할 수 있습니다.
마지막 업데이트: 2026년 8월 21일. GitHub의 최신 요금표, 러너 이미지 목록, Xcode 이미지 문서와 자체 호스팅 러너 안내를 기준으로 확인했습니다.
먼저 계산할 비용은 실행료가 아니라 전체 작업 비용입니다
GitHub Actions macOS Runner 비용은 다음 항목을 분리해 기록해야 합니다.
- 실행 비용: 워크플로가 실제로 러너를 점유한 시간과 GitHub의 현재 macOS 요금입니다. macOS 호스팅 러너는 리눅스 표준 러너와 다른 분당 요금 체계를 적용하므로, 계정 요금제와 러너 유형을 공식 Runner 요금표에서 확인해야 합니다.
- 대기 비용: 작업이 큐에서 기다린 시간입니다. 개발자가 결과를 기다리는 시간과 병합 지연까지 포함해야 합니다.
- 유휴 비용: self-hosted runner를 켜 두었지만 작업이 없는 시간입니다. 구매 장비에서는 감가와 전력, 임대 노드에서는 사용하지 않은 기간이 여기에 해당합니다.
- 운영 비용: macOS 업데이트, Runner 애플리케이션 업데이트, 디스크 정리, 인증서 교체, 모니터링과 장애 대응에 드는 시간입니다.
- 복구 비용: 노드가 멈췄을 때 재설치하거나 예비 노드로 전환하는 비용입니다.
GitHub 공식 문서는 호스팅 러너를 분 단위로 과금하고 macOS 표준 러너에 리눅스와 다른 배수를 적용한다고 설명합니다. 따라서 단순히 “자체 장비는 실행료가 없다”라고 판단하면 안 됩니다. 실제 비교식은 다음과 같이 잡는 것이 좋습니다.
월간 총비용 = 실행 과금 + 장비 또는 임대 비용 + 운영 시간 비용 + 유휴 비용 + 장애 복구 비용
월간 실행 횟수, 평균 실행 시간, 가장 바쁜 시간대의 동시 작업 수를 최근 Actions 기록에서 추출해야 합니다. 평균만 보면 오전 배포 시간의 큐 폭증을 놓칠 수 있습니다.
실행 시간과 대기열을 따로 측정해야 합니다
iOS 빌드 한 건의 시간을 다음 구간으로 나누면 어느 방식이 필요한지 빠르게 드러납니다.
- 저장소 내려받기와 서브모듈 준비
- 패키지와 외부 의존성 복원
- Xcode 컴파일
- 단위 테스트와 UI 테스트
- 아카이브와 서명
- 러너 할당 전 대기
의존성 캐시는 실행 시간은 줄일 수 있지만 캐시 키가 잘못되면 오래된 패키지나 손상된 결과가 재사용될 수 있습니다. GitHub는 Actions 의존성 캐시 공식 문서에서 키와 복원 순서를 관리하는 방법을 설명합니다.
대기열을 줄이는 방법은 세 가지 방향으로 나뉩니다.
- 작업이 드문 저장소는 GitHub-hosted runner를 사용하고 필요할 때만 실행합니다.
- 동시에 여러 빌드가 몰리면 작업을 빌드, 테스트, 배포로 나누고 불필요한 중복 실행을 취소합니다.
- 특정 시간대에 항상 대기열이 길다면 더 큰 호스팅 러너나 별도 self-hosted runner를 검토합니다.
GitHub-hosted runner의 macOS 이미지와 레이블은 공식 Runner Images 목록에서 확인해야 합니다. 레이블만 보고 원하는 Xcode가 항상 설치되어 있다고 가정하면 이미지 변경 시 빌드가 깨질 수 있습니다.
Xcode와 의존성 통제 수준이 선택을 가릅니다
GitHub-hosted runner는 매번 정해진 이미지에서 시작하는 임시 실행 방식에 적합합니다. 표준 Xcode 조합을 사용하고, 빌드 스크립트가 외부 사설망이나 특수 하드웨어에 의존하지 않는 팀이라면 운영 부담이 작습니다.
반대로 다음 조건이 있으면 self-hosted runner 쪽으로 무게가 이동합니다.
- 특정 Xcode 버전을 장기간 고정해야 합니다.
- 사내 패키지 저장소나 내부 네트워크에 연결해야 합니다.
- 대형 의존성을 반복해서 내려받아 캐시 효과가 큽니다.
- 인증서, 프로비저닝 프로파일, 키체인 구성을 통제해야 합니다.
- Apple silicon 기반 테스트와 기존 아키텍처 테스트를 분리해야 합니다.
2026년 8월 21일 기준으로 GitHub의 이미지 저장소에는 xcode-27 macOS Arm64 이미지가 공개 미리 보기로 표시되어 있습니다. 사용 가능 여부와 포함 도구는 Xcode 27 Arm64 이미지 문서에서 확인해야 하며, 공개 미리 보기 상태를 장기 운영 보장으로 해석해서는 안 됩니다.
환경 통제는 장점인 동시에 책임입니다. self-hosted runner를 선택하면 Xcode 업데이트 전 검증, 오래된 시뮬레이터 삭제, DerivedData와 캐시 정리, 인증서 만료 확인을 팀이 직접 수행해야 합니다.
보안 범위를 좁히지 않으면 자체 구축 비용이 커집니다
임시 호스팅 러너는 작업이 끝난 뒤 실행 환경이 폐기되는 구조라서, 이전 작업의 파일이 다음 작업으로 남는 위험을 줄이기 쉽습니다. 반면 지속적으로 재사용하는 self-hosted runner에는 작업 디렉터리, 캐시, 키체인, 환경 변수와 로그가 남을 수 있습니다.
특히 공개 저장소의 풀 리퀘스트에서 실행되는 워크플로에 자체 러너를 연결하는 것은 신중해야 합니다. 악성 수정이 러너 권한으로 실행되면 저장소 비밀값이나 내부망 접근 정보가 노출될 수 있습니다. GitHub도 self-hosted runner 보안 접근 안내에서 공개 저장소와 신뢰하지 않는 코드를 연결할 때의 위험을 설명합니다.
운영 전에 다음 기준을 적용해야 합니다.
- 공개 저장소에는 민감한 self-hosted runner를 연결하지 않습니다.
- 저장소와 조직별로 Runner 그룹을 나눕니다.
- 배포용 러너와 테스트용 러너를 분리합니다.
- 프로덕션 인증서는 빌드용 작업과 같은 권한에 두지 않습니다.
- 작업 종료 뒤 임시 파일, 로그, 키체인을 삭제합니다.
- 러너가 접근할 수 있는 내부망 범위를 최소화합니다.
Runner 그룹은 특정 저장소만 러너를 사용하도록 제한할 수 있습니다. 자세한 권한 구조는 Runner groups 공식 안내에서 확인할 수 있습니다.
자체 호스팅 러너가 맡게 될 유지 보수 범위
self-hosted runner를 도입할 때는 장비를 연결하는 작업보다 이후의 반복 업무를 먼저 계산해야 합니다.
- macOS 보안 업데이트와 재부팅 일정 관리
- Runner 애플리케이션과 관련 도구 업데이트
- Xcode 및 시뮬레이터 설치와 회귀 검증
- 저장 공간, 캐시, 로그, DerivedData 정리
- 개발자 인증서와 프로비저닝 프로파일 교체
- 러너 오프라인 상태와 작업 실패 알림 설정
- 장애 발생 시 재설치 또는 예비 노드 전환
- 작업 종료 뒤 계정과 키체인 상태 점검
GitHub의 self-hosted runner 추가 절차는 등록 토큰과 러너 등록 과정을 안내하지만, 운영 팀의 패치 정책이나 인증서 관리까지 대신해 주지는 않습니다. 전담 관리자가 없다면 장부상 장비 비용만 보고 절약된다고 결론 내리기 어렵습니다.
조건별로 호스팅과 자체 구축을 나누는 판단 기준
다음 조건 목록을 워크플로별로 적용하면 선택이 단순해집니다.
-
월간 실행량이 낮고 변동이 큽니다.
GitHub-hosted runner를 우선 선택합니다. 사용한 만큼 과금되는 구조가 고정 장비의 유휴 비용보다 관리하기 쉽습니다. -
작업은 적지만 특정 Xcode나 내부망이 꼭 필요합니다.
self-hosted runner를 선택하되, 공개 저장소와 배포 권한을 분리합니다. -
빌드와 테스트가 길고 매일 일정하게 실행됩니다.
자체 Mac 또는 맥 러너 임대를 비교합니다. 실행 시간이 길수록 큐와 호스팅 분당 과금이 누적되므로 전체 비용을 계산해야 합니다. -
동시 실행이 특정 시간대에 집중됩니다.
먼저 대기 시간을 측정하고, 병렬 러너 추가와 워크플로 중복 취소를 검토합니다. 단순히 더 빠른 장비만 추가하면 유휴 시간이 커질 수 있습니다. -
이용률과 필요한 Xcode 구성이 아직 불확실합니다.
장비를 바로 구매하지 말고 일정 기간 독립된 맥 러너를 임대해 실행 시간, 대기열, 실패율을 수집합니다.
결정 전 확인 체크리스트
아래 항목에 체크하면서 각 워크플로를 분류하면 됩니다.
-
[ ] 실행량이 낮고 주간별 변동이 큽니다.
해당하면 GitHub-hosted runner를 우선 검토합니다. -
[ ] 빌드가 특정 Xcode 버전, 사내 저장소 또는 내부망에 의존합니다.
해당하면 self-hosted runner를 우선 검토합니다. -
[ ] 가장 바쁜 시간대에 대기열이 반복적으로 길어집니다.
해당하면 병렬 러너, 더 큰 호스팅 러너 또는 별도 맥 노드를 비교합니다. -
[ ] 러너의 패치, 인증서 교체, 캐시 청소를 맡을 담당자가 정해져 있지 않습니다.
해당하면 자체 구축을 서두르지 말고 호스팅 또는 임대 방식부터 검토합니다. -
[ ] 장비를 최소 한 기간 운영해 실제 이용률과 실패율을 측정할 수 있습니다.
해당하면 맥 러너를 먼저 임대하고, 측정 결과가 안정적인 경우에만 구매를 검토합니다.
체크 결과가 여러 방향으로 갈리면 비용이 가장 낮은 방식보다 실패 영향이 작은 방식을 우선해야 합니다. 예를 들어 내부망이 필수인데 관리 담당자가 없다면 호스팅만 고집할 수 없습니다. 반대로 고정 환경이 필요하지 않은데 장비를 구매하면 사용하지 않는 시간에도 비용과 보안 책임이 남습니다.
도입 전에 실행할 측정 절차
다음 순서로 진행하면 비용 추정이 추측에 머물지 않습니다.
- 첫째, 최근 Actions 실행 기록에서 저장소별 실행 횟수, 총 실행 시간, 실패 횟수와 대기 시간을 내려받습니다.
- 둘째, 각 워크플로를 의존성 복원, 컴파일, 테스트, 아카이브와 서명 구간으로 나눕니다.
- 셋째, 평균값과 가장 바쁜 시간대 값을 따로 기록합니다. 평균 실행 시간이 짧아도 배포 시간에 큐가 길면 개발 흐름이 멈춥니다.
- 넷째, 현재 Xcode 버전, 필요한 Apple silicon 여부, 사설망, 인증서와 캐시 요구 사항을 목록화합니다.
- 다섯째, GitHub-hosted runner의 현재 라벨과 요금표를 확인하고, 이미지 변경이 워크플로에 미칠 영향을 검토합니다.
- 여섯째, self-hosted runner의 패치, 청소, 모니터링, 복구를 담당할 사람과 예상 시간을 비용에 넣습니다.
- 일곱째, 이용률이 불확실하면 임대 맥에서 동일한 브랜치와 동일한 캐시 정책으로 시험한 뒤 구매 여부를 결정합니다.
시험 단계에서는 nuvcloud 싱가포르 지역 맥 러너 이용 경로처럼 실제 노드 전달 방식과 이용 지역도 함께 확인해야 합니다. 같은 워크플로를 반복 실행하면서 실행 시간, 대기 시간, 의존성 다운로드 시간과 실패율을 분리해 기록해야 구매 판단에 사용할 수 있습니다.
이 과정에서 성공 기준도 정해야 합니다. 예를 들어 “평균 실행 시간 단축”만 기록하지 말고, “가장 바쁜 시간대의 대기 감소”, “Xcode 변경 뒤 복구 시간”, “인증서 갱신 실패 횟수”를 함께 봐야 합니다.
GitHub Actions macOS Runner를 기준으로 보면 GitHub-hosted runner의 가장 큰 단점은 실행량이 늘 때 호스팅 과금과 대기열이 함께 커질 수 있다는 점입니다. 반대로 self-hosted runner는 장비 구매 또는 임대 비용이 계속 발생하고, Xcode 업데이트와 보안 청소를 직접 맡아야 하며, 장애 시 예비 노드가 없으면 배포가 멈춥니다. 이용률이 아직 확인되지 않은 팀이라면 처음부터 장비를 사는 것보다 nuvcloud의 맥 러너 임대로 실제 부하를 검증하는 편이 실패 비용을 줄이기 쉽습니다. 다른 지역 노드가 필요한 경우에는 nuvcloud의 해외 맥 이용 경로에서 전달 조건을 확인한 뒤 비교하면 됩니다.
팀에 맞는 원격 맥 러너를 시작해 보세요
nuvcloud는 앱 빌드와 자동화 작업에 필요한 원격 맥 환경을 편리하게 제공합니다.
필요한 기간과 작업량에 맞춰 맥 자원을 선택하여 장비 구매 부담을 줄일 수 있습니다.