CNPA — 클라우드 네이티브 플랫폼 엔지니어링 어소시에이트 · 플랫폼을 숫자로 재기 · 이론
지표는 정의가 아니라 계산에서 갈린다
한 줄 요약
DORA 네 지표는 이름을 아는 것으로 끝나지 않습니다. 같은 데이터를 놓고도 창(window)·분모·대푯값 을 어떻게 잡느냐에 따라 숫자가 몇 배씩 달라지므로, 지표는 정의와 함께 계산 방법을 문서가 아니라 코드로 못박아야 합니다.
왜 이게 필요했나
두 팀이 같은 배포 기록을 보고 각자 "리드 타임 40분" 과 "리드 타임 4시간" 을 보고한 적이 있습니다. 데이터는 같았습니다. 한쪽은 중앙값을, 다른 쪽은 평균을 썼고, 한쪽은 성공한 배포만 세고 다른 쪽은 전부 셌습니다. 이렇게 되면 숫자로 대화할 수 없습니다. 지표가 늘어날수록 회의가 길어지는 조직은 대개 여기서 막혀 있습니다.
그래서 플랫폼 팀이 지표를 도입할 때 가장 먼저 정해야 하는 것은 어떤 지표를 볼지가 아니라 그 지표를 어떻게 계산할지 입니다.
어떻게 동작하나
원장에서 시작합니다
지표는 대시보드가 아니라 원장(ledger) 에서 나옵니다. 배포 한 건마다 서비스 이름, 언제 커밋이 만들어졌고 언제 배포됐는지, 성공인지 실패인지, 실패했다면 복구까지 얼마나 걸렸는지를 한 행으로 남깁니다. 이 한 장이 있으면 네 지표를 모두 계산할 수 있고, 없으면 어떤 도구를 사도 추정만 하게 됩니다.
네 지표의 계산에서 실제로 갈리는 곳
| 지표 | 자주 틀리는 지점 |
| --- | --- |
| 배포 빈도 | 조직 전체 합만 보면 한 서비스가 자주 배포해 나머지를 가린다. 서비스별로도 본다 |
| 변경 리드 타임 | 평균은 오래 걸린 한 건에 끌려간다. 중앙값을 쓴다 |
| 변경 실패율 | 분모는 배포 건수다. 서비스 수나 사고 건수가 아니다 |
| 평균 복구 시간 | 분모는 실패한 배포 건수 다. 전체 배포로 나누면 값이 몇 배로 작아진다 |
중앙값에는 함정이 하나 더 있습니다. 서비스별 중앙값의 평균은 전체 중앙값이 아닙니다. 배포 건수가 서비스마다 다르기 때문에 두 값은 대체로 다르고, 둘을 섞어 쓰면 같은 원장에서 서로 다른 보고서가 나옵니다.
등급은 임계값을 먼저 적어 놓고 판정합니다
DORA 는 네 지표를 Elite·High·Medium·Low 로 나눕니다. 여기서 중요한 것은 임계값 자체보다, 우리 조직이 쓰는 임계값을 미리 적어 두고 그대로 적용하는 것 입니다. 판정할 때마다 기준을 조금씩 조정하면 등급은 아무 의미가 없어집니다.
그리고 네 지표는 함께 읽습니다. 속도 지표는 좋은데 안정성 지표가 나쁘면 그 조직은 빠른 것이 아니라 검증을 건너뛰고 있는 것 입니다. 반대로 안정성만 좋고 배포가 뜸하면 위험을 회피하느라 개선이 멈춘 상태일 수 있습니다.
채택률은 분모와 '활성' 의 정의가 전부입니다
플랫폼 채택률에서 다투게 되는 것은 언제나 두 가지입니다. 분모를 전체 서비스로 볼 것인가 온보딩한 서비스로 볼 것인가, 그리고 무엇을 '쓰고 있다' 로 볼 것인가입니다. 온보딩 완료를 채택으로 세면 숫자는 예쁘지만 실제로 아무도 쓰지 않는 상태를 숨깁니다. 최근 일정 기간 안에 실제로 배포한 서비스를 세는 편이 정직하고, 그 기간을 함께 적어야 나중에 비교할 수 있습니다.
에러 버짓은 산수입니다
SLO 가 99.5% 이고 창이 28일이면 예산은 이렇게 나옵니다. 28일은 40320분이고, 그 0.5%인 201.6분이 이번 창에서 허용되는 나쁜 시간입니다. 여기서 실제로 소진한 시간을 빼면 남은 예산이 나옵니다. 이 숫자가 있어야 "지금 새 기능을 더 낼 것인가, 안정화에 쓸 것인가" 를 감정이 아니라 잔량으로 이야기할 수 있습니다.
현장에서 만나는 모습
지표를 팀 사이의 순위표로 쓰기 시작하면 원장이 오염됩니다. 실패를 실패로 적지 않게 되고, 배포 단위를 잘게 쪼개 건수를 늘리게 됩니다. 숫자는 좋아지는데 실제 상황은 나빠지고, 그때부터 지표는 현실을 가리는 장치가 됩니다.
그래서 플랫폼 팀은 지표를 자기 자신에게 겨눕니다. 준수율이 낮은 규칙이 있으면 그 팀을 부르는 대신 그 규칙을 지키기 쉽게 만들고, 리드 타임이 유독 긴 서비스가 있으면 그 서비스의 파이프라인에서 무엇이 기다리고 있는지를 봅니다. 지표의 쓸모는 순위가 아니라 다음에 무엇을 고칠지 를 정하는 데 있습니다.
다음 실습에서 할 것
28일치 배포 원장을 놓고 네 지표를 직접 계산합니다. 중앙값과 평균의 차이, 실패율과 복구 시간의 분모를 손으로 확인하고, 미리 정한 임계값으로 등급을 판정합니다. 이어서 서비스 명부에서 채택률을 활성 사용의 정의대로 계산하고, 마지막으로 에러 버짓의 예산과 소진율을 구합니다.