레거시 코드는 안 아름다움
개요
레거시 코드의 아름다움 - 레거시 존중의 필요성이라는 글에서 레거시 코드의 가치를 논했다.
그러나 이는 '레거시 코드: 희망편'이라고 할 수 있으며,
긍정적인 측면을 과장했다는 점을 인정해야 한다.
현실에서 레거시 코드의 문제점은 결코 쉽게 해결할 수 있는 것이 아니다.
문제점
-
기술 부채의 증가
- 문제점:
시간이 지날수록 기술 부채가 눈덩이처럼 불어난다.
"나중에 고치자"가 영원한 "나중에"가 되곤 한다. - 현실
새 기능 추가 시 기존 코드를 건드리지 않으려고 꼼수를 쓰다 보면, 코드는 점점 더 복잡해진다.
- 문제점:
-
유지보수의 어려움
- 문제점:
문서화 부족, 복잡한 의존성, 일관성 없는 코딩 스타일로 인해 코드 이해가 어렵다. - 현실:
"이 함수가 뭘 하는 건지 3일째 파악 중입니다"라는 말이 팀 내에서 농담이 아닌 현실이 되곤 한다.
- 문제점:
-
보안 취약성
- 문제점:
오래된 라이브러리와 프레임워크는 알려진 보안 취약점에 노출될 수 있다. - 현실:
"업데이트하면 다른 게 깨질까봐 걱정돼요"라는 말이 보안 업데이트를 미루는 핑계가 되곤 한다.
- 문제점:
-
성능 및 확장성 제한
- 문제점:
레거시 시스템은 현대적인 대규모 트래픽이나 데이터를 처리하기에 적합하지 않을 수 있다. - 현실:
서비스가 성장할수록 야근의 주된 이유가 "서버가 또 죽었어요" 로 바뀌는 경험을 하게 된다.
- 문제점:
-
개발자 사기 저하
- 문제점:
최신 기술을 배우고 싶어하는 개발자들의 의욕이 꺾이기 쉽다. - 현실:
"이 기술, 스택 오버플로우에 질문해도 답변이 안 달려요"라는 농담 섞인 불평이 나오기 시작한다.
- 문제점:
-
비즈니스 대응력 저하
- 문제점:
새로운 비즈니스 요구사항에 신속하게 대응하기 어려워진다.. - 현실:
"그 기능 추가하려면 6개월은 걸릴 것 같아요"라는 말이 비즈니스 팀의 한숨을 자아낸다.
- 문제점:
-
높은 유지 비용
- 현상:
레거시 시스템 유지에 드는 비용이 점점 증가한다. - 아이러니:
"새로 만드는 게 더 싸겠어요"라는 말이 농담이 아닌 진지한 제안으로 들리기 시작한다.
- 현상:
결론
레거시 코드는 양날의 검과 같다.
그 안에 담긴 경험과 안정성은 분명 가치가 있지만, 동시에 현대 소프트웨어 개발의 발목을 잡는 요인이 될 수 있다.
중요한 것은 균형 잡힌 시각이다.
레거시 코드의 가치를 인정하면서도, 점진적인 개선과 현대화를 위한 노력을 게을리하지 말아야 한다.
때로는 레거시 코드와 씨름하며 얻는 경험이 우리를 더 나은 개발자로 만들어주기도 하니까.
그러니 레거시 코드를 대할 때는 인내심을 가지고, 배움의 자세로 접근하되, 개선의 여지는 늘 열어두는 것이 좋겠다.
그리고 가끔은... 그냥 깊은 한숨을 내쉬어도 괜찮지 않을까?
댓글
첫 번째 댓글을 남겨보세요.