지난 11월 28일 서울 강남파이낸스센터 21층 대회의실에서 GitLab 코리아 18번째 밋업이 오프라인으로 진행됐습니다.
인포그랩과 GitLab 코리아는 지난 17번째 밋업에 이어 이번 밋업도 오프라인 행사로 준비했는데요. 밋업 주제는 ‘VSM(Value Stream Management)*으로 완성하는 DevSecOps & Slack Bot(슬랙봇)** 자동화’였습니다. DevOps의 Value Stream(가치 흐름)과 자동화가 밋업의 주요 키워드였어요.
이번 밋업은 세 개의 세션으로 진행됐는데요. 세션 1에서는 신철호(Dexter) 인포그랩 이사가 ‘DevOps VSM’을 주제로 GitLab의 VSM 솔루션 기능을 소개했고요. 세션 2에서는 임희호(Chad) 인포그랩 DevOps 엔지니어가 ‘DevOps 자동화는 GitLab으로’를 주제로 GitLab을 활용해 DevOps 업무를 자동화하는 방법을 설명하고, 시연했습니다. 세션 3에서는 손성훈(Jeff) 인포그랩 DevOps 엔지니어가 ‘비개발자도 DevOps 누리기’를 주제로 ‘슬랙봇을 사용해 블로그 배포를 자동화하는 방법’을 발표하고 시연을 선보였죠. 이날 밋업의 주요 발표 내용을 자세히 살펴보겠습니다.
*VSM: Value Stream Management 기능의 줄임말. 이는 고객을 향하는 가치 흐름(Value Stream)을 좋게 만들도록 관리하는 방법임
**슬랙봇: 메신저 서비스인 ‘슬랙’에 기반한 봇(bot). 이는 특정 작업을 기억하도록 채널 또는 다이렉트 메시지(DM)에서 사용자에게 리마인더를 전달하는 등 다양한 기능을 자동으로 수행함
‘DevOps 동작 상태’ 판단 기준의 한계
DevOps 성숙도 평가 기준의 한계를 다룬 슬라이드세션 1에서는 Value Stream과 VSM(Value Stream Management), Value Stream Mapping 개념, Value Stream 사례, GitLab의 VSM 솔루션 등을 다뤘습니다. 먼저 신철호(Dexter) 인포그랩 이사는 ‘조직에서 DevOps가 잘 작동하는지’ 판단하는 몇 가지 질문을 던졌는데요. 질문은 다음과 같습니다. 1)DevOps를 구축하고, CI/CD 파이프라인이 돌아간 다음 뭐가 달라졌나요? 2)한 달에 몇 번 배포하나요? 배포할 때 문제가 얼마나 안 생기나요? 3)요구사항을 처음에 전달받고 코드를 작성하기 전까지 준비시간이 보통 얼마나 걸리나요? 4)코딩을 시작해서 고객에게 리뷰받기까지 시간이 보통 얼마나 걸리나요? 5)요구사항을 전달받고 코드를 작성하기까지 걸린 시간을 어떻게 기록하고, 알 수 있나요?
신 이사에 따르면, ‘사람들이 1)번 질문에는 쉽게 답할 수 있다’고 합니다. CI/CD 파이프라인이 어느 정도 돌아가면 대부분 사람이 ‘CI/CD 자동화가 개발 일정이나 품질을 맞추는 데 도움이 되고, 개선이 조금 이뤄졌다’고 말하죠. 실제 이를 피부로 느끼기도 하고요. 2)~5)번 질문은 답변하기 쉽지 않은 질문이었습니다. 신 이사가 밋업 청중에게 이 질문을 던졌을 때, 3)번 질문을 제외하면 답변하는 분이 없었는데요. 한 분만 3)번 질문에 “일주일 걸린다”고 답변했죠. 신 이사는 “우리가 DevOps를 성숙도 높게 사용하면 이러한 질문의 답을 머릿속에 두고 즉각 말할 수 있을 것”이라고 말했습니다.
이어서 신 이사는 DevOps 성숙도를 판단하는 글로벌 기준으로 ‘Google DORA 4 Keys’를 설명했는데요. DORA 4 Keys는 속도 측면에서 배포 내역(Deployment History)과 평균 변경 리드 타임(Mean Lead Time For Changes)을, 안정성 측면에서 변경 실패율(Change Failure Rate)과 서비스 복원 시간(Time To Restore Service)을 측정하죠. 배포 내역은 배포 주기, 평균 변경 리드 타임은 코드 변경부터 운영 배포까지 리드 타임이고요. 변경 실패율은 배포하다가 실패한 비율, 서비스 복원 시간은 배포하다가 실패했을 때 복원한 시간이죠. 신 이사는 “DevOps를 구축한 조직은 대부분 이 정도 데이터를 수집, 정리하려 한다”고 말했습니다.
아울러 신 이사는 DevOps 성숙도를 평가하는 기준으로 ‘DevOps Maturity Assessment’도 소개했는데요. 이날 밋업에서 공유한 DevOps Maturity Assessment 표는 신 이사가 DORA의 DevOps 성숙도 평가 설문을 확장해서 만든 버전이었습니다. 기술, 프로세스, 문화 측면에서 DevOps 성숙도를 리커드 척도*로 정성 평가하죠. 신 이사는 “이 두 가지 기준(Google DORA 4 Keys, DevOps Maturity Assessment)만으로 DevOps 성숙도를 평가할 수 없지만 이를 활용해 DevOps를 다음에 더 잘하기 위한 활동, 그 활동으로 실제 DevOps를 개선하는 작업을 진행한다”고 설명했습니다.
그러나 이러한 기준만으로 ‘DevOps가 잘 동작하는지’ 판단하기에는 한계가 있는데요. 신 이사는 Google DORA 4 Keys의 단점으로 ‘무엇을 개선해야 하는지 알려주지 않는다’고 지적했습니다. DevOps Maturity Assessment는 ‘의사 결정에 충분한 수준으로 정성 데이터가 나오지 않는’ 문제가 있고요. DevOps가 잘 동작하는지 판단하려면 이 두 가지 기준을 적절히 활용해야 하는데요. 신 이사는 ‘VSM이 여기에 도움이 될 수 있다’고 밝혔습니다.
*리커드 척도: 설문 조사 등에 사용되는 심리 검사 응답 척도 중 하나. 응답자가 제시된 문장에 얼마나 동의하는지를 답변하도록 함
Value Stream, VSM이 문제를 푸는 방식
Hype Cycle for Agile & DevOps. 출처=가트너신 이사는 VSM(Value Stream Management)을 설명하기에 앞서 글로벌 정보기술 연구·자문 기업인 가트너가 제시한 ‘Hype Cycle for Agile & DevOps(2022년)’를 소개했는데요. 이 자료는 ‘신생 기술의 성숙도를 향한 시장 기대’를 보여주죠. 특히 VSM이 ‘기술업계에서 떠오르는 신생 기술이자 글로벌 연구기관에서도 주목하는 중요한 기술임’을 보여주는 자료이기도 한데요. Hype Cycle for Agile & DevOps를 보면 2022년에 Value Stream Management Platform, Value Stream Delivery Platform이 Agile과 DevOps 분야에서 두각을 나타내고 있고요. 두 기술의 성숙도는 혁신 트리거(Innovation Trigger) 단계부터 기대치 폭등의 정점(Peak of Inflated Expectations) 단계까지 걸쳐져 있었습니다. 이 기술은 2~5년 내로 안정기에 도달할 걸로 전망되고요.
그렇다면 도대체 VSM이 뭘까? 신 이사는 먼저 Value Stream 개념부터 설명했는데요. 이는 제품이나 서비스가 고객에게 가치를 제공하도록 수행하는 순차적 단계를 나타낸 겁니다. 이는 ‘기능 요청(Feature Request)→정의하기(Define)→빌드하기(Build)→검증하기(Validate)→릴리즈하기(Release)→새로운 가치 증가(New Increment Of Value)’ 순서로 이뤄지는데요. 즉, 소프트웨어나 서비스에서 작은 기능을 완성도 높게 만들어 고객 가치를 지속적으로 높여가는 과정이죠. 기능 요청 단계에서 가치를 만들기까지 걸리는 전체 시간을 ‘리드 타임’이라고 하는데요. Value Stream은 이 리드 타임을 반복 수행해서 고객 가치를 반복해 만드는 일입니다.
VSM은 고객을 향하는 가치 흐름을 좋게 만드는 관리 방법인데요. 이는 고객 가치를 만드는 활동 흐름인 Value Stream을 가속화하는 데 도움이 되는 다양한 관행과 기술을 포함합니다. 신 이사는 그 과정을 이렇게 설명했는데요. 먼저 Value Stream을 평가하고요. Value Stream Map을 그립니다. 그다음, 개선 활동을 적용하고 데이터를 만들며, 피드백과 개선 활동을 반복하죠. 특히 작업을 가시화하면 고객 경험을 개선하기 위해 지연, 낭비, 부가가치가 없는 작업을 제거하는 데 필요한 인사이트를 얻을 수 있고요.
Value Stream Mapping 과정을 다룬 슬라이드앞서 VSM 과정에서 ‘Value Stream Map을 그린다’고 언급했죠. 이러한 행위를 ‘Value Stream Mapping’이라고도 하는데요. 이는 모든 이해 관계자가 모여 Value Stream의 주요 단계, 전달되는 결과물, 지연 시간 등을 시각화 지도로 그리는 활동을 뜻합니다. VSM의 핵심 활동인데요. Value Stream Mapping으로 Value Stream에서 개선할 영역을 발견하고, 고객 만족 요건을 이행하는 데 필요한 총시간을 가시화할 수 있습니다. Value Stream Mapping을 수행하는 워크숍도 있는데요. 워크숍에서는 현재 Value Stream 상태를 Map으로 그리고 분석하며, 미래 상태 Map을 그리고 현재와 미래 격차를 줄이는 액션 아이템을 도출하죠.
신 이사는 앞서 ‘Google DORA 4 Keys’와 ‘DevOps Maturity Assessment’ 같은 DevOps 성숙도 평가 기준만으로 ‘DevOps가 잘 동작하는지’ 판단하기에는 한계가 있다고 설명했는데요. Google DORA 4 Keys는 ‘무엇을 개선해야 하는지’ 알려주지 않고, DevOps Maturity Assessment는 ‘의사 결정에 충분한 수준으로 정성 데이터가 나오지 않는다’고 지적한 바 있습니다.
GitLab의 VSM 솔루션은 이 한계를 보완하는 기능을 제공하죠. 이는 리드 타임(Lead Time)·사이클 타임(Cycle Time)·새로운 이슈(New Issues)·배포(Deploys) 등 핵심 메트릭(Key metrics), 배포 주기(Deployment Frequency)·변경 리드 타임(Lead Time for Changes)·서비스 복원 시간(Time to Restore Service)·변경 실패율(Change Failure Rate) 등 DORA 메트릭(DORA metrics), 총시간(Total time 또는 평균 완료 시간(Average time to completion)) 등 여러 지표를 한 곳에서 보도록 지원합니다. 통합 뷰(View) 환경에서 여러 지표를 동시에 함께 확인할 수 있는데요. 따라서 GitLab의 VSM 솔루션에는 ‘DevOps 동작 상태’를 종합적으로, 다각도로 꼼꼼하게 파악할 수 있다는 장점이 있습니다.
인포그랩이 GitLab VSM으로 Value Stream 관리하는 방법
GitLab의 VSM 솔루션 대시보드를 다룬 슬라이드이어서 신 이사는 GitLab의 VSM 솔루션으로 인포그랩의 Value Stream을 관리하는 방식을 시연했는데요. 앞서 언급했다시피 GitLab에서 VSM 분석 대시보드를 보면 회사의 Value Stream 관련 지표를 확인할 수 있습니다. 배포한 뒤 ‘Incident’라는 항목을 대시보드에 만들면 이 Incident를 기준으로 장애 데이터를 측정할 수 있죠. 대시보드에서는 전체 Value Stream, 특정 제품의 Value Stream 등을 보도록 구성할 수 있는데요. 신 이사는 “’저 정도 데이터쯤이야’라고 생각할 수도 있지만 사내 도구를 사용해 실제로 데이터를 수합하려고 해보면 이게 생각보다 쉽지 않다는 걸 알 수 있다”라고 말했습니다.
아울러 GitLab의 VSM 솔루션에서는 맞춤형 대시보드를 만들 수도 있는데요. 예를 들어, Severity, Priority에 따라 지표를 판단하도록 대시보드를 구축할 수도 있고요. DORA 메트릭을 기준으로 대시보드를 만들 수도 있습니다. 이때 월별 배포 주기나 월별 서비스 복원 시간 등을 확인할 수 있죠. 또 개발팀의 생산성도 GitLab의 VSM 솔루션으로 파악할 수 있는데요. GitLab에서는 Merge Request를 토대로 ‘얼마나 자주 merge 됐는지’를 보고 생산성 높낮이를 평가할 수 있습니다. 예를 들어, 하루 안에 merge가 끝난 아이템, merge 되는데 23일이나 걸린 아이템 등을 보고 ‘merge 하는 데 시간이 오래 걸릴 수밖에 없는 일이 뭔지’ 찾아내고, 이를 토대로 업무를 개선할 수 있죠. 신 이사는 “GitLab은 Git에 기반하기에 VSM 솔루션으로 개발자 한명 한명의 생산성을 쉽게 추적할 수 있다”고 설명했습니다.
세션 1을 마무리하며 신 이사는 VSM의 장점을 이렇게 정리했습니다. Value Stream을 관리하면 ‘다운타임’이라는 낭비를 줄일 수 있고요. 낭비되는 일을 자동화하면 고객 만족을 얻을 기회를 늘릴 수 있습니다. 그렇다면 현재 소프트웨어 개발 환경에서 ‘낭비’에 해당하는 일은 어떤 게 있을까요? 신 이사는 재작업/반복 작업, 고객에게 필요 없는 고품질 작업, 불필요한 작업, 대기 시간 등을 꼽았는데요. 예를 들어, ‘데이터베이스를 정규화하느냐, 마느냐’를 많이 고민하는 것도 그중 하나죠. 신 이사는 “DevOps 성숙도가 높은 회사는 배포 주기가 빠르고, 안정적이고 지속적으로 배포할 환경이 있으며, 고객 가치를 계속 만드는 곳일 가능성이 높다”며 “낭비 업무를 줄여 자동화를 구현하고, 레버리지가 높은 일을 하도록 하는 게 고객 가치를 높이는 일”이라고 강조했습니다.