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