비용
GitHub Actions 셀프 호스팅 러너 vs CRACI 관리형 러너
셀프 호스팅 러너는 청구서상으로는 무료처럼 보입니다. 실제 비용은 호스트, 패치 유지에 드는 시간, 그리고 GitHub 스스로 필요하다고 말하는 보안 강화입니다. 러너를 직접 운영하는 데 무엇이 필요한지, 그리고 자체 수치로 채울 수 있는 비용 모델을 소개합니다.
업데이트
GitHub Actions 셀프 호스팅 러너란 무엇입니까?
셀프 호스팅 러너는 GitHub 호스팅 VM 대신 GitHub Actions 작업을 실행하는, 직접 배포하고 관리하는 머신입니다. 물리 서버, 가상 머신, 컨테이너일 수 있으며 온프레미스나 클라우드 계정에 둘 수 있습니다. GitHub는 머신과 그 모든 소프트웨어에 대한 책임이 사용자에게 있다고 말합니다.
- 등록: 러너는 한 번에 하나의 리포지토리, 조직 또는 엔터프라이즈에 등록됩니다. 여러 리포지토리에서 러너를 공유하려면 조직 수준에 등록하고 러너 그룹을 사용하세요.
- 플랫폼: 러너 애플리케이션은 일반적인 Linux 배포판, Windows 10, 11 및 Windows Server, macOS 11 이상을 x64와 ARM64에서 지원합니다.
- 네트워크: 러너는 포트 443의 아웃바운드 HTTPS로 GitHub에 연결합니다.
- 업데이트: 러너 애플리케이션은 새 릴리스가 나온 후 30일 이내에 업데이트해야 합니다. 끄지 않는 한 스스로 업데이트합니다.
- 제한: 작업은 최대 5일 동안 실행할 수 있으며(GitHub 호스팅 러너는 6시간), 24시간 넘게 대기열에 머문 작업은 실패합니다.
-
확장: Kubernetes 오퍼레이터인 Actions Runner Controller(ARC)가 실행 중인 워크플로 수에 따라 러너
스케일 세트를 확장합니다.
--ephemeral로 등록한 러너는 작업 하나만 받습니다.
팀이 셀프 호스팅을 하는 이유
팀은 분당 비용을 줄이고, 내부 시스템이나 특정 하드웨어에 접근하고, 이미 비용을 내고 있는 용량을 활용하기 위해 셀프 호스팅을 합니다. GitHub의 대형 러너는 클수록 분당 비용도 높아지므로, 큰 머신은 호스팅 러너에서 비싸집니다.
GitHub는 현재 셀프 호스팅 러너에 분당 요금을 부과하지 않습니다. 2026년 3월 1일부터 셀프 호스팅 러너에 분당 $0.002의 클라우드 플랫폼 요금을 부과한다고 발표했다가, "to take time to re-evaluate our approach"(접근 방식을 재검토할 시간을 갖기 위해) 연기했습니다. 2026년 9월 기준 GitHub의 과금 문서는 셀프 호스팅 사용량을 무료로 설명합니다. GitHub가 비용을 부담하지 않는 것은 러너를 둘러싼 나머지 전부입니다.
셀프 호스팅 비용의 세 가지 요소
셀프 호스팅 비용은 인프라, 엔지니어링 시간, 보안 강화로 구성됩니다. 청구서에 나타나는 것은 첫 번째뿐입니다.
인프라
호스트는 작업을 실행하든 유휴 상태든 비용이 들므로, 가장 바쁜 시간대에 맞춰 규모를 정해야 합니다. 여기에 캐시와 이미지용 스토리지, 네트워크 트래픽, 플릿 모니터링과 자동 확장에 쓰는 도구 비용이 더해집니다.
엔지니어링 시간
GitHub 문서는 책임 소재를 분명히 밝힙니다. 셀프 호스팅 러너에서는 "you are responsible for updating the operating system and all other software"(운영체제와 다른 모든 소프트웨어의 업데이트는 사용자의 책임)입니다. 실제로는 러너 버전 업그레이드, 호스트 간 이미지 드리프트, 디스크 정리, 자동 확장 스크립트, 그리고 대기열이 멈췄을 때 대응할 당직자도 포함됩니다.
보안 강화
셀프 호스팅 러너에 대한 GitHub의 보안 지침에는 전문을 읽어 볼 만한 두 가지 경고가 있습니다.
Self-hosted runners should almost never be used for public repositories on GitHub, because any user can open pull requests against the repository and compromise the environment.(누구나 리포지토리에 풀 리퀘스트를 열어 환경을 침해할 수 있으므로, 셀프 호스팅 러너를 GitHub의 공개 리포지토리에 사용하는 일은 거의 없어야 합니다.) GitHub Docs, Secure use reference
Self-hosted runners for GitHub do not have guarantees around running in ephemeral clean virtual machines, and can be persistently compromised by untrusted code in a workflow.(GitHub용 셀프 호스팅 러너는 임시 클린 가상 머신에서 실행된다는 보장이 없으며, 워크플로의 신뢰할 수 없는 코드에 의해 지속적으로 침해될 수 있습니다.) GitHub Docs, Secure use reference
GitHub는 최대 1개의 작업을 실행한 뒤 제거되는 JIT 러너를 권장합니다. 이를 제대로 하려면 임시 머신, 작업 간 격리, 아웃바운드 네트워크 트래픽 제어, 신중한 시크릿 관리가 필요합니다. 각각이 직접 설계하고 구축하고 계속 운영해야 하는 작업입니다.
대규모 셀프 호스팅 러너 모범 사례
GitHub의 보안 지침과 대규모 러너에 대해 AWS가 공개한 모범 사례는 같은 목록으로 수렴합니다. 각 항목이 하나의 프로젝트입니다.
- 임시 러너: 머신당 작업 하나로, 작업 간에 아무것도 넘어가지 않습니다.
- 러너 그룹: 리포지토리와 환경별로 러너를 분리하며, 가능하면 별도 계정에 둡니다.
- 단기 자격 증명: 장기 액세스 키 대신 클라우드에 OpenID Connect를 사용합니다.
- 이그레스 제어: 작업이 무엇을 실행하는지뿐 아니라 어디에 접근할 수 있는지도 제한합니다.
- 시작 시간: 임시 머신은 시작이 느리므로 웜 풀과 사용자 지정 이미지를 사용합니다.
- 비용: 장시간 실행 작업을 위한 대체 수단을 갖춘 스팟 인스턴스.
- 모니터링: 대기, 실행, 완료된 작업에 대한 지표와 알림.
CRACI에서는 첫 번째와 네 번째 항목이 러너에 기본으로 포함됩니다. 모든 작업은 작업 시작 전에 검증되고 실패 시 차단되는 이그레스 정책 아래, 격리된 가상 머신에서 실행됩니다.
직접 채워 볼 수 있는 비용 모델
셀프 호스팅 월 비용 = 호스트 비용 + (유지 관리 및 보안 강화 시간 × 시간당 인건비)
CRACI 월 비용(2 vCPU 러너) = 빌드 분 × $0.004
CRACI 공식은 요금 페이지의 요율을 사용합니다. CRACI는 빌드 시간에만 요금을 부과하며, 월 요금과 SBOM당 요금이 없습니다. 최신 수치는 요금 페이지에서 확인하세요.
예시 A
벤치마크가 아닌 예시 입력값입니다. 2 vCPU 러너에서 월 60,000 빌드 분, 러너 호스트 월 $350, 시간당 $85로 월 8시간의 유지 관리.
- 셀프 호스팅: $350 + (8 × $85) = $350 + $680 = 월 $1,030
- CRACI: 60,000 × $0.004 = 월 $240
예시 B
벤치마크가 아닌 예시 입력값입니다. 같은 60,000분이지만 호스트 비용은 월 $115이고, 유지 관리에는 시간당 $85로 2시간이 걸립니다.
- 셀프 호스팅: $115 + (2 × $85) = $115 + $170 = 월 $285
- CRACI: 월 $240
예시 B에서는 컴퓨팅만 놓고 보면 둘이 비슷합니다. 호스트가 저렴하고 설정이 안정적인 팀에게는 실제로 나올 수 있는 결과입니다. 손익분기점을 찾으려면 CRACI 금액에서 호스트 비용을 빼고 시간당 인건비로 나누세요. 예시 B의 호스트 기준으로는 ($240 − $115) ÷ $85, 즉 월 약 1.5시간의 유지 관리입니다.
공식에 드러나지 않는 점이 두 가지 있습니다. 첫째, CRACI 금액에는 컴퓨팅 이상의 것이 포함됩니다(다음 섹션 참조). 둘째, 시간은 대부분의 팀이 과소평가하는 입력값입니다. 초기 설정만이 아니라 이미지 업데이트, 보안 패치, 확장, 디스크 정리, 실패한 작업에 쓰는 시간까지 세세요.
셀프 호스팅 러너가 제공하지 않는 것
셀프 호스팅 러너는 작업을 실행하지만, 작업이 무엇을 했는지는 기록하지 않습니다. CRACI 러너에서는 각 빌드가 실행되는 동안 증거를 생성합니다.
- CycloneDX 또는 SPDX 형식의 빌드 시점 SBOM. 작업이 가져오는 것을 관찰하는 패키지를 인식하는 프록시가 CI 캐시에서 복원된 패키지까지 포함해 생성합니다. 완전성은 작업 및 캐시별로 표시됩니다.
- 네트워크 이그레스 정책. 기본 거부 또는 허용 방식에 24개의 내장 소프트웨어 소스 프리셋과 유형이 지정된 사용자 지정 소스를 제공합니다. 정책은 작업 시작 전에 검증되고 실패 시 차단됩니다. 위반 시 알림이 발생합니다.
- API로 제공되는 작업별 네트워크 추적.
- API로 제공되는 출처 증명 데이터.
- 빌드와 리포지토리 전반의 취약점 추적. 모니터링 대상 SBOM은 지속적으로 재평가됩니다.
자체 프록시, SBOM 도구, 네트워크 로깅으로 셀프 호스팅 러너에서 이 중 일부를 구축할 수 있습니다. 그렇게 한다면 구축하고 유지 관리하는 시간도 위의 비용 모델에 포함해야 합니다.
| 기능 | CRACI | 셀프 호스팅 러너 |
|---|---|---|
| OS와 러너 패치 담당 | CRACI | 사용자 |
| 작업 격리 | 각 작업이 격리된 가상 머신에서 실행 | 설정에 따라 다름, GitHub는 임시 클린 머신을 보장하지 않음 |
| 네트워크 이그레스 | 기본 거부를 지원하는 조직 정책, 작업 시작 전 검증, 실패 시 차단 | 직접 구축하고 유지 관리하는 방화벽이나 프록시 |
| SBOM | 빌드 중 기록, 작업 및 캐시별 완전성 표시 | 파이프라인마다 추가하는 별도 도구 |
| 출처 증명 | API를 통한 출처 증명 데이터, 서명 없음 | 직접 추가하는 서명 및 증명 도구 |
| 과금 | 작업 시간 초 단위 | 사용 중이든 유휴 상태든 호스트 비용은 동일 |
| 작업 실행 위치 | 유럽 베어메탈 인프라의 CRACI 관리형 러너 | 자체 네트워크, 클라우드 계정 또는 하드웨어 |
| 운영체제 | 현재 x86-64 및 ARM64의 Linux, Windows와 macOS는 로드맵에 포함 | 러너를 설치할 수 있는 모든 머신 |
CRACI가 제공하지 않는 것
CRACI는 현재 고객 호스팅 또는 온프레미스 러너를 제공하지 않으며, Enterprise용으로 로드맵에 있습니다. 빌드는 유럽 인프라의 CRACI 관리형 러너에서 실행됩니다. 작업을 자사 네트워크 안이나 보유한 하드웨어, 또는 에어갭 환경에서 실행해야 한다면, 그 작업에는 셀프 호스팅 러너를 유지하세요.
- CRACI 러너는 현재 Linux만 지원하며, Windows와 macOS는 로드맵에 있습니다. macOS와 Windows 빌드는 기존 위치에 둡니다.
- x86-64와 ARM64는 같은 요금으로 실행됩니다.
- 이미지: CRACI Slim, CRACI Slim ARM64, GitHub 호환 Ubuntu 24.04 이미지. 중첩 가상화는 x86-64에서 사용할 수 있으며 ARM64에서는 프리뷰로 제공됩니다.
- 지원되는 CI 통합은 GitHub Actions입니다.
혼합 구성이 일반적입니다. 작업을 옮기는 것은 runs-on 줄 하나를 바꾸는 일이므로, 대부분의 작업을 옮기고
일부는 셀프 호스팅 러너에 남겨 둘 수 있습니다. 빌드 시점 SBOM과 네트워크 정책은 CRACI 러너의 작업에만 적용됩니다.
결정하는 방법
자체 수치로 결정하세요. 지난달 러너 비용과 투입 시간, 요구받는 증거, 그리고 각 옵션에서 실제 워크플로 하나를 실행한 결과입니다.
- 지난달 호스트 청구액과 팀이 러너에 쓴 시간을 사고 대응까지 포함해 합산합니다.
- 빌드 분을 셉니다.
- 둘 다 위의 공식에 넣습니다.
- 요구받는 증거(SBOM, 출처 증명, 네트워크 제어)와 현재 러너에서 이를 생성하는 데 필요한 것을 정리합니다.
- 데모를 예약하고 실제 워크플로 하나를 CRACI에서 실행해 비교합니다.
러너의 작동 방식에 대해 더 알아보기: CI/CD 통합, CRACI의 보안, 문서.
GitHub Actions 셀프 호스팅 러너 FAQ
비용, 설정, 보안, 제한에 대한 간단한 답변.
GitHub Actions 셀프 호스팅 러너란 무엇입니까?
셀프 호스팅 러너는 직접 배포하고 관리하는, GitHub Actions 작업을 실행하는 머신입니다. 물리 서버, 가상 머신, 컨테이너일 수 있으며, 온프레미스나 클라우드 계정에 둘 수 있습니다. 여기에 GitHub 러너 애플리케이션을 설치하고 리포지토리, 조직 또는 엔터프라이즈에 등록한 뒤, runs-on: self-hosted나 자체 레이블로 지정합니다.
GitHub Actions 셀프 호스팅 러너는 무료입니까?
2026년 9월 기준 GitHub는 셀프 호스팅 러너에 분당 요금을 부과하지 않습니다. 2026년 3월 1일부터 분당 $0.002의 플랫폼 요금을 부과한다고 발표했다가, 접근 방식을 재검토하기 위해 연기했습니다. 하지만 머신, 스토리지, 네트워크 비용과 패치 및 보안 유지에 드는 시간은 여전히 부담해야 합니다.
셀프 호스팅 러너 하나로 여러 리포지토리를 지원할 수 있습니까?
러너는 한 번에 하나의 리포지토리, 조직 또는 엔터프라이즈에 등록됩니다. 여러 리포지토리에서 공유하려면 조직 수준에 등록하고 러너 그룹으로 접근을 제어하거나, 같은 머신에서 각각 따로 등록한 러너 인스턴스를 여러 개 실행하세요.
셀프 호스팅 러너는 어떤 운영체제에서 실행할 수 있습니까?
GitHub는 Ubuntu 20.04 이상, Debian 10 이상, RHEL 8 이상 같은 일반적인 Linux 배포판, Windows 10, 11 및 Windows Server 2016~2022, macOS 11 이상에서 러너 애플리케이션을 지원합니다. x64와 ARM64에서 실행되며, Linux에서는 ARM32도 지원합니다.
셀프 호스팅 러너에서 작업은 얼마나 오래 실행할 수 있습니까?
최대 5일이며, GitHub 호스팅 러너의 6시간과 비교됩니다. 24시간 넘게 대기열에 머문 작업은 실패합니다.
셀프 호스팅 러너는 공개 리포지토리에 안전합니까?
GitHub는 누구나 풀 리퀘스트를 열어 머신에서 코드를 실행할 수 있으므로, 셀프 호스팅 러너를 공개 리포지토리에 사용하는 일은 거의 없어야 한다고 말합니다. 권장 사항은 최대 1개의 작업만 실행하는 임시 JIT(just-in-time) 러너와 함께 격리, 이그레스 제어, 신중한 시크릿 관리를 적용하는 것입니다.
Actions Runner Controller는 무엇을 합니까?
Actions Runner Controller(ARC)는 GitHub Actions용 셀프 호스팅 러너를 오케스트레이션하고 확장하는 Kubernetes 오퍼레이터입니다. 러너 스케일 세트는 실행 중인 워크플로 수에 따라 늘고 줄어듭니다. 클러스터, 이미지, 주변 네트워크는 여전히 직접 운영해야 합니다.
CRACI 러너를 자사 네트워크에서 실행할 수 있습니까?
현재는 불가능합니다. CRACI는 유럽 인프라에서 관리형 러너를 제공하며, Enterprise용 고객 호스팅 러너는 로드맵에 있습니다. 자사 네트워크 안에서 실행해야 하는 작업은 셀프 호스팅 러너에 두고, 다른 작업은 CRACI로 옮길 수 있습니다.