기타 Lobsters · 2026-10-15

"코드 짜고 나면 유지보수에 시간 얼마나 뺏길까?" 유명 오픈소스 깃 커밋 까봤더니

핵심 요약
  • 개발에 1달을 쓰면 첫해 10일, 이후 매년 5일의 유지보수가 필요하다는 가설 모델을 실제 Git 커밋 데이터로 검증했습니다.
  • tmux 분석 결과 전체 작업량의 약 3분의 2가 유지보수였으며, 모델의 예측치가 초기에는 맞다가도 장기적으로는 실제보다 과대평가되는 한계가 있었습니다.
  • nginx, Rust, VS Code 등은 유지보수량이 과대평가된 반면 Neovim은 오히려 과소평가되는 등 프로젝트 특성에 따라 차이가 나타났습니다.
요약 소프트웨어 개발에서 새로운 기능을 추가하는 것 못지않게 중요한 것이 유지보수입니다. 개발 방법론 전문가 제임스 쇼어(James Shore)는 1인·월(person-month) 단위로 코드를 작성할 때마다 첫해에는 10일, 이후 매년 5일의 유지보수가 발생한다는 가설적 임계값 모델을 제시한 바 있습니다. 최근 한 엔지니어가 이 가설이 실제 오픈소스 프로젝트에서도 성립하는지 검증하기 위해 Git 커밋 로그를 직접 분석했습니다. 분석 대상 중 하나인 터미널 멀티플렉서 tmux의 경우, 2008년 시작부터 현재까지 투입된 총 66만 라인의 작업량 중 신규 개발은 약 23만 라인(약 3분의 1)에 불과했고 나머지 43만 라인이 유지보수에 소모된 것으로 나타났습니다. 2008년부터 2022년까지는 제임스 쇼어의 임계값 모델이 실제 유지보수 누적 추이와 제법 비슷하게 맞아떨어졌으나, 모델의 지수적 성격 때문에 장기적으로는 실제 수행된 유지보수보다 훨씬 가파르게 증가하며 예측이 빗나갔습니다. 또한 nginx, Rust, VS Code, Go 같은 대형 프로젝트에서는 이 모델이 유지보수 작업량을 과대평가하는 경향을 보였습니다. 예컨대 nginx의 경우 실제 유지보수 비율은 63% 수준이었으나 모델 예측치는 81%에 달했습니다. 반면 Neovim처럼 프로젝트 초기부터 유지보수 비중이 매우 높았던 경우(실제 83% vs 모델 예측치 70%)에는 오히려 유지보수 요구량을 과소평가하는 등 프로젝트의 특성에 따라 모델 적합도에 큰 차이가 있었습니다.
Sponsored · 광고