제안된 리뷰어 데이터 사용

Tier: Ultimate Offering: GitLab.com

작동 방식

제안된 리뷰어는 사용자를 대상으로 한 GitLab 기계 학습 (ML)을 활용한 첫 번째 기능입니다. 이 기능은 프로젝트의 기여 그래프를 활용하여 제안을 생성합니다. 이 데이터는 이미 GitLab 내에 존재하며, 병합 요청 메타데이터, 소스 코드 파일, GitLab 사용자 계정 메타데이터 등을 활용합니다.

기능 활성화

프로젝트 유지자 또는 소유자가 프로젝트 설정에서 제안된 리뷰어를 활성화하면, GitLab은 프로젝트에 대한 데이터 추출 작업을 시작합니다. 이 작업은 병합 요청 API를 활용하여 검토 패턴을 이해하고 최신성, 도메인 경험, 빈도 등을 고려하여 적절한 리뷰어를 제안합니다. 프로젝트가 병합 요청 승인 프로세스를 사용하지 않거나 과거의 병합 요청 데이터가 없는 경우, 제안된 리뷰어는 리뷰어를 제안할 수 없습니다.

이 데이터 추출 작업은 수 시간에서 하루 정도 소요될 수 있으며, 이는 프로젝트의 크기에 크게 의존합니다. 이 프로세스는 자동화되어 있으며 작업 중에 사용자의 조치가 필요하지 않습니다. 데이터 추출이 완료되면, 병합 요청에서 제안을 받을 수 있게 됩니다.

제안 생성

제안된 리뷰어가 활성화되고 데이터 추출이 완료되면, 새로운 병합 요청이나 기존 병합 요청에 대한 새로운 커밋은 자동으로 제안된 리뷰어 ML 모델을 추론하고 최대 5명의 제안된 리뷰어를 생성합니다. 이러한 제안은 병합 요청의 변경 사항에 맞게 맥락을 고려하여 제공됩니다. 병합 요청에 대한 추가 커밋은 리뷰어 제안을 변경할 수 있으며, 이는 리뷰어 드롭다운 목록에서 자동으로 업데이트됩니다.

점진적 개선

이 기능은 기존의 GitLab 리뷰어 기능에 대한 점진적 개선으로 설계되었습니다. GitLab 리뷰어 UI는 ML 엔진이 추천을 제공할 수 있는 경우에만 제안을 제공합니다. 문제가 발생하거나 모델 추론이 실패하는 경우, 해당 기능은 단계적으로 하향되어 처리됩니다. 제안된 리뷰어의 사용은 언제나 사용자가 리뷰어를 수동으로 설정하는 데 방해가 되지 않습니다.

모델 정확도

조직은 코드 리뷰를 위해 많은 다양한 프로세스를 사용합니다. 일부 조직은 주니어 엔지니어의 코드를 시니어 엔지니어가 검토하는 데 중점을 두고 있으며, 다른 조직은 계층 구조 기반의 리뷰를 수행합니다. 제안된 리뷰어는 사용자가 과거의 병합 요청 활동에 기반한 맥락을 고려하여 리뷰어를 제안합니다. 우리는 다양한 코드 리뷰 사용 사례와 프로세스에 더 나은 서비스를 제공하기 위해 기존의 ML 모델을 계속 발전시키고 있지만, 제안된 리뷰어는 Code Owners나 승인 규칙과 같은 기타 코드 리뷰 기능의 사용을 대체하지는 않습니다. 리뷰어 선택은 매우 주관적이기 때문에, 우리는 제안된 리뷰어가 항상 완벽한 제안을 제공할 것이라고 기대하지는 않습니다.

베타 고객의 사용 분석 결과, 제안된 리뷰어 ML 모델이 제안을 채택한 경우가 60%에 달합니다. 우리는 미래에 제안된 리뷰어 기능에 피드백 메커니즘을 도입하여 사용자가 나쁜 리뷰어 제안을 신고하여 모델을 개선하는 데 도와줄 수 있도록 할 계획입니다. 또한 우리는 미래에 프로젝트 데이터를 모델의 교육에 사용할 수 있는 참여형 기능을 제공할 계획입니다.

기본적으로 비활성화

제안된 리뷰어는 기본적으로 비활성화되어 있으며, 프로젝트 소유자나 관리자가 해당 기능을 활성화해야 합니다.

데이터 개인 정보 보호

제안된 리뷰어는 GitLab.com 인프라 내에서 완전히 운영되며, GitLab.com의 다른 기능과 동일한 수준의 개인 정보 보호보안을 제공합니다.

본 기능을 활성화하기 위해 추가 데이터를 수집하지 않습니다. GitLab은 훈련된 기계 학습 모델에 대한 병합 요청을 추론합니다. 소스 코드 내용은 훈련 데이터로 사용되지 않습니다. 데이터는 GitLab.com을 벗어나지 않으며, 모든 훈련 및 추론은 GitLab.com 인프라 내에서 이루어집니다.

GitLab.com의 보안에 대해 자세히 알아보기