Day 79 · 5/5
🌳 고급 development

기술 부채가 뭔가요?

쉽게 이해하기

시험 전날 벼락치기로 공부하면 당장 시험은 통과하지만, 나중에 심화 과목을 들을 때 기초가 없어서 고생하는 것처럼, 개발도 당장 급하다고 대충 짜면 나중에 유지보수 비용이 몇 배로 커집니다. 이게 기술 부채입니다.

핵심 정리

빠른 개발을 위해 임시방편으로 짠 코드가 쌓여서 나중에 갚아야 할 빚처럼 작용하는 것입니다.

자세히 알아보기

기술 부채(Technical Debt)는 단기적으로 빠른 개발을 위해 최선의 설계나 코드 품질을 희생한 결과, 나중에 더 많은 비용을 치르게 되는 상황을 말합니다. 예를 들어 '일단 되게만 만들자'며 중복 코드를 양산하거나, 테스트 코드를 건너뛰거나, 문서를 안 쓰면, 나중에 버그를 고치거나 기능을 추가할 때 엄청난 시간이 듭니다. 기술 부채는 의도적으로 생기기도 하고 비의도적으로 생기기도 합니다. 의도적 부채는 '일단 출시하고 나중에 리팩토링하자'는 전략적 선택입니다. 스타트업에서 빠른 MVP(Minimum Viable Product) 출시를 위해 코드 품질을 일부 희생하는 것이 대표적입니다. 반면 비의도적 부채는 개발자가 미숙해서, 혹은 기술이 발전해서 옛날 코드가 레거시가 되는 경우입니다. 실무에서 기술 부채는 계속 쌓이면 '레거시 시스템'이 됩니다. 코드 수정에 며칠씩 걸리고, 새 개발자는 온보딩에 한 달 이상 필요하며, 작은 버그 하나 고치는데 다른 곳이 망가지는 일이 반복됩니다. 그래서 기술 부채는 '이자'가 붙는다고 표현합니다. 방치할수록 갚기 어려워지고, 결국 전체 시스템을 새로 만드는 수준의 비용이 듭니다. 기술 부채를 관리하려면 정기적으로 리팩토링 시간을 확보하고, 코드 리뷰로 나쁜 코드가 쌓이는 걸 막으며, 테스트 코드로 안정성을 유지해야 합니다. '일단 돌아가게' 만든 후에는 반드시 '제대로 돌아가게' 고치는 시간을 확보하는 것이 중요합니다. 부채를 전혀 안 지는 건 불가능하지만, 관리 가능한 수준으로 유지하는 게 핵심입니다.