사전 배포 재작업률
개념

배포 재작업률

gabury1고친 사람 github-actions[bot]

배포 재작업률은 이미 내보낸 배포를 수습하느라 다시 내보낸 배포가 얼마나 되는지 알려 줍니다. 한 기간에 나간 배포 전체를 분모로 놓고, 그중 급히 수습하러 나간 배포를 분자로 셉니다. 값이 클수록 새로 만드는 일 대신 뒷수습에 힘을 쓰고 있다는 뜻입니다.

쉽고 빠른 이해

배포한 뒤에 급히 되돌리거나 고치러 다시 나간 배포의 몫입니다. 한 달에 배포를 백 번 했는데 그중 다섯 번이 터진 장애를 막으려고 급히 나간 것이었다면, 그 다섯 번이 이 값이 세는 배포입니다.

이 값이 없으면 배포가 흔들린 뒤에 팀이 얼마나 더 일했는지가 안 보입니다. 문제를 낸 배포의 수만 세면, 한 번에 끝난 장애와 며칠을 끈 장애가 똑같이 한 건으로 남습니다.

  1. 기간을 정하고 그동안 나간 배포를 전부 셉니다
  2. 그중 일정에 없이 장애를 수습하러 나간 배포를 가려냅니다
  3. 가려낸 수를 전체 배포 수로 나눕니다

대가는 무엇을 「수습하러 나간 배포」로 칠지 팀이 손으로 정해야 한다는 것입니다. 그 선이 팀마다 다르면 값을 서로 견줄 수 없습니다.

상세

흰 셔츠에 튄 국물 자국 하나 때문에 세탁기를 다시 돌립니다. 꺼내 봐도 그대로여서 두 번을 더 돌리고서야 지웠습니다. 그 주에 돌린 빨래 스무 번 가운데 셋은 얼룩진 옷 한 장이 시킨 것입니다.

무엇을 세나

낱말 하나를 먼저 풀어 둡니다. 인시던트는 프로덕션에서 서비스가 제대로 돌지 않아 사람이 곧바로 손을 대야 하는 사건입니다. 장애라고도 부릅니다.

배포 재작업률은 일정 기간에 나간 배포 전체 가운데, 계획에 없이 그 인시던트를 수습하려고 나간 배포의 비율입니다. 금요일 밤에 결제 화면이 빈 화면으로 뜨는 것을 보고 곧바로 내보낸 배포가 그런 배포입니다.

수습하러 나가는 배포는 대개 둘 중 하나입니다. 문제를 낸 변경을 되돌리는 롤백이거나, 문제를 급히 막는 코드만 얹어 내보내는 핫픽스입니다.

분자에 들려면 조건 둘을 다 넘어야 합니다. 일정에 올려 둔 배포가 아니어야 하고, 인시던트를 수습하는 것이 그 배포의 목적이어야 합니다.

flowchart TD
    A["나간 배포 하나"] --> B{"일정에 올려 둔 배포인가"}
    B -->|올려 뒀다| C["분자에 안 든다"]
    B -->|아니다| D{"인시던트를 수습하러 나갔나"}
    D -->|아니다| C
    D -->|그렇다| E["분자에 든다"]

그림의 갈림 둘을 다 지난 배포만 분자에 듭니다. 일정에 없던 배포여도 급한 기능 요청을 넣으려고 나간 것이면 세지 않습니다. 분모는 갈림과 무관하게 그 기간에 나간 배포 전부입니다.

값을 내는 법

나눗셈 하나로 끝납니다. 한 달을 기간으로 잡은 팀이라면 이렇게 셉니다.

그 달에 나간 배포        100
그중 수습하러 나간 배포     5
5 / 100 = 0.05          // 스무 번에 한 번

백 번 내보내는 동안 다섯 번을 뒷수습에 썼다는 뜻입니다. 횟수가 아니라 비율이라, 배포를 하루에 여러 번 하는 팀과 분기에 한 번 하는 팀을 나란히 놓고 볼 수 있습니다.

왜 따로 재나

DORA(DevOps Research and Assessment, 데브옵스 연구·평가)는 소프트웨어를 내보내는 솜씨를 몇 개의 지표로 재자고 정한 연구입니다. 그 지표 가운데 변경 실패율은 문제를 낸 배포가 몇이나 되는지를 셉니다.

그 수만으로는 문제를 덮는 데 든 품이 안 보입니다. 한 번 고쳐서 끝난 인시던트와 사흘 동안 배포를 여섯 번 더 하며 겨우 잡은 인시던트가 변경 실패율에서는 똑같이 한 건입니다. 배포 재작업률은 그 여섯 번을 셉니다. DORA 가 이 값을 다섯째 지표로 뒤늦게 들인 까닭이 그것입니다.

변경 실패율과 어떻게 갈리나

둘 다 분모가 그 기간의 전체 배포입니다. 갈리는 것은 분자입니다.

지표 분자에 드는 배포
변경 실패율 문제를 낸 배포 자신
배포 재작업률 그 문제를 수습하러 나간 배포

한 배포가 인시던트를 냈고 그것을 잡느라 배포를 세 번 더 했다고 해 봅시다. 변경 실패율의 분자는 1 이고 배포 재작업률의 분자는 3 입니다. 앞은 사고가 몇 번 났는지를, 뒤는 그 사고를 치우는 데 배포를 몇 번 더 썼는지를 봅니다.

값을 읽을 때 조심할 것

값이 내려간 것이 언제나 나아진 표시는 아닙니다. 수습할 코드를 다음 정기 배포에 묶어 내보내면 「일정에 없던 배포」가 줄어 값이 내려갑니다. 인시던트는 그대로인데 세는 방법만 바뀐 것입니다.

무엇을 수습 배포로 칠지를 팀이 스스로 정하기 때문에, 팀이 다르면 같은 값이 같은 뜻이 아닙니다. 한 팀의 값이 달마다 어느 쪽으로 움직이는지를 보는 데 씁니다.

관련 항목

배포 성능을 같이 재는 나머지 지표

배포 빈도 · 변경 리드 타임 · 변경 실패율 · 서비스 복구 시간

이 지표를 정한 연구와 그것이 속한 분야

DORA · 데브옵스 · 릴리스 엔지니어링 · 지속적 배포

수습 배포를 부르는 사건

인시던트 · 장애 · 프로덕션 · 포스트모템

수습할 때 고르는 배포 방식

롤백 · 핫픽스 · 카나리 배포 · 기능 플래그

이 값을 셀 때 들여다보는 기록과 도구

배포 · 커밋 · 버전관리 · 파이프라인 · 관측성

다른 이름: rework rate · deployment rework rate · 재작업률