Github 액션을 가진 Github 호스팅 러너 또는 자체 호스트 러너를 선택할 때

Github 액션을 가진 Github 호스팅 러너 또는 자체 호스트 러너를 선택할 때

코드를 구축, 테스트 또는 배포하든 수동 프로세스 자동화는 개발자 경험을 향상시키고 성공적인 DevOps 전략을 달성하는 데 핵심입니다.

GitHub에서는 GitHub 동작을 사용하여 CI/CD 파이프 라인을 구현할뿐만 아니라 GitHub에서 온 및 오프 모든 프로세스를 자동화 할 수 있습니다. GitHub Enterprise Cloud에서 GitHub 액션을 채택 할 때 GitHub 호스팅 러너와 자체 호스팅 러너 중에서 선택하여 작업량을 실행할 수 있으며 각 장단점이 있습니다.

이 게시물에서는 Github 호스트 러너를 5 개 지역의 자체 호스팅 러너와 비교하여 Github Actions 채택 전략에 가장 적합한 유형을 결정하는 데 도움이됩니다.

Github 호스트 러너와 자체 주최 러너는 무엇입니까?

Github 호스트 러너 및 자체 호스팅 러너는 동일한 오픈 소스 소프트웨어를 기반으로하며 MacOS, Windows 및 Linux를 지원합니다. 그러나 그들은 많은 차이점이 있습니다.

Github 호스트 러너 사전 구성된 Windows, Linux 및 MacOS 가상 머신을 사용하여 GitHub의 인프라에서 완전히 관리됩니다. 전형적인 워크로드에 대한 표준 러너를 제공하는 것 외에도 호스팅 된 러너는 더 많은 리소스 (메모리, CPU 및 스토리지), 사용자 정의 이미지, 정적 IP 범위 및 Azure Virtual Network 통합을 위해 더 큰 러너를 제공합니다.

자조 주자 온-프레미스이든 클라우드에서 자신의 인프라에서 작동합니다. 구성, 보안 및 스케일링과 같은 모든 측면을 관리합니다. 또한 Github Enterprise Server 또는 사용자 정의 하드웨어에서 다른 방법으로 러너를 운영 할 수 있습니다. 또한 특히 고도로 안전한 시스템으로 작업 할 때 특정 규정 준수 요구 사항을 구현하는 유일한 방법이 될 수 있습니다.

두 옵션 모두 특정 요구와 리소스에 따라 뚜렷한 이점을 제공합니다. Github 호스트 러너가 프로젝트에 적합한 선택이 될 수 있고 자조 주자를 사용하는 것이 더 나을 때를 살펴 보겠습니다.

완전히 관리되거나 자체 관리됩니까?

이 두 옵션의 주요 차이점은 우리가 지적한 것처럼 주최하는 곳입니다. 그러나 그 선택에는 몇 가지 의미가 있습니다.

Github 호스트 러너 자동으로 안전하고 업데이트되는 주문형 가상 머신 (VMS) 풀이있는 관리 인프라를 제공하십시오. 각 작업 후에 디스크가 재 시합되어 환경은 임시입니다. 이전 작업의 파일이 후속 실행에 영향을 미치지 않도록합니다. VM은 최신 버전의 Github CLI, Docker 및 일반적인 개발 플랫폼을 포함하여 사전 설치된 소프트웨어 및 도구를 사용하여 GitHub 작업에 최적화되어 빠른 시작 시간을 보장하고 속도 제한을 피하십시오.

Github 호스트 러너를 사용하면 바로 뛰어 들어 워크 플로우를 구축 할 수 있습니다. 시작하기 전에 구성하거나 안전 할 것이 없으므로 신속하게 시작하려면 이상적입니다. 그리고 우리는 모두 인프라보다 코드에 더 많은 시간을 보내는 것을 선호합니다.

자조 주자 솔루션을 정의 할 때 완벽한 유연성을 제공하지만 인프라, 이미지, 캐시 및 보안을 관리하고 GitHub의 요금 제한에 대한 가용성 및 사용을 모니터링 할 책임이 있음을 의미합니다. 이를 위해서는 GitHub Actions Architecture, VM 및 컨테이너 이미지 빌딩, 네트워크 및 인프라 관리에 대한 전문 지식이 필요합니다. 핵심 비즈니스 오퍼링이 확장 가능한 인프라 솔루션 또는 Kubernetes 인 경우 자체 주최 러너가 합리적 일 수 있습니다.

자세히 살펴 보겠습니다.

확장 성

생산성을 유지하려면, 특히 CI/CD 워크로드의 경우 주문형 자원을 이용할 수있는 고도로 사용할 수있는 리소스를 제공하는 것이 중요합니다. 작업이 실행되기를 기다리는 것은 다른 작업을 수행하는 것이 차단 될 수 있음을 의미 할 수 있습니다. 실제로, 매주 단일 낭비 시간은 개발자 당 1 년에 4,000 달러 이상의 비용을 지불 할 수 있습니다!

그러나 사용 가능한 주문형 리소스를 확장하는 것은 어렵습니다. 잘 설계된 클라우드 인프라가 있더라도 새로운 가상 머신을 제공하는 데 시간이 걸립니다. 여러 지역의 시스템이 시간을 유지하려면 20-25%의 여분의 용량을 사용하여 빠르게 확장하고 예기치 않은 시스템 고장을 처리 할 수 ​​있습니다.

Github 호스트 러너 Microsoft의 딥 데이터 센터 및 클라우드 전문 지식을 활용하고 99.9%의 서비스 수준 계약 (SLA)을 충족시키기위한 전담 팀을 보유하고 있습니다. 그리고 그것은 당신의 전문 지식이 없습니다. 실제로, 많은 팀은이 가용성을 제압하기 위해 자조 주자를 고려하지만 모든 달리기는 동일한 서비스 및 제어 비행기에 의존하기 때문에 기술적으로는 불가능한 것으로 밝혀졌습니다. 즉, 자조 주자가 당신을 위해 일할 수있는 조건이 있습니다.

자조 주자 고정 된 수의 서버가 필요한 경우 귀하의 요구를 충족 할 수 있고, 주로 클라우드 비 클라우드 리소스에 배치에 중점을두고 있으며, 주문시 규모를 확장 할 필요가 없습니다. 인스턴스는 기본적으로 일시적이지 않으므로 인스턴스를 이전 실행에 의해 생성 된 아티팩트로부터 자유롭게 유지하기위한 전략이 필요합니다. 자체 주최 러너는 자동 스케일링 기능도 부족합니다. 대규모 팀을 지원하거나 새로운 인스턴스를 동적으로 만들 수있는 스케일링 솔루션이 필요합니다.

Github의 Actions Runner Controller (ARC)는 솔루션을 제공하지만 Kubernetes 전문 지식이 필요하고 Linux 러너 만 지원하므로 제한 사항이 있습니다. Kubernetes는 VMS 대신 컨테이너에 의존하므로 리소스 경합 및 스케일링 문제를 해결해야합니다. ARC는 여러 클러스터를 사용하여 고 가용성을 제공 할 수 있습니다. 앞에서 언급했듯이, 주요 사업이 Kubernetes 클러스터를 호스팅하고 관리하는 경우 ARC가 올바른 접근 방식 일 수 있습니다.

ARC는 MACOS 또는 Windows 워크로드를 지원하지 않으며 두 환경 모두 여러 가지 제한 사항을 나타냅니다. 예를 들어, MACOS에서는 Apple 하드웨어를 사용해야하며 기계 당 2 개의 VM으로 제한되며 Apple 런타임 컨테이너화는 지원되지 않습니다. Windows의 경우 가상 머신이 지원되지만 인스턴스를 확장하려면 사용자 정의 오케스트레이터가 필요합니다. Wind

요컨대, 우리는 MacOS 및 Windows 워크로드 모두에 Github 호스팅 러너를 권장합니다.

보안

CI/CD 프로세스에는 보안이 중요합니다. 내부 또는 생산 자원에 대한 액세스가 필요할 수 있으며 제 3 자 라이브러리, 런타임 및 도구를 사용하여 제대로 안전하지 않으면 큰 공격 표면을 생성 할 수 있습니다.

Github 호스트 러너 깊이있는 제로 트러스트 접근 방식을 통해 내장 보안을 제공합니다. VM은 네트워크 격리를 제공하여 다른 러너 및 기업 자원에 대한 노출을 방지합니다. 실제로 기업 또는 클라우드 리소스에 대한 액세스에는 권한을 높여야합니다 (OIDC 권장). 임시 성격은 코드 지속성을 제거하고 작업 완료 후 애플리케이션 실행을 방지하여 무단 액세스 위험을 줄입니다.

호스팅 된 러너의 스토리지 디스크는 휴식시 암호화되어 코드가 디스크에서 보호되도록합니다. 모든 커뮤니케이션은 GitHub로 암호화되며 Microsoft Azure 로의 배포는 Azure 백본을 통해 라우팅하여 공개 인터넷을 통한 트랜스를 최소화합니다. 운영 체제와 러너 소프트웨어 모두에 정기적 인 보안 업데이트를 제공합니다. 최소화 된 공격 표면과 보안 위반 위험 감소는 국방부 DevSecops Reference Design의 권장 사항에 대한 Github 호스트 러너를 선호하는 작업량 5 개에 영향 레벨 5에 이르기까지 핵심 요소입니다.

자조 주자 네트워크, 인프라, 이미지, 컨테이너 및 캐시 관리가 필요한 보안 책임을 전적으로 전환하십시오. GitHub Enterprise Cloud에 연결된 러너는 현재 릴리스보다 30 일이 넘으면 연결할 수 없으므로 모든 것을 최신 상태로 유지해야합니다.

말할 것도없이, 기업 자원 및 생산 환경에 액세스하여 네트워크 환경 내에서 러너를 운영하는 경우 시간 제한 리소스 액세스를 통해 제로 트러스트의 방어 전략을 구현하여 높은 수준의 네트워크 보안 전문 지식을 요구할 것입니다.

마지막으로 도구 캐시와 작업 아카이브 캐시를 모두 구현하고 계속 업데이트해야합니다. 그렇지 않으면, 당신은 당신이 확장 할 때 우리의 요금 제한을 접할 것입니다.

문제 해결

생산성을 유지한다는 것은 워크 플로 또는 작업 (자원, 네트워크 문제, 정전)의 문제가 빠르게 해결되어야한다는 것을 의미합니다. 결과적으로 지원 전략을 갖추는 것이 중요합니다.

Github 호스트 러너 전용 신뢰성 엔지니어와 중요한 문제에 대한 빠른 30 분 응답 시간을 제공하는 프리미엄 계획과 함께 모든 시간대에 걸쳐 24/7 지원을 제공합니다. 이를 통해 인프라 문제 해결이 필요하지 않습니다. Github는 성능 문제에서 대기열 시간에 이르기까지 모든 러너 환경 문제를 처리하여 소매를 롤업하고 문제를 알아 내고 고정시킬 때 개발에 집중할 수 있습니다.

자조 주자그러나 1 단계 지원 책임을 전환하는 것은 누군가가 발생할 때 성능, 네트워크 또는 대기열 문제를 해결해야한다는 것을 의미합니다. 재미있는 코딩 작업에 대한 시간이 줄어 듭니다. 🙁

뿐만 아니라 Github은 행동 서비스 자체 만 지원할 수 있습니다. 우리는 귀하의 인프라, Kubernetes 클러스터 또는 사용자 정의 오케스트레이션 솔루션을 지원할 수 없습니다. 따라서 문제가 귀하의 시스템에 있다는 것을 알아 내면 스스로 해결해야합니다. 충분한 계획 없이는 코드 작성 및 배포로 돌아갈 수있는 솔루션을 기다리는 데 많은 시간을 할애 할 수 있습니다. 그것은 자조 주자에게 지불하는 데 큰 가격이 될 수 있습니다.

비용 관리

마지막으로 비용 문제가 있습니다. Kubernetes 또는 Infrastructure Management Solutions를 제공하는 경우 자체 주최 러너에게는 몇 가지 장점이있을 수 있습니다. 그렇지 않다면, Github 호스팅 러너도 여기에서 답이 될 것입니다.

Github 호스트 러너 선불 비용이나 약속없이 지불금이있는 모델에서 운영하십시오. 팀은 워크 플로 개선 및 적절한 러너 선택을 통해 비용을 최적화합니다. 또한 비용 절감이 내장되어 있습니다. 예를 들어, Github는 네트워크 출원 요금을 청구하지 않습니다. 클라우드 플랫폼에서 대형 컨테이너 이미지로 작업 할 때 중요한 이점입니다. Github는 Docker와의 파트너십을 통해 Github-Hosted Runners의 Docker Hub에서 무제한 이미지를 끌어 당길 수 있으므로 CI/CD 프로세스에 대한 통과 레지스트리 또는 구매 비즈니스 라이센스를 만들 필요가 없습니다. 환경을 유지, 지원 및 확보하는 것은 추가 직원 및 서비스 비용을 피하며 Github에 의해 처리됩니다. 마지막으로, 기업 계정은 표준 러너의 월 50,000 분의 혜택을받습니다.

자조 주자다른 영역에서와 같이, 조직은 모든 ​​인프라, 네트워크, 스토리지, 보안 및 지원 비용에 대한 책임을 가정합니다. 이를 통해 환경을 정의하고 자원을 올바르게 크기를 조정하며 네트워킹 사용자 정의하는 데 많은 유연성이 있습니다. 1 분당 가상 기계 비용이 처음에는 더 낮아 보일 수 있지만, 이러한 추가 지원 비용을 설명 할 때 총 소유 비용이 GitHub 호스팅 솔루션을 초과 할 수 있습니다.

당신에게 가장 적합한 러너는 무엇입니까?

올바른 러너를 선택하는 것은 특정 요구에 따라 다릅니다. 핵심 비즈니스에 인프라 또는 Kubernetes를 관리하는 경우 또는 Github Enterprise Cloud가 데이터 거주자로 충족하지 않는 경우 자체 호스트 러너 (호스팅 러너 부족)를 사용할 때 자체 호스트 러너가 가장 적합합니다. 스케일링 및 임시성 문제로 인해 자조 주최는 Windows 및 MacOS 워크로드에 덜 이상적입니다. 자체 호스팅이 필요한 경우 하이브리드 접근 방식을 고려하고 필요한 특정 워크로드에만 자체 호스팅 된 러너를 사용하십시오.

대부분의 개발자와 대부분의 시나리오의 경우, 매우 고유 한 요구 사항이 있거나 CI/CD 시스템을 허밍하기 위해 인프라에 심층적으로 투자하지 않는 한 Github 호스트 러너가 최선의 선택 일 수 있습니다. 그들은 특히 Github 액션에 새로운 사람들에게 도움이되며 비즈니스 가치, 새로운 아이디어 및 코드 작성에 집중하는 데 시간을 보내면서 주자를 관리하기위한 것입니다.

작성자가 작성했습니다

켄 무스

Ken은 Github의 Fasttrack 팀의 직원 Devops Architect입니다. 그는 4 회 Microsoft Azure MVP이자 Microsoft 인증 트레이너이며 ALM | Devops Ranger와 Microsoft Azure Advisors의 회원. Ken은 빈번한 커뮤니티 스피커이며 Github Universe, vSlive!, Devops World, Sqlsaturday, All Day Devops, Global Azure 및 Tag DevOps 패널에 출연했습니다. 말하거나 코딩하지 않을 때 Ken은 여러 악기를 연주하고 작곡하는 것을 즐깁니다.

출처 참조

Post Comment