2026. 6. 27.
지우는 것도 실력이다 — 대규모 레거시에서 죽은 코드를 안전하게 걷어내기

기능을 추가하는 일은 익숙하지만, 무언가를 지우는 일은 의외로 더 어렵습니다. 특히 수년간 운영된 대규모 시스템에서는 "이걸 지워도 정말 괜찮을까?"라는 질문에 자신 있게 답하기가 쉽지 않죠. 이번 글은 천 개가 넘는 화면을 가진 레거시 PMS를 정리하며 배운, 안전하게 걷어내는 법에 대한 이야기입니다.
쌓이기만 한 것들
오래된 시스템에는 더 이상 쓰지 않는 것들이 곳곳에 남아 있었습니다.
- 어디서도 호출되지 않는 죽은 코드와 함수
- 이미 사라진 파일을 가리키는 깨진 참조
- 같은 역할의 중복 폴더
- 더 이상 쓰지 않는 상용 에디터·차트 라이브러리 (수십 MB)
- 미사용 이미지와 백업·임시 파일
이런 잔재는 단순히 용량만 차지하는 게 아닙니다. 새로 합류한 개발자가 "이게 진짜 쓰이는 코드인가?"를 매번 의심하게 만들고, 검색 결과를 어지럽히며, 결국 변경을 두렵게 만듭니다.
안전하게 지우는 세 가지 원칙
무작정 지우면 사고가 납니다. 다음 원칙을 지켰습니다.
- 지우기 전에 전수 조사한다. 삭제 후보가 정말 어디서도 참조되지 않는지 코드 전체를 검색해 확인했습니다. "안 쓰는 것 같다"가 아니라 "참조 0건"을 근거로 삼았습니다.
- 한 번에 하나씩, 되돌릴 수 있게. 버전 관리를 활용해 작은 단위로 삭제하고 커밋했습니다. 문제가 생기면 해당 변경만 되돌리면 됩니다.
- 삭제 후 실제 화면을 확인한다. 정적 검색만으로는 부족합니다. 정리 후 관련 화면이 정상 동작하는지 직접 열어봤습니다.
실패에서 배운 교훈
그럼에도 사고는 있었습니다. 정리 과정에서 여전히 쓰이고 있던 파일 하나를 실수로 삭제했고, 그 결과 30개에 가까운 화면에서 오류가 발생했습니다.
원인은 사소했습니다. 파일 이름의 대소문자를 오판한 것이죠. "안 쓰는 파일"로 분류했지만 실제로는 다른 이름의 같은 파일이 활발히 쓰이고 있었습니다. 다행히 작은 단위로 커밋해 둔 덕분에 곧바로 복원할 수 있었습니다.
교훈: 검색 결과를 너무 빨리 믿지 말 것. 그리고 언제나 되돌릴 수 있는 상태를 유지할 것.
이 경험은 위의 원칙을 더 단단하게 만들어 줬습니다. 특히 운영 중인 화면 단위의 동작 확인이 정적 분석만큼 중요하다는 것을요.
정리가 남긴 것
대청소의 결과는 숫자로도, 체감으로도 분명했습니다. 저장소는 수백 MB 가벼워졌고, 깨진 참조는 사라졌으며, 남은 코드는 "지금 쓰이는 것"만으로 채워졌습니다.
무엇보다 가장 큰 수확은 신뢰입니다. 검색하면 진짜 쓰이는 코드만 나오고, 화면 하나를 고칠 때 더 이상 유령 같은 코드에 발목 잡히지 않습니다. 잘 지운 코드는, 잘 쓴 코드만큼이나 시스템을 건강하게 만듭니다.