GitLab Duo 도입 지표 및 분석
GitLab v19.5Offering: 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 job 입니다.
- 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 지표를 수집할 최상위 그룹 또는 하위 그룹 경로입니다. |
빠른 시작 단계
- 이 리포지터리를 포크합니다.
- Project Settings → CI/CD → Variables로 이동합니다.
- 환경에 맞는 값으로 위 변수를 추가합니다.
- 원하는 주기로 예약된 파이프라인을 구성합니다. Duo 사용량 수집은 부하가 클 수 있으므로 하루에 한 번 실행하는 것을 권장합니다.
- 예약된 파이프라인을 수동으로 실행하거나 예약된 시간까지 기다립니다.
- 파이프라인이 완료되면 Deploy → Pages에서 Pages 애플리케이션을 열어 Duo Analytics 대시보드에 접근합니다.
GitLab Pages 배포 (Duo 지표)#
Duo 지표가 활성화되면 Duo 파이프라인이 완료된 후 Pages 배포가 자동으로 이루어집니다:
- Duo Metrics Pipeline →
https://your-username.gitlab.io/project-name/duo-metrics/와 같은 URL로 배포됩니다. - Main Landing Page →
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 사용 패턴에 초점을 맞추며, 다음을 포함합니다:
- License & Adoption Analytics - 몇 명의 사용자가 Duo에 접근할 수 있고, 몇 명이 실제로 사용하고 있는지 추적합니다.
- Code Suggestions Analytics - AI 지원 코딩의 수락률, 제안 건수, 언어별 분포를 모니터링합니다.
- Duo Chat Analytics - 채팅 상호작용, 사용자 코호트, 대화 건수를 확인합니다.
- User Engagement Analytics - 사용 수준(비활성, 시험 사용, 정기 사용, 다량 사용)별로 사용자를 세분화합니다.
- Language & Workflow Performance - 프로그래밍 언어 또는 워크플로별로 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 job을 통해 실행할 수집기 제어.
GitLab GraphQL API 클라이언트 및 컬렉션#
모든 Duo 관련 GraphQL 로직은 gitlab_graphql_api Python 패키지, 특히 다음 아래에 캡슐화되어 있습니다:
gitlab_graphql_api > collections
핵심 개념:
- GraphQL client abstraction - 중앙 클라이언트가 GitLab GraphQL 엔드포인트에 대한 인증, 페이지네이션, 오류 처리를 담당합니다.
- Collection classes -
collections모듈은 구조화된 데이터를 가져오는 메서드를 제공하는 상위 수준 추상화("프로젝트 컬렉션"이나 "사용자 컬렉션" 등)를 제공합니다. Duo 수집기는 이를 사용하여 다음을 수행합니다:- 주어진
GROUP_PATH에 대한 그룹과 프로젝트 가져오기. - Duo 사용량 필드와 AI 관련 활동 쿼리.
- 주어진
- Versioned API usage - GitLab 이 Duo 관련 GraphQL 필드를 개선하거나 확장하더라도 오케스트레이터를 변경하지 않고 동일한 컬렉션 API를 확장할 수 있습니다.
Duo 수집기는 이러한 컬렉션 클래스를 가져와 필요한 특정 쿼리(예: AI 코드 제안 건수, 채팅 사용 이벤트, 사용자 수준 도입 통계 가져오기)를 정의합니다.
Note: 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 |
Duo GraphQL 쿼리에 사용되는, read_api + ai_features 권한을 가진 토큰입니다. |
glpat-xxxx |
GROUP_PATH |
Duo 사용량을 측정할 그룹 또는 하위 그룹입니다. | "gitlab-org/your-group" |
DUO_METRICS_OUTPUT_DIR |
원시 Duo 사용량 데이터를 저장할 선택적 출력 디렉터리입니다. | "duo-metrics/raw" |
이 값들을 설정하면 ai_raw_data_collection.py를 실행하는 CI job은 다음을 수행합니다:
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 도입 지표 솔루션 구성요소 프로젝트
gitlab_graphql_api패키지와collections모듈(Duo GraphQL 사용 패턴용)