GitHub Actions, 자체 호스팅으로 비용 절감과 빌드 속도 향상!
GitHub-hosted runner의 높은 macOS 러너 비용과 빌드 속도 저하 문제를 해결하기 위해 자체 호스팅 러너로 전환
macOS 기반 자체 호스팅 러너를 통해 빌드 속도 50~60% 향상 및 월 400파운드 비용 절감
비영구적(Non-ephemeral) 러너 환경에서 발생한 DerivedData, 키체인(Keychain) 관련 문제 해결을 위한 정리 스크립트(Cleanup Script) 도입
4개의 동시 러너(Concurrent Runners)로 인한 대기열 발생 가능성, k8s 기반 자동 확장을 통한 탄력성 확보 방안 제시
GitHub-hosted Runner의 비용 문제와 자체 호스팅의 대안
The Guardian은 iOS 앱 개발을 위해 GitHub-hosted runner의 macOS 환경을 사용하면서 높은 비용에 직면했다. 특히 macOS 러너의 10배 비용 할증은 주요 문제였다. 이에 대한 대안으로 자체 호스팅 러너를 도입하여 월 400파운드 이상의 비용을 절감했다. 자체 호스팅(Self-hosting)은 하드웨어 관리의 책임을 수반하지만, 비용 절감과 빌드 속도 향상이라는 실질적인 이점을 제공한다.
자체 호스팅 러너 구축 과정에서의 기술적 과제
자체 호스팅 러너 구축 과정에서 비영구적(Non-ephemeral) 러너 환경으로 인해 DerivedData 폴더, 키체인(Keychain) 관련 문제 발생했다. 이러한 문제를 해결하기 위해 각 작업 후 정리 스크립트를 실행하여 불필요한 데이터를 삭제했다. DerivedData 폴더 관리는 Xcode 빌드 환경에서 중요한 문제이며, 키체인(Keychain) 관리는 보안과 관련된 문제이므로, 자체 호스팅 환경에서는 더욱 세심한 관리가 필요하다.
성능 향상과 유지보수 트레이드오프(Trade-offs)
자체 호스팅 러너 도입으로 빌드 속도가 50~60% 향상되었지만, 유지보수 측면의 부담이 증가했다. 하드웨어 관리(Hardware Management), Xcode 업그레이드 후 정리, 디스크 공간 관리 등 추가적인 작업이 필요하다. 또한, 4개의 동시 러너로 인해 작업 대기열이 발생할 수 있다는 점도 고려해야 한다. 유지보수(Maintenance)와 성능(Performance) 사이의 균형을 맞추는 것이 중요하다.
확장 가능한 CI/CD 환경 구축을 위한 제언
댓글에서는 4개의 동시 러너로 인한 대기열 문제를 해결하기 위해 actions-runner-controller를 활용한 k8s 클러스터 기반의 자동 확장을 제안했다. k8s 기반 자동 확장(Auto-scaling)을 통해 iOS 빌드에 필요한 베어 메탈(Bare Metal) 성능을 유지하면서도, 다른 작업에 대한 탄력성을 확보할 수 있다. 이는 CI/CD 환경의 확장성(Scalability)과 유연성(Flexibility)을 높이는 데 기여할 수 있다.