최고의 성능을 달성하는 것은 모든 소프트웨어 개발 팀의 목표이며, Deriv도 예외는 아닙니다. 이러한 야망을 실현하기 위해서는 현재 상황을 이해하는 것이 중요합니다. 주요 데브옵스 메트릭은 우리의 강점과 개선이 필요한 부분을 강조하는 등대 역할을 합니다.
팀 성과를 향상하기 위해 DevOps Research & 평가 프로그램(DORA 메트릭)에서 개발한 메트릭을 비롯한 메트릭을 사용한다는 아이디어는 이론적으로는 간단하지만 실제로 적용하는 것은 종종 더 복잡합니다. 이러한 지표는 큰 가능성을 가지고 있지만, 많은 개발팀이 이를 추적하는 것조차 어려워하거나 추적하더라도 효과적으로 활용하지 못하는 경우가 많습니다.
어떤 지표에 집중할지 결정하는 것 외에도 이를 측정하고 시각적으로 표현하는 효과적인 방법을 고안해야 했고, 더 중요한 것은 이 모든 좋은 노력이 낭비되지 않도록 해야 한다는 것이었습니다.
이 블로그 게시물에서는 집중하기로 선택한 지표와 이를 추적하기 위해 수립한 프로세스에 대해 자세히 설명합니다.
DORA 메트릭 설명
데브옵스 환경의 초석인 DORA 메트릭은 개발 팀의 성과를 나타내는 기본 지표 역할을 합니다. 이러한 메트릭에는 배포 빈도, 변경 리드 타임, 변경 실패율, 서비스 복구 시간(평균 수리 시간 또는 MTTR이라고도 함)의 네 가지 주요 매개 변수가 포함됩니다.
- 배포 빈도는 코드가 프로덕션 환경에 배포되거나 최종 사용자에게 릴리스되는 빈도를 측정합니다. 이는 새로운 기능, 업데이트 또는 수정 사항을 구현하고 제공하는 팀의 능력을 반영합니다.
- 변경 리드 타임은 약속부터 배포까지 변경에 걸리는 시간을 측정합니다. 리드 타임이 짧을수록 개발 프로세스가 더 민첩하고 반응이 빠릅니다.
- 변경 실패율은 프로덕션에서 실패하여 즉각적인 수정이 필요한 배포의 비율을 평가합니다. 비율이 낮을수록 배포 프로세스의 안정성이 높다는 것을 의미합니다.
- 서비스 복구 시간은 프로덕션 환경에서 장애를 복구하는 데 걸리는 시간을 측정합니다. 복구 시간이 짧다는 것은 인시던트 관리 및 해결에 있어 팀의 효율성이 높다는 것을 의미합니다.
DORA 지표는 개발 효율성과 효과에 대한 높은 수준의 관점을 제공하는 매우 중요한 지표이지만, 모든 것을 보여주는 것은 아닙니다. 주로 배포 및 배포 후 단계에 초점을 맞추고 개발 수명 주기의 중요한 측면은 생략합니다.
DevOps 현황 및 LinearB 보고서에서 더 폭넓은 인사이트 얻기
DORA 지표를 넘어 시야를 넓혀야 할 필요성을 인식한 저희는 영향력 있는 업계 보고서를 통해 더 깊이 있는 인사이트를 얻었습니다. 데브옵스 현황 및 리니어B 보고서는 데브옵스 효율성을 측정하는 방식을 개선하는 데 중추적인 역할을 해왔습니다.
연례 DevOps 현황 보고서는 '엘리트' DevOps 팀을 차별화하는 관행에 대한 놀라운 분석을 제공하며, 특히 놀라운 복구 시간, 배포 빈도 및 전반적인 효율성을 강조합니다. 배포 빈도 및 변경 실패율과 같은 결과를 측정하는 것뿐만 아니라 코딩 관행, PR 검토 및 팀 협업과 같이 이러한 결과를 이끌어내는 기본 프로세스를 이해하는 것의 중요성을 강조합니다.
당연히 이 보고서에서는 간소화된 PR 검토가 생산성과 코드 품질을 크게 향상시킬 수 있다는 점을 강조합니다.
DORA를 넘어서: 추가 DevOps 메트릭 통합
DORA 메트릭의 한계를 인식하여, 저희는 데브옵스 성능을 보다 포괄적으로 파악할 수 있는 추가 매개변수를 포함하도록 메트릭 제품군을 확장했습니다. 이러한 추가 지표에는 다음이 포함됩니다:
- 코딩 시간: 코드를 작성하고 편집하는 데 소요된 실제 시간을 측정합니다. 코딩 단계에서 개발자의 생산성과 효율성을 파악하는 데 도움이 됩니다.
- 병합 빈도: 코드가 메인 브랜치에 병합되는 빈도를 추적하여 개발 파이프라인을 통한 코드의 흐름을 측정하고 잠재적인 병목 현상을 파악합니다.
- PR(풀 리퀘스트) 검토 시간: 이 메트릭은 풀 리퀘스트를 검토하고 승인하는 데 걸린 시간을 나타냅니다. 효율적인 PR 검토 프로세스는 코드 품질을 유지하고 적시에 기능을 통합하는 데 매우 중요합니다.
- PR 크기: 풀 리퀘스트의 크기를 모니터링하면 코드 변경의 복잡성과 관리 용이성을 평가하는 데 도움이 됩니다. 일반적으로 더 원활하고 관리하기 쉬운 통합 및 검토 프로세스를 위해 더 작고 빈번한 PR이 선호됩니다.
이러한 지표를 성과 측정 프레임워크에 통합하여 전체 개발 프로세스를 파악하는 것을 목표로 합니다. 이러한 접근 방식을 통해 배포 및 배포 후 단계뿐만 아니라 전체 소프트웨어 개발 수명 주기에서 비효율성을 파악하고 해결할 수 있습니다.
도구 및 사용자 지정 솔루션으로 Deriv의 DevOps 메트릭 추적하기
데브옵스 메트릭을 수집하고 분석하는 방법론은 오픈 소스 솔루션과 독점 소프트웨어가 혼합되어 있습니다.
툴킷의 핵심 요소는 주로 GitHub 통계 수집에 사용되는 오픈소스 도구인 Monocle입니다. Monocle은 효과적인 데이터 시각화를 위해 사용자 친화적인 웹 프론트엔드인 Kibana를 제공하여 GitHub 데이터를 Elasticsearch 데이터베이스에 저장하는 데 능숙합니다.
Elasticsearch에 저장된 데이터의 잠재력을 극대화하기 위해, 우리는 보고서를 시각화하기 위해 Kibana로 전환했습니다. Kibana의 강력한 데이터 시각화 기능 덕분에 상당한 유연성을 확보할 수 있어 데이터 프레젠테이션을 요구 사항에 맞게 정확하게 조정할 수 있습니다. 이러한 전략적 선택을 통해 데이터에 액세스할 뿐만 아니라 분석 요구사항에 가장 적합한 방식으로 데이터를 해석할 수 있습니다.
기술적 구현
이러한 강점에도 불구하고 Monocle은 배포 관련 정보를 다루는 기능이 부족합니다. 이러한 문제를 해결하기 위해 Monocle의 기능을 보완하는 맞춤형 서비스를 개발했습니다. 이 맞춤형 서비스는 GitHub에서 직접 배포 데이터를 수집하여 Elasticsearch 저장소에 원활하게 통합함으로써 개발 수명 주기에 대한 전체적인 관점을 보장하도록 설계되었습니다.
리드 타임 메트릭을 계산하는 데는 고유한 어려움이 있었는데, Elasticsearch 쿼리만을 사용해 직접 계산하는 것은 복잡하기 때문이었습니다. 이러한 문제를 극복하기 위해 저희는 이 지표를 보다 효과적으로 계산할 수 있도록 서비스를 개선했습니다. 관련 풀 리퀘스트를 위해 Elasticsearch를 쿼리하고 데이터를 커밋하여 계산 프로세스를 간소화하고 개선합니다.
또한 사고 관련 데이터를 수집하기 위해 PagerDuty API를 통합했습니다. 이러한 통합은 성능 평가의 필수 요소인 MTTR을 시각화하는 데 매우 중요합니다. PagerDuty API는 상세한 인시던트 데이터를 제공하여 대응 및 해결 시간을 효과적으로 측정하고 분석할 수 있도록 지원합니다.
이러한 복합적인 접근 방식(Monocle, Kibana, 사용자 정의 솔루션, PagerDuty API의 결합)은 운영 메트릭을 종합적으로 파악할 수 있는 합리적인 솔루션임이 입증되었습니다. 특정 요구 사항을 충족하는 맞춤형 대시보드를 개발하는 데 탁월한 도움을 준 Monocle 지원팀에 큰 감사를 표합니다. 버그 보고에 대한 신속하고 효율적인 대응도 큰 도움이 되었습니다.
진행 상황 추적 및 DevOps 관행 개선하기
2023년에 향상된 지표 추적을 시작한 이후, PR 검토 시간을 면밀히 모니터링하고 최적화함으로써 코드 통합 프로세스가 더욱 간소화되어 배포 지연과 충돌이 눈에 띄게 감소했습니다. 마찬가지로 코딩 시간 메트릭을 자세히 분석하여 생산성 병목 현상을 파악하고 해결함으로써 개발자의 시간과 리소스를 보다 효율적으로 사용할 수 있게 되었습니다.
이러한 지표 추적 및 분석의 지속적인 개선은 단순히 숫자에 관한 것이 아니라 사전 예방적 문제 해결과 효율성 최적화를 향한 개발 문화의 심도 있는 변화를 반영합니다. 이러한 프로세스를 더욱 세분화하면 개발 효율성과 전반적인 제품 품질이 더욱 향상될 것으로 기대합니다.
다음은 몇 가지 예제 Kibana 차트입니다.
기술 팀에서 데이터 기반 문화 조성하기
300명이 넘는 개발자로 구성된 글로벌 팀에서 데이터 중심 문화를 조성하기 위해 최선을 다하고 있습니다. 이러한 메트릭을 일상 업무에 통합함으로써 팀은 효율성 병목 현상을 사전에 파악하고 해결할 수 있는 역량을 강화할 수 있습니다. 이러한 접근 방식은 생산성을 향상시킬 뿐만 아니라 팀 내 주인의식과 책임감도 키워줍니다.
DevOps 효율성과 성능의 새로운 기준을 세우기 위한 이 야심찬 여정에 여러분을 초대합니다. 커리어 기회를 탐색하고 엘리트가 되기 위한 꿈을 키워보세요.