콘텐츠로 바로가기

Technical Debt

빠른 배포를 위해 더 나은 설계를 나중으로 미룬 결과 생기는 추가 작업 비용. Ward Cunningham이 금융 부채 비유로 도입. 신중한 의도적 부채만 전략적으로 수용 가능. 나머지는 최소화 대상.

sys.entry
M

Me

hyunyoun's Blog

software-engineering-devops1 min read

Technical Debt

빠른 배포를 위해 더 나은 설계를 나중으로 미룬 결과 생기는 추가 작업 비용. Ward Cunningham이 금융 부채 비유로 도입.

사분면 분류 (Martin Fowler)

신중한(Prudent) 무분별한(Reckless)
의도적 "지금 출시, 나중에 리팩터" "설계할 시간 없어"
비의도적 "이제 더 나은 방법을 알았어" "레이어가 뭔지 몰랐어"

신중한 의도적 부채만 전략적으로 수용 가능. 나머지는 최소화 대상.

비용 구조

CODE
초기 절약 = 빠른 출시 이점
이자 = 매 스프린트 느려지는 개발 속도
원금 = 리팩터링 비용
복리 효과 = 부채가 부채를 낳음 (얽힘 증가)

측정 지표

  • 코드 복잡도(Cyclomatic Complexity): 분기 수
  • 중복도: 복사-붙여넣기 코드 비율
  • 테스트 커버리지: 낮을수록 리팩터링 비용 증가
  • 빌드 시간: 아키텍처 결합도의 간접 지표

상환 전략

  • 보이 스카우트 규칙: 건드린 코드는 오기 전보다 깨끗하게
  • 기술 부채 스프린트: 주기적 전담 스프린트
  • 스트랭글러 패턴: 레거시를 점진적으로 새 구현으로 교체

연결 노트