This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed @pedropombeiro @vshushlin @grzesiek 2023-01-25

CI 인사이트

요약

Fleet Metrics의 일환으로, CI 인사이트 섹션을 따로 마련하여 사용자가 파이프라인을 모니터링하고 파이프라인 속도, 공통 작업 실패 등에 대한 결과를 요약하여 도와주는 것을 원합니다. 최종적으로는 사용자가 CI/CD의 문제를 최적화하고 해결할 수 있는 활동을 제공할 것입니다.

동기

CI/CD Analytics 페이지에는 파이프라인에 관한 매우 기본적인 분석 정보가 포함되어 있습니다. 이 정보 대부분은 시간이 지남에 따른 파이프라인 수와 관련이 있으며, 고객에게 실제 가치를 제공하지 않습니다. 프로젝트는 시간이 지남에 따라 파이프라인 수가 항상 증가하기 때문에 총 파이프라인 수는 별다른 중요성이 없습니다.

Current page

이 페이지는 실질적인 인사이트가 부족하여 파이프라인의 속도 저하 또는 실패를 이해하기 어렵게 만들고 매우 매뉴얼적인 작업이 되고 있습니다. 사용자들이 API를 쿼리하고 데이터를 매뉴얼으로 구문 분석하거나, 수십 페이지를 탐색하여 필요한 인사이트나 실행해야 할 작업을 찾아야 하는 수고를 덜기 위해 중앙 집중적인 곳에서 작업 흐름을 최적화할 수 있도록 돕고자 합니다.

프로젝트 파이프라인과 관련된 대량의 데이터를 처리할 예정이며, 이에 대한 결과를 요약하여 작업 실패, 파이프라인 지연 및 불안정한 사항에 대한 인사이트를 제공할 수 있는 AI 도구가 있다면 이를 고려합니다. AI가 제품 로드맵의 중요한 부분이 되었고, Verify에는 해당 영역에서 유망한 선도가 없기 때문에 본 페이지는 이러한 새로운 부분의 중심이 될 수 있습니다.

  • 새로운 파이프라인 분석 대시보드 페이지 제공
  • 정보를 신속하게 이해할 수 있는 우수한 데이터 시각화
  • 사용자가 원하는 정보를 얻을 수 있는 유연한 쿼리

  • 페이지에 제시된 정보를 기반으로 한 명확한 실행 가능 작업
  • 랜딩 페이지에서 파이프라인 기간과 가장 느린 작업과 같은 기본 정보 표시
  • CI/CD Analytics를 더 쉽게 액세스하고, 인기있고 기억에 남는 페이지로 만들기(AKA, 페이지 뷰 증가)

비목표

저희의 목표는 GitLab 프로젝트의 파이프라인 속도를 향상시키는 것은 아닙니다. 이 기능은 이를 달성하는 데 도움이 될 수 있지만, 이 설계의 직접적인 목표는 아닙니다.

또한 초기 버전에서 AI를 적용하는 것이 목표가 아니며, 가능한 많은 정보를 사용자에게 제공하고 소화할 수 있도록 중점을 두어야 합니다.

제안

CI/CD Analytics 페이지를 개선하여 사용자가 파이프라인 문제를 손쉽게 해결할 수 있는 의미있는 데이터가 포함된 새로운 모습으로 바꿀 것입니다. 여기에는 주요 개선 사항 디렉터리이 있습니다:

전반적인 통계

현재의 “전반적인 통계”는 시각적 공간을 많이 차지하지 않으면서 이 정보를 유지하되, 중요하지 않게 하는 한 줄 헤더로 변할 것입니다. 파이프라인 차트에 대해, 각 막대의 스택이 상태를 나타내고 각 막대가 단위(일일 경우 일, 월별인 경우 개월, 연간인 경우 연도)이므로 사용자가 해당 특정 시간 단위에서 몇 개의 파이프라인이 실행되었으며 이러한 파이프라인의 어느 정도가 실패하거나 성공했는지 추적할 수 있도록 스택된 막대 도표로 대체할 것입니다.

파이프라인 기간 그래프

새로운 파이프라인 기간 그래프는 유형(특정 브랜치의 MR 파이프라인, 특정 브랜치의 파이프라인 등), 실행 횟수 및 상태(성공, 실패 등)를 사용자 정의할 수 있으며, 현재의 마지막 30개 커밋의 파이프라인 기간 차트를 대체할 것입니다. 기존의 차트는 리포지터리에서 최근 30개 커밋을 확인하고 있어서 결과가 그다지 중요하지 않습니다.

또한 마스터 브랜치에서 여러 번 실패한 작업과 최근 x개의 파이프라인에서 가장 느린 작업을 추가합니다. 모든 이는 사용자가 파이프라인 데이터를 쿼리하여 개선해야 할 사항이나 CI/CD 구성에서 마주치는 문제의 종류를 파악하는 데 도움을 주기 위한 노력을 지원하는 것입니다.

가시성

이 기능을 더 널리 알리기 위해 파이프라인 페이지에 링크를 추가합니다. 파이프라인 실행 기본 버튼과 함께 새 옵션을 추가할 수 있습니다.

마스터 브랜치 손상 여부

마스터 브랜치의 마지막 x개의 파이프라인을 검사하여 실패한 작업을 확인하는 “마스터가 손상되었습니까?” 빠른 옵션을 추가합니다. 여러 번 실패한 모든 작업은 테이블에 나열되며, 해당 디렉터리에서 이슈를 생성할 수 있는 옵션이 제공됩니다.

컬러 스킴

파이프라인 상태에 대한 데이터 시각화를 위한 현재의 컬러 스킴을 재고하여 새로운 컬러 스킴과 더 나은 시각화를 통해 사용자가 데이터를 더 잘 이해할 수 있도록 돕는 기회가 있습니다. 기본적인 시각화색상을 사용 중이지만, 이는 실제로 사용자가 파이프라인/작업 상태에 익숙해진 색상과 일치하지 않습니다.

라우팅

데이터 시각화에 대해 제한적인 용어인 차트에서 데이터 시각화에 대한 언급이 없는 pipelines/analytics로 라우팅을 변경합니다. 그러면 탭에 대한 쿼리 매개변수를 제거하고 대신 first-class 라우팅을 지원하며 설정하기 위한 몇 가지 리디렉션을 설정할 수 있습니다.

디자인 및 구현 세부 정보

집계 데이터를 위한 새 API

이 기능은 저희가 사용할 수 있는 파이프라인 및 작업 인사이트의 새로운 데이터 세트를 가져야 합니다.

일단 gitlab.com에서 ClickHouse에서 데이터 집계를 시작할 것입니다. 우리는 ClickHouse에서 백엔드에서 데이터를 즉석으로 집계할 것입니다. 현재까지 ClickHouse는 그런 일들을 하기에 아주 적합했습니다.

우리는 집계된 데이터를 어디에도 저장하지 않을 것입니다(ClickHouse에서 재료화된 뷰는 있겠지만, 그 이상의 복잡한 것은 없을 것입니다). 그런 후에, 이 기능이 주목을 받으면 ClickHouse 없는 환경에 이러한 기능을 가져오는 방법을 탐색할 수 있습니다.

이 방법으로 우리는 빠르게 이동하고 실제 사용자들로 아이디어를 실험하고 피드백을 받을 수 있습니다.

피처 플래그

이 새로운 분석 페이지를 개발하기 위해 ci_insights 피처 플래그 뒤에 숨김하여 이전 또는 새로운 분석 페이지를 조건부로 렌더링할 것입니다. 아마도 컨트롤러에 flag를 추가하여 렌더링할 경로를 결정할 예정입니다. ci_insight가 하나일 때는 새로운 /analytic, 없으면 기존의 /charts를 렌더링할 것입니다.

페이지 조회수에 대한 분석 추가

이 페이지의 조회 빈도를 파악할 수 있는 정보를 얻을 수 있도록 해야 합니다. 만약 이 정보가 없다면, 페이지의 가시성을 파악할 수 있도록 어떠한 정보도 추가할 것입니다. 이 섹션의 변경 사항은 페이지 조회수를 증가시키고 이를 성공의 척도로 추적하고자 합니다.

라우팅

마지막으로 페이지와 일부 리다이렉트를 위한 새로운 경로를 계획하고 있습니다. 라우팅 제안에 대해 자세히 알아보려면 관련 이슈를 확인하세요.

파이프라인 기간 그래프

사용자가 많은 다양한 기준으로 파이프라인에 대한 데이터를 쿼리할 수 있는 방법을 원합니다. 가장 중요한 사항으로는 finished만 해당하는 파이프라인에 대한 쿼리, 또는 상태 success 또는 failed와 같이 제한하는 것입니다. 또한 이것을 ref에 대해 제한할 수 있으므로 사용자는 메인 브랜치 또는 심지어 CI/CD 변경이 있는 브랜치를 테스트할 수 있습니다. 우리는 파이프라인 속도에 대한 브랜치 비교를 원합니다.

더 정확한 데이터를 얻기 위해 요청된 파이프라인의 개수를 늘리고자 합니다. GraphQL에서 항목은 100개로 제한되며 성능 저하가 빠르게 발생할 것입니다. 더 정확한 데이터 시각화를 위해 어떻게 더 많은 데이터 세트를 얻을 수 있는지 정의해야 합니다.

작업 인사이트

현재 여러 파이프라인에서 단일 작업을 쿼리하는 방법이 없으며, 이는 다음과 같이 보일 여유가 없는 쿼리를 수행하는 것을 막습니다:

query getJob($projectPath: ID!, $jobName: String!){
  project(fullPath:$projectPath){
    job(name: $jobName, last: 100){
      nodes{
        id
        duration
      }
    }
  }
}

작업 분석을 위한 통합 테이블을 생성하는 계획이 있으며 아직 API 정의가 확정되지 않았습니다. 아직 API 정의에 대한 확정이 없지만, 아마도 대강 다음과 같은 정보를 쿼리할 수 있는 통합된 방식이 생깁니다.

get_jobs(project_id:, job_name: nil, stage: nil, stage_index: nil, *etc)
# >
[{id: 1, duration: 134, status: 'failed'}, *etc]

get_jobs_statistics(project_id, job_name:, *etc)
# >
[{time_bucket: '2024-01-01:00:00:00', avg_duration: 234, count: 123, statuses_count: {success: 123, failed: 45, cancelled: 45}}]

차트 개선

차트의 새로운 색 구성표와 미적인 디자인을 탐색하세요. UX와 협력하여 이것이 우리가 고려한 사항인지 여부를 결정하고, 우리의 차트가 상당히 잊을만한 것이므로, 더 멋지고 현대적인 차트를 지지하는 모든 노력을 지원하세요.

대안 솔루션

새로운 페이지

우리는 새로운 페이지를 만들고, 이 섹션은 현재와 같은 상태로 남길 수 있습니다. 장점은 Build 아래의 내비게이션에서 더 중요한 위치를 가질 수 있을 것이지만, 단점은 해당 섹션과 중복되는 부분이 생길 것이라는 점입니다.

파이프라인별 파이프라인 분석

과거에는 파이프라인별 성능 통찰력을 추가하는 실험이 있었습니다. 이 실험은 제거되고 실효성이 없다고 판단되었습니다. 몇 가지 연구 결과는 다음과 같습니다:

  • 사용자들이 예상한 만큼 페이지와 상호 작용하지 않았으며, 통찰력을 보기 위해 버튼을 클릭하지 않았습니다.
  • 버튼을 클릭한 사용자들은 작업에 대한 더 많은 통찰력을 얻으려고 하지 않았습니다.
  • 사용자들은 문제에 대한 피드백을 남기지 않았습니다.

이 실험은 대부분 파이프라인 그래프 페이지 pipelines/:id를 방문하는 사용자들이 파이프라인의 성능을 향상시키려고 하지 않는다는 것을 보여줍니다. 대신, 이 페이지는 파이프라인 실패를 디버그하기 위해 사용되는 것으로, 이것은 개발자 페르소나에서 온 것이며, CI/CD 워크플로우를 향상시키려는 DevOps 엔지니어가 아닙니다. 이 섹션을 “넓은” 영역에 두면 훨씬 더 많은 채택과 유용한 실행 가능한 작업이 기대됩니다.

아무것도 하지 않기

우리는 이 섹션을 그대로 두고 어떠한 새로운 형태의 분석도 추가하지 않을 수 있습니다. 장점은 리소스와 시간이 절약될 것입니다. 단점은 현재 고객들이 CI/CD 구성 속도를 개선하는 방법이 문서를 읽는 것 말고는 없다는 것입니다. 이 새롭게 개선된 섹션은 또한 AI 기능을 위한 좋은 게이트웨이가 될 것이며, 사용자가 설정을 반복하는 데 도움이 될 것입니다.