RSS GitLab
팔로우
WebSockets로 GitLab CI 상태를 획기적으로 개선한 방법
GitLab은 CI 작업 상태 업데이트를 위한 API 호출을 일일 4,500만 건에서 340만 건으로 92.56% 대폭 줄였습니다. 이전에는 작업 헤더 구성 요소가 폴링 방식을 사용하여 데이터 변경 여부와 관계없이 30초마다 네트워크 요청을 보냈습니다. 이로 인해 사용자 지연과 데이터베이스 부하가 발생했습니다. 팀은 이벤트 기반 접근 방식인 WebSockets를 통한 GraphQL 구독으로 전환했습니다. 이 변경으로 작업 상태가 변경될 때 즉시 업데이트가 가능해져 불필요한 네트워크 트래픽을 제거했습니다. 15분당 네트워크 호출 수는 547,145건에서 39,670건으로 감소했습니다. 이제 사용자는 실시간 상태 가시성을 경험할 수 있습니다. 이 최적화는 CPU 사용률이나 작업 속도 증가로 이어지지 않았습니다. GitLab은 제품 전체에서 모든 폴링 메커니즘을 GraphQL 구독으로 교체할 계획입니다. 목표는 CI/CD 워크플로우 전반에 걸쳐 즉각적인 피드백을 제공하는 것입니다.