GitLab Duo 도입 메트릭 및 분석
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 프로젝트는 다음을 결합하여 엔드투엔드 GitLab Duo 사용 분석을 제공합니다: 다음 프로젝트 CI/CD 변수를 설정하여 실행할 분석 파이프라인을 제어할 수 있습니다: Duo 메트릭이 활성화되면 Duo 파이프라인이 완료된 후 Pages 배포가 자동으로 수행됩니다:
GitLab Duo 도입 메트릭 및 분석#
이 프로젝트는 다음을 결합하여 엔드투엔드 GitLab Duo 사용 분석을 제공합니다:
- Duo GraphQL 데이터 수집 – GitLab GraphQL API 클라이언트를 기반으로 하는 Duo 수집기 스크립트를 호출하는 범용 Python 오케스트레이터.
- Duo 사용 메트릭 파이프라인 – GitLab 그룹의 Duo 사용 데이터를 주기적으로 수집하고 집계하는 CI 작업.
- Duo Analytics 대시보드 – Duo 도입, 사용 강도, 참여 트렌드를 보여주는 GitLab Pages 호스팅 대시보드.
시작하기#
다음 프로젝트 CI/CD 변수를 설정하여 실행할 분석 파이프라인을 제어할 수 있습니다:
| 변수 | Duo 설정 | 설명 |
|---|---|---|
ENABLE_DUO_METRICS |
"true" |
Duo AI 메트릭 파이프라인 활성화/비활성화. |
ENABLE_PROJECT_METRICS |
"false" |
Duo 도입에만 관심이 있는 경우 기존 프로젝트 중심 메트릭 비활성화. |
DUO_TOKEN |
TOKEN VALUE |
Duo 사용 수집을 위한 read_api 및 ai_features 권한이 있는 개인 액세스 토큰. |
GROUP_PATH |
example_group |
Duo 메트릭을 수집할 최상위 그룹 또는 하위 그룹 경로. |
빠른 시작 단계
- 이 저장소를 포크합니다.
- 프로젝트 설정 → CI/CD → 변수로 이동합니다.
- 환경에 적합한 값으로 위의 변수를 추가합니다.
- 원하는 간격으로 예약된 파이프라인을 구성합니다. Duo 사용 수집은 리소스를 많이 사용할 수 있으므로 하루에 한 번 실행을 권장합니다.
- 예약된 파이프라인을 수동으로 실행하거나 예약을 기다립니다.
- 파이프라인이 완료된 후 배포 → Pages에서 Pages 애플리케이션을 열어 Duo Analytics 대시보드에 액세스합니다.
GitLab Pages 배포 (Duo 메트릭)#
Duo 메트릭이 활성화되면 Duo 파이프라인이 완료된 후 Pages 배포가 자동으로 수행됩니다:
- Duo 메트릭 파이프라인 →
https://your-username.gitlab.io/project-name/duo-metrics/와 같은 URL에 배포됩니다. - 메인 랜딩 페이지 →
https://your-username.gitlab.io/project-name/에서 사용 가능하며, 사용 가능한 대시보드 링크가 있습니다.
랜딩 페이지는 어떤 대시보드가 있는지 자동으로 감지하고 ENABLE_DUO_METRICS="true"인 경우 Duo 관련 링크를 표시합니다.
로컬 개발 및 테스트#
CI 없이 Duo 분석을 로컬에서 테스트하려면:
- Python과 의존성이 설치되어 있는지 확인합니다(예: 저장소 루트에서
poetry install사용). - 로컬
.env또는 쉘 세션에서 필요한 환경 변수를 설정합니다:DUO_TOKENGROUP_PATH
- 원시 Duo 사용 데이터를 수집하기 위해 범용 오케스트레이터 스크립트를 실행합니다:
python ai_raw_data_collection.py
- 설정에 따라 로컬
public/또는docs/폴더에서 생성된 메트릭을 열거나, 솔루션 구성 요소 프로젝트 문서에 설명된 대로 대시보드를 로컬에서 실행합니다.
Duo 대시보드 기능#
Duo Analytics 대시보드는 GitLab Duo 도입 및 AI 사용 패턴에 집중하며, 다음을 포함합니다:
- 라이선스 및 도입 분석 – Duo 액세스 권한이 있는 사용자 수와 실제로 사용하는 사용자 수를 추적합니다.
- 코드 제안 분석 – AI 지원 코딩의 수락률, 제안 볼륨, 언어 분포를 모니터링합니다.
- Duo Chat 분석 – 채팅 상호작용, 사용자 코호트, 대화 볼륨을 봅니다.
- 사용자 참여 분석 – 사용 수준(비활성, 실험 중, 정기, 고빈도)별로 사용자를 세분화합니다.
- 언어 및 워크플로우 성능 – 프로그래밍 언어 또는 워크플로우별로 Duo 효과성(예: 수락률, 제안 사용)을 분석합니다.
이러한 메트릭은 전적으로 Duo 관련 신호에서 파생됩니다. 이 대시보드를 사용하는 데 기존 프로젝트 메트릭은 필요하지 않습니다.
Duo 사용 데이터 수집 파이프라인#
Duo 도입 메트릭은 다음에 의존하는 CI 기반 데이터 수집 파이프라인으로 생성됩니다:
- 범용 Python 오케스트레이터:
ai_raw_data_collection.py - 재사용 가능한 GitLab GraphQL API 클라이언트:
gitlab_graphql_api
오케스트레이터: ai_raw_data_collection.py#
ai_raw_data_collection.py 스크립트는 다음을 담당합니다:
- 환경/CI 변수(예:
GROUP_PATH,DUO_TOKEN및 파이프라인 구성) 읽기. - 구체적인 Duo 사용 쿼리를 구현하는 하나 이상의 수집기 스크립트 호출.
- 다음 항목 조정:
- 그룹 및 프로젝트에 걸친 페이지네이션.
- Duo 사용 이벤트의 날짜/시간 창 또는 샘플링 전략.
- 결과를 일관되고 분석 친화적인 형식(예: CSV/JSON)으로 정규화.
- Duo 대시보드 및 다운스트림 집계 단계가 사용하는 위치에 수집된 데이터 쓰기.
이것은 원시 Duo 사용 데이터를 수집하기 위한 범용 진입점 역할을 하므로 다음이 가능합니다:
- CI 구성을 변경하지 않고 새로운 Duo 관련 수집기를 추가할 수 있습니다.
- 환경 변수 또는 CI 작업을 통해 어떤 수집기를 실행할지 제어할 수 있습니다.
GitLab GraphQL API 클라이언트 및 컬렉션#
모든 Duo 관련 GraphQL 로직은 특히 다음 아래의 gitlab_graphql_api Python 패키지에 캡슐화되어 있습니다:
gitlab_graphql_api > collections
주요 개념:
- GraphQL 클라이언트 추상화 – 중앙 클라이언트가 GitLab GraphQL 엔드포인트에 대한 인증, 페이지네이션, 오류 처리를 담당합니다.
- 컬렉션 클래스 –
collections모듈은 구조화된 데이터를 검색하는 방법을 노출하는 상위 수준 추상화(예: "프로젝트 컬렉션" 또는 "사용자 컬렉션")를 제공합니다. Duo 수집기는 이를 사용하여:- 지정된
GROUP_PATH의 그룹 및 프로젝트를 가져옵니다. - Duo 사용 필드 및 AI 관련 활동을 쿼리합니다.
- 지정된
- 버전별 API 사용 – 오케스트레이터를 변경하지 않고 GitLab이 Duo 관련 GraphQL 필드를 개선하거나 확장함에 따라 동일한 컬렉션 API를 확장할 수 있습니다.
Duo 수집기는 이러한 컬렉션 클래스를 가져오고 필요한 특정 쿼리를 정의합니다(예: AI 코드 제안 수, 채팅 사용 이벤트 또는 사용자 수준 도입 통계 가져오기).
참고: Duo 사용을 위한 GraphQL 스키마 및 필드 이름은
gitlab_graphql_api > collections의 컬렉션 클래스와 함께 문서화되어 있습니다. Duo 메트릭에 대해 수집된 데이터를 확장하거나 사용자 정의할 때 해당 문서를 사용하십시오.
Duo 데이터 수집 구성#
파이프라인을 사용자 정의할 수 있지만, 일반적인 Duo 전용 설정에는 다음이 필요합니다:
- 최소 CI 구성:
ENABLE_DUO_METRICS="true"를 설정하여 Duo 파이프라인을 활성화합니다.ENABLE_PROJECT_METRICS="false"를 설정하여 비Duo 파이프라인을 선택적으로 비활성화합니다.
ai_raw_data_collection.py에서 사용하는 환경 변수:
| 변수 | 설명 | 예시 |
|---|---|---|
DUO_TOKEN |
read_api + ai_features 권한이 있는 토큰으로, Duo GraphQL 쿼리에 사용됩니다. |
glpat-xxxx |
GROUP_PATH |
Duo 사용을 측정할 그룹 또는 하위 그룹. | "gitlab-org/your-group" |
DUO_METRICS_OUTPUT_DIR |
원시 Duo 사용 데이터의 선택적 출력 디렉토리. | "duo-metrics/raw" |
이 설정이 완료되면 ai_raw_data_collection.py를 실행하는 CI 작업이 다음을 수행합니다:
gitlab_graphql_api컬렉션을 사용하여 지정된 그룹의 Duo 사용 데이터를 쿼리합니다.- 다음에 사용할 수 있는 원시 Duo 사용 아티팩트를 씁니다:
- 보고서로 집계.
- Duo 대시보드에서 직접 로드.
Duo 메트릭 확장#
Duo 도입 메트릭을 추가하거나 개선하려면:
- 새 Duo 신호와 관련된 GitLab GraphQL 필드를 식별합니다(예: 추가 사용 카운터 또는 새 AI 기능).
- 다음을 수행하는 수집기 스크립트를 업데이트하거나 추가합니다:
gitlab_graphql_api > collections추상화를 사용합니다.- 기존 Duo 수집기와 일관된 형식으로 데이터를 씁니다.
- 수집기를
ai_raw_data_collection.py에 연결합니다(또는 환경 변수를 통해 제어합니다). - 필요한 경우 새 필드를 사용하고 시각화하도록 대시보드를 업데이트합니다.
GraphQL 액세스 및 페이지네이션 로직이 gitlab_graphql_api 내에 캡슐화되어 있으므로 Duo 메트릭 확장은 일반적으로 다음을 의미합니다:
- 오케스트레이터의 최소한의 변경.
- 새 메트릭 모델링 및 대시보드 업데이트에 집중.
리소스#
- GitLab Duo 도입 메트릭 솔루션 구성 요소 프로젝트
- Duo GraphQL 사용 패턴을 위한
gitlab_graphql_api패키지 및collections모듈
