오늘날 모든 회사는 소프트웨어 회사이므로 혁신 및 제공 수준이 수익 창출에 직접적인 영향을 미칩니다. 성공하기 위해 기업은 놀라운 디지털 경험을 제공하고, 최신 기술을 따라잡고, 고객이 요구하는 속도로 가치를 제공하고, 중단이나 보안 위반에 대해 무관용으로 모든 작업을 수행해야 합니다. 여기서 Value Stream Management(VSM)이 시작됩니다.

Value Stream Management(VSM) 이란?

제품 또는 서비스가 생성되는 초기부터 고객에게 전달되기까지 필요한 일련의 활동 및 프로세스를 의미합니다.
VSM을 통해 소프트웨어 제공 및 고객에 대한 가치 흐름을 측정 및 분석합니다. 아이디어 구상에서 고객 가치 실현까지의 개발 프로세스를 개략적으로 설명합니다. 이 일련의 과정에서 투자한 노력과 자원을 파악하고 낭비나 병목 현상이 발생되는 구간을 수정 및 제거하여 효율성을 더 높여 고객 가치를 높이고 신속하게 하는 것이 목표입니다.

GitLab Value Stream Analytics

Gitlab에서는 Value Stream Analytics 기능을 통해 특정 팀이나 프로젝트에서 개발 생명 주기 전반에 걸쳐 소요된 시간을 측정할 수 있습니다. 시작 이벤트에서 종료 이벤트까지를 측정하여 각 단계에서 소요된 평균 시간을 표시합니다. 이러한 지표를 통하여 개발 프로세스의 병목 현상을 식별하는 데 도움을 주고 소프트웨어 개발 생명 주기에서 속도 저하의 근본 원인을 발견, 분류 및 식별하고 신속하게 조치를 취하여 효율성을 개선할 수 있습니다.

valuestream | 인포그랩 GitLab

GitLab에서 Value Stream Analytics 활성화 하기

GitLab에서는 그룹, 프로젝트 단위로 활성화 할 수 있습니다. 그룹에서는 Value Stream에 활용할 수 있는 템플릿을 만들어서 적용할 수 있습니다.

  • 각 그룹, 프로젝트의 Analytics > Value stream에서 설정 가능합니다.
  • Stage관련, MR관련, Issue관련 이벤트를 활용하여 단계를 만들어 Custom 프로세스를 만들 수 있습니다.

아래의 표는 GitLab에서 제공하고 있는 기본 프로세스 템플릿에서 각 단계별 시작 및 종료 이벤트 입니다.

Stage
시작 이벤트
종료 이벤트
이슈Issue 생성이슈 단계 종료
계획계획 단계 시작커밋에 처음 연동한 Issue
코드코드 단계 시작MR 생성
테스트MR 최근 빌드 시작 시간MR 최근 빌드 종료 시간
리뷰MR 생성MR merged
스테이징(staging)MR mergedMR production 환경에 첫 배포
  • 이슈: GitLab에서 문제를 해결하기 위해 Issue를 생성하여 담당자를 할당, 레이블 지정 등 일정을 세우는 데 걸리는 평균 시간을 측정합니다. 레이블은 이슈 보드 목록에 포함되어 잇는 경우에만 레이블이 추적됩니다.
  • 계획: 이전 단계에서 생성한 Issue와 첫 번째 커밋을 push 하는 데 걸리는 시간을 측정합니다. 첫 번째 커밋에 하나 이상의 Issue 번호가 포함되어 있을 때 Plan에서 Code로 전환하는 단계가 트리거 됩니다. 이슈 번호가 포함되지 않은 경우 해당 단계에서 시간이 측정되지 않습니다.
  • 코드: 이전 단계에서 진행한 첫 번째 커밋과 MR을 생성하는 데 걸리는 시간을 측정합니다. MR 설명 섹션에 이슈 종료 패턴을 추가하면 이슈 종료 시간으로 추적 가능합니다. 이슈 종료 패턴이 없으면 시작 시간은 첫 번째 커밋의 생성 시간으로 설정됩니다.
  • 테스트: 해당 프로젝트에서 실행된 전체 파이프라인의 평균 시간을 측정합니다. 이전 단계에서 정의한 대로 해당 MR에 푸시된 커밋에 대해 Gitlab CI/CD 파이프라인에 모든 작업을 실행하는 데 소요된 시간과 관련 있습니다.
  • 리뷰: 생성된 MR에서 코드를 리뷰하고 Issue를 종료하는데 걸리는 평균 시간입니다.
  • 스테이징: Merge 요청(이슈 종료 패턴 포함)과 첫 번째 Production 환경에 배포하는데 걸리는 평균 시간입니다. Production 환경이 없으면 데이터가 수집되지 않습니다.

Value Stream Analytics 기본 템플릿 사용법

앞서 설명드렸던 Event 조건에 맞으면 단계 별로 시작 시간과 종료시간을 체크하여 시간을 측정합니다. GitLab의 기본 템플릿을 활용하여 워크플로를 만들어서 각 단계별로 작동하는 방법과 과정을 확인해 보겠습니다. 특정 이벤트에는 간단한 조건이 있어야지 Event가 활성화되어 시간 측정이 가능합니다.

  1. Issue 단계
    • Issue를 생성하고 마일스톤을 연결해야 합니다.
      issue | 인포그랩 GitLab
    • Issue 단계에서 시간이 측정된 걸 확인할 수 있습니다.
      issue | 인포그랩 GitLab
  2. Plan 단계
    • 해당 커밋에 해당 Issue 번호가 포함되어 있어야 합니다.(ex: #32)
      plan | 인포그랩 GitLab
    • Plan 단계에서 시간이 측정된 걸 확인할 수 있습니다.
      plan | 인포그랩 GitLab
  3. Code 단계
    • MR을 생성합니다.
    • MR에 이슈 종료 패턴(Closes #32)을 넣어서 시작 시간을 이슈 종료 시간을 설정 할 수도 있습니다.
      code | 인포그랩 GitLab
    • Code 단계에서 시간이 측정된 걸 확인할 수 있습니다.
      code | 인포그랩 GitLab
  4. Test 단계
    • MR에서 파이프라인이 작동한걸 확인합니다.
      test | 인포그랩 GitLab
    • Test 단계에서 시간이 측정된 걸 확인할 수 있습니다.
      test | 인포그랩 GitLab
  5. Review 단계
    • MR을 Merge 합니다.
      reivew | 인포그랩 GitLab
    • Review 단계에서 시간이 측정된 걸 확인할 수 있습니다.
      review | 인포그랩 GitLab
  6. Staging 단계
    • CI/CD 파이프라인에 environment 정의가 필요합니다.
    • Staging 단계에서 시간이 측정된 걸 확인할 수 있습니다.
      staging | 인포그랩 GitLab

이번 워크플로에서는 짧은 시간 안에 측정을 하다 보니 Lead Time과 Cycle Time 시간이 측정되지 않았습니다.

맺음말

이번 글에서는 Value Stream이 무엇인지, GitLab Value Stream 기능과 사용법에 대해서 알아보았습니다. 기본 템플릿을 활용하여 워크플로를 진행하였지만 커스텀 템플릿을 지원하고 있어 부서나 프로젝트에 맞게 지표를 측정할 수 있습니다. 기본 템플릿을 활용하여 진행하였지만 커스텀 템플릿을 지원하고 있어 부서나 프로젝트에 맞게 지표를 측정할 수 있습니다. GitLab Value Stream 기능을 활용하여 개발 생명 주기에서 발생하는 소요 시간을 분석하여 병목현상이 발생하는 구간이나 최적화할 수 있는 구간을 찾아내서 효과적으로 최종 사용자에게 가치를 전달했으면 좋겠습니다.

인포그랩은 GitLab 및 DevOps에 대한 맞춤 기술 지원을 제공합니다.
GitLab(Omnibus/Cloud Native Hybrid) 구축, CI/CD 관련한 지원이 필요하시면 문의하기 로 연락해 주십시오.

References