AI 코딩 도구가 함수 초안, 테스트 골격, 리팩터링, 문서 변경을 빠르게 만들면서 “개발 속도가 몇 배 빨라졌는가”가 가장 먼저 묻는 질문이 됐습니다. 하지만 생성 라인 수, agent 실행 횟수, 하루 PR 수는 전달 성과를 설명하기에 약한 지표입니다. 작은 수정 열 개가 같은 날 열려도 reviewer가 이틀 뒤에야 맥락을 복원할 수 있고, CI가 길어져 merge queue가 밀리고, 배포 뒤 rollback이 늘었다면 팀의 실제 리드타임은 좋아졌다고 보기 어렵습니다.

AI 시대에 달라지는 것은 DORA 같은 기존 지표가 무효가 되는 일이 아닙니다. 작성 속도가 빨라진 만큼, 검토·검증·복구의 병목을 더 세밀하게 분리해야 한다는 점입니다. 이 글은 저장소별 AI 코딩 에이전트 평가, Agentic Stacked PR Review, AI 생성 테스트와 Mutation Quality Gate, Dependency Budget를 연결해, AI 보조 개발의 성과를 “얼마나 많이 만들었나”가 아니라 얼마나 작은 위험으로 유효한 변경을 빠르게 전달하고 필요할 때 복구했나로 읽는 방법을 정리합니다.

이 글에서 얻는 것

  • AI 생성량·PR 수·코드 라인 수가 생산성의 단독 지표가 될 수 없는 이유를 이해합니다.
  • 작성, 첫 리뷰, 검증, merge, deploy, 재작업, rollback을 하나의 시간축에서 분리해 측정할 수 있습니다.
  • 변경 위험도에 따라 review와 품질 게이트를 다르게 두면서도, AI 도입 효과를 공정하게 비교할 수 있습니다.
  • 개인 감시나 목표치 게임을 피하고 플랫폼·프로세스 병목을 개선하는 지표 운영 규칙을 얻습니다.

핵심 개념/이슈

1) 생성량은 flow의 입구 지표일 뿐이다

AI는 동일한 시간에 더 많은 diff와 테스트 파일을 만들 수 있습니다. 이것은 초안 단계의 처리량을 높일 수 있다는 의미이지, 고객에게 더 많은 가치가 안전하게 도달했다는 뜻은 아닙니다. 특히 agent가 넓은 범위의 import를 추가하거나 비슷한 테스트를 대량 생성하면, 생성은 빨라져도 review 표면과 CI 시간이 함께 늘어날 수 있습니다.

다음 두 팀을 비교해 보세요.

관측팀 A팀 B해석
주당 PR 수7042A가 더 빠르다고 단정할 수 없다
PR당 변경 파일 p50186A의 reviewer 맥락 비용이 더 클 수 있다
첫 유효 리뷰 p9531시간5시간A의 병목은 작성이 아니라 대기다
merge 뒤 7일 내 수정 PR 비율24%8%A의 재작업 또는 검증 공백을 조사해야 한다
production rollback/disable 시간 p9542분9분B가 위험을 더 빨리 제한할 수 있다

이 숫자는 팀 우열표가 아닙니다. A가 더 어려운 도메인이나 incident 대응을 맡을 수도 있습니다. 중요한 것은 PR 수 증가를 성공으로 선언하기 전에, 같은 서비스 tier·변경 유형·기간에서 대기와 재작업이 어떻게 바뀌었는지 보는 것입니다. 저장소별 실행 계약이 필요한 이유도 여기 있습니다. agent가 특정 repo에서 어떤 테스트·의존성·배포 규칙을 통과해야 하는지 모르면, 생성량 비교는 의미가 없습니다.

2) Review latency는 사람의 속도 문제가 아니라 시스템의 신호다

“리뷰가 늦다”를 reviewer 개인의 응답 시간으로 환원하면 해결책이 야근·알림·승인 버튼이 되기 쉽습니다. 실제로는 다음 원인이 더 흔합니다.

  • PR이 너무 커서 reviewer가 변경 의도와 rollback 경로를 재구성해야 한다.
  • agent가 만든 파일·의존성·generated artifact가 섞여 핵심 로직을 보기 어렵다.
  • required check가 40분 걸리거나 flaky test 때문에 재실행 queue가 쌓인다.
  • owner·보안·플랫폼 승인 경로가 불명확해 PR이 여러 팀 사이에서 멈춘다.
  • reviewer가 “테스트가 있다”는 사실은 보지만, 어떤 행동을 증명하는지는 확인하기 어렵다.

따라서 PR opened → first meaningful review, review requested → required checks green, checks green → merge를 나눠 보세요. 단순한 이모지 반응이나 자동 코멘트가 아니라, 승인·변경 요청·위험 질문처럼 의사결정에 기여한 첫 리뷰를 “유효 리뷰”로 정의해야 합니다. Reviewable Stack처럼 큰 작업을 독립적으로 검증 가능한 stack으로 나누면 PR 수는 늘 수 있어도 각 PR의 리뷰 시간과 rollback 범위는 줄어들 수 있습니다.

3) AI가 만든 테스트 수와 품질은 별개다

AI는 행복 경로와 비슷한 mock 테스트를 많이 만들기 쉽습니다. line coverage는 올라가지만 authorization boundary, retry 후 중복, schema migration, timeout 같은 실패 모드는 비어 있을 수 있습니다. 이때 “테스트 파일이 30% 증가했다”는 지표는 안전을 과대평가하게 합니다.

테스트의 가치를 보려면 수량 대신 변화에 대한 민감도를 살펴야 합니다. 중요한 서비스에는 선택적으로 mutation score, 변경한 조건문·권한 분기·에러 처리의 assertion, production defect의 회귀 테스트 추가 여부를 확인할 수 있습니다. Mutation Testing은 모든 PR을 느리게 만들기 위한 의식이 아니라, AI가 자주 건드리는 고위험 영역에서 “테스트가 실제 행동을 막는가”를 묻는 장치입니다.

실무 적용

1) 한 변경의 흐름을 여섯 구간으로 계측한다

먼저 모든 데이터를 완벽히 모으려 하지 말고 PR과 deploy record를 공통 change ID로 느슨하게 연결합니다. AI 사용 여부는 분석 차원일 수 있지만, 평가의 중심 키가 되어서는 안 됩니다.

작업 시작
  -> PR 생성
  -> 첫 유효 리뷰
  -> required checks 통과
  -> merge
  -> production 배포 / disable / rollback

각 구간에서 최소 지표를 정의합니다.

구간볼 지표시작 판단 기준
작성→PR준비 시간, diff 크기, 파일 수agent가 큰 diff를 만들면 stack 분할 후보로 표시
PR→첫 유효 리뷰p50/p95 대기, owner 누락률p95가 기준선보다 25% 이상 악화하면 원인 분해
리뷰→checks greenCI 시간, flaky rerun, 실패 유형20분 이상인 검증은 fast/slow lane 분리 검토
green→merge승인·정책 대기, merge queue agerisk label 없는 대기가 반복되면 ownership·규칙 개선
merge→deploy배포 lead time, canary 관찰고위험 변경은 관찰 window를 기록
deploy→복구rollback/disable time, 7일 내 rework기능 플래그로 10분 안에 위험을 제한할 수 있는지 확인

숫자는 서비스와 조직에 맞춰야 합니다. 핵심은 평균 하나가 아니라 p95와 segment를 보는 것입니다. agent가 만든 코드가 전체 평균 리드타임을 낮춰도, production 변경의 p95 review wait나 rollback 시간이 길어졌다면 확장 전에 멈춰야 합니다.

2) 위험도와 변경 크기를 함께 라벨링한다

AI 생성 PR을 별도 low-risk로 자동 분류하는 것은 안전하지 않습니다. 작은 diff도 IAM policy, 결제 계산, 데이터 삭제, dependency 추가라면 high-risk일 수 있습니다. 반대로 문서·테스트 fixture·검증된 내부 refactor는 사람이 쓴 큰 파일 변경보다 위험이 낮을 수 있습니다.

처음에는 아래 네 가지 label만으로 충분합니다.

label예시기본 경로
low문서, 내부 test fixture, allowlisted lint fix자동 check + owner 1명
standard서비스 로직, 작은 API 확장테스트·리뷰 1명 + canary 가능 여부
highauth, 결제, 데이터 migration, 외부 egressdomain owner + 별도 검증·rollback 계획
blockedbroad admin, data delete, 승인 우회, 미검증 dependencyagent 자동 merge 금지, 명시 승인 lane

이 label은 사람과 agent에 똑같이 적용해야 합니다. 그래야 “AI 때문에 느려졌다”와 “원래 위험한 변경이라 느려야 했다”를 구분할 수 있습니다. Dependency Budget에서 제안한 것처럼, dependency 추가는 코드 라인 수와 별개로 보안·업데이트·빌드 비용을 만들므로 high-risk 신호로 올릴 근거가 됩니다.

3) 2주 canary에서 결과가 아닌 변화량을 비교한다

새 agent workflow를 전 조직에 열기보다, 서비스 한두 개와 반복 작업 한 종류로 2주 canary를 합니다. 같은 repo와 비슷한 risk label의 기준선 기간을 잡고 다음을 비교합니다.

  • median과 p95의 first meaningful review latency
  • PR당 변경 파일 수, stack으로 분할된 비율, required check 시간
  • merge 뒤 7일 내 rework PR과 escaped defect
  • production change의 rollback/disable time, incident 발생 여부
  • reviewer가 “의도 불명확”으로 남긴 변경 요청 비율

예를 들어 standard risk PR의 p50 리드타임은 18% 줄었지만 p95가 35% 늘고 rework가 10%p 올랐다면, 도입을 성공이라고 발표할 단계가 아닙니다. agent 생성 범위를 줄이거나, PR template에 change intent·검증 결과·rollback을 강제하거나, stack 분할과 dependency gate를 보강해야 합니다. 반대로 작성 시간만 줄고 review p95가 같다면, 병목은 agent가 아니라 reviewer capacity·CI·ownership에 있을 가능성이 큽니다.

4) 지표를 개인 순위표가 아니라 개선 queue로 쓴다

코드 생성량을 개인 KPI로 쓰면 agent가 만든 넓은 diff를 사람이 제출하거나, 작은 PR을 인위적으로 쪼개거나, 위험한 오류를 숨기는 행동을 유도할 수 있습니다. review latency를 reviewer 순위로 공개해도 비슷한 일이 생깁니다. 유효한 지표는 불편한 진실을 드러내도 보상·인사 판단과 바로 연결되지 않아야 합니다.

대신 팀 dashboard에서는 서비스·workflow·risk label 수준으로 집계하고, 주간 개선 queue를 만드세요. 예를 들어 “payments standard PR의 checks-green 대기가 28분”이면 CI cache나 integration environment를 고칠 일이고, “platform high-risk PR의 첫 리뷰 p95가 36시간”이면 backup reviewer·ownership map·승인 SLA를 정할 일입니다. 개선 대상은 사람이 아니라 흐름입니다.

트레이드오프/주의점

지표를 늘릴수록 정확해지는 것은 아닙니다. 모든 tool call, prompt, token, keystroke를 수집하면 개인정보·감시·비용 문제가 생기고 개발자는 측정 자체를 우회합니다. 필요한 것은 agent의 내부 사고 과정을 전부 모으는 일이 아니라, 변경이 어떤 위험도로 어떤 검증을 거쳐 실제로 어떤 결과를 냈는지의 최소 운영 증거입니다.

또한 AI 사용 여부를 인과관계로 과신하면 안 됩니다. 도입 초기에는 쉬운 작업부터 agent에 맡기기 때문에 평균 리드타임이 좋아 보일 수 있고, 반대로 어려운 migration만 agent에 맡기면 나빠 보일 수 있습니다. risk label, repo, 변경 유형, 배포 환경을 함께 비교하고, 가능하면 같은 workflow의 전후 기간을 봐야 합니다.

마지막으로 빠른 merge 자체가 목표는 아닙니다. high-risk 변경에서 reviewer가 멈추고 질문하는 시간은 낭비가 아니라 위험을 줄이는 투자일 수 있습니다. 좋은 시스템은 모든 PR을 같은 속도로 밀어내지 않습니다. 낮은 위험에는 빠른 golden path를 주고, 높은 위험에는 근거·승인·관찰·rollback의 시간을 의도적으로 배정합니다.

체크리스트 또는 연습

  • PR 생성부터 첫 유효 리뷰, checks green, merge, deploy, rollback/disable까지의 시간축을 같은 change ID로 볼 수 있다.
  • PR 수·라인 수·agent 실행 횟수를 개인 성과나 단독 생산성 지표로 사용하지 않는다.
  • low/standard/high/blocked risk label이 AI·사람 변경에 동일하게 적용된다.
  • 평균뿐 아니라 risk label·repo·workflow별 p95 review wait와 rework 비율을 본다.
  • 테스트 수·coverage 외에 고위험 변경의 mutation, failure mode, escaped defect를 선택적으로 확인한다.
  • 2주 canary에서 기준선 대비 lead time, review p95, CI 대기, rework, rollback 시간을 비교한다.
  • 대시보드의 이상치는 개인 순위가 아니라 CI·ownership·template·platform 개선 queue로 전환된다.

연습으로 지난달의 standard-risk PR 20개를 무작위로 골라, PR 생성 → 첫 유효 리뷰 → checks green → merge → 배포 시간을 적어 보세요. 이어서 AI가 생성한 PR과 그렇지 않은 PR을 단순 평균으로 비교하지 말고, 변경 파일 수와 risk label로 나눈 뒤 p95 review wait와 7일 내 rework를 비교합니다. 그 결과 “작성”이 아니라 “검토·검증·복구” 중 어디가 긴지 보이면, 다음 투자도 모델 교체가 아니라 그 병목의 owner와 규칙을 고치는 쪽으로 정할 수 있습니다.

관련 글