InfoGrab DocsInfoGrab Docs

GitLab Workhorse

GitLab Workhorse의 역할, 기능, 아키텍처, 설치 방법 및 테스트 방법을 설명합니다.

GitLab Workhorse는 리소스 집약적이고 오래 실행되는 요청을 처리하기 위해 설계된 GitLab용 스마트 리버스 프록시입니다. Workhorse는 Puma 앞에 위치하며 GitLab Rails로 향하거나 Rails에서 나오는 모든 HTTP 요청을 가로챕니다. Rails는 요청을 Workhorse에 위임하고, Workhorse는 파일 다운로드 및 업로드, HTTP를 통한 git 푸시/풀, HTTP를 통한 git 아카이브 다운로드 등 리소스 집약적인 HTTP 요청을 처리하는 책임을 담당합니다. 이를 통해 리소스 활용을 최적화하고 요청 처리 효율성을 향상시킵니다. GitLab 스택에서의 역할 # Workhorse 앞에 다른 리버스 프록시 서버를 둘 수 있지만 NGINX만 지원됩니다. 소스에서 GitLab을 설치할 때 Apache와 같은 다른 리버스 프록시를 사용하는 것도 가능하지만 지원되지는 않습니다. gitlab.com 과 같은 많은 GitLab 인스턴스에서는 CloudFlare 같은 CDN이 NGINX 앞에 위치합니다. HTTP 요청을 처리하고 HTTP 응답을 반환하는 모든 Rails 컨트롤러 및 기타 코드는 GitLab Workhorse를 통해 프록시됩니다. Workhorse는 대부분의 리버스 프록시와 달리 GitLab Rails와 긴밀하게 결합되어 있으며, 다른 대부분의 리버스 프록시는 보다 범용적입니다. 필요한 경우 Workhorse는 GitLab Rails가 작업을 효율적으로 오프로드하기 위해 의존하는 HTTP 헤더를 수정합니다. 기능 및 동작 # 요청 처리 # Workhorse는 주로 수신 요청에 대한 패스스루 역할을 하며, 처리를 위해 요청을 Rails로 전달합니다. 본질적으로 대부분의 요청에 최소한의 개입만 수행하여 간결한 요청 처리 파이프라인을 유지합니다. 특정 유형의 요청, 특히 리소스 집약적이거나 특수한 처리가 필요한 요청(예: 대용량 파일 업로드)의 경우 Workhorse는 더 적극적인 역할을 합니다. Rails의 지시를 받으면 Workhorse는 Gitaly 와 직접 상호작용하거나 Rails에서 파일 업로드 처리를 오프로드하는 등의 특수 작업을 실행합니다. Gitaly와 관련된 Workhorse의 새로운 기능을 개발할 때는 Gitaly 버전 호환성 요구사항 에 관한 가이드라인을 따라야 합니다. 특수 작업 처리 # Workhorse는 Rails의 응답을 기반으로 특정 요청을 가로채고 사전 정의된 작업을 실행할 수 있습니다. 여기에는 Gitaly 와의 상호작용, 대용량 데이터 블롭 관리, 필요에 따른 요청 처리 로직 변경이 포함됩니다. Workhorse는 파일 업로드를 효율적으로 관리할 수 있습니다. 파일 업로드 프로세스를 가로채고, Rails가 지시하는 대로 필요한 작업(파일을 임시 저장하거나 오브젝트 스토리지에 업로드하는 등)을 수행한 후, 프로세스가 완료되면 Rails에 알립니다. Rails API와의 통합 # Workhorse는 Rails API에 대한 프록시 역할을 하며, 특히 컨테이너 레지스트리 서비스