본문 바로가기

DevStory

레거시 리팩토링. 그 살 떨리는 즐거움.

앞선 포스트의 내용들은..
"짐승"님께서 댓글에 남겨주셨듯이..
최근에 진행 한 소스 리팩토링을 하면서 남겼던 포스트들이다.

검색 업무를 맡게 되면서
그리고 몇 개의 큰 프로젝트를 앞두고 중구난방으로 퍼져있고
너무 크기가 비대해진 클래스들과 로직을 정리를 해야겠다는 생각이 들었다.

코드의 크기를 줄이고 로직을 정리하는 것도 목적이고..
리팩토링을 하게 되면 내 스스로가 그 소스와 로직에 대해서
더 잘 알게 되기 때문이기도 하고...

좋은 의도와 뜻을 가지고 과감하게 실행해서
밀어붙였지만, 역시 24시간 서비스와 그 시간이 100% 돈으로 직결되는 커머스 비지니스에서
이 리팩토링 한 소스를 적용하기에는 많은 용기가 필요하다.
메서드의 정리, 로직 간소화, 클래스 크기 감소등 많은 작업을 하였다.
작업한 양이 많고, 줄어든 소스가 많기 때문에 더더욱 용기가 필요하다. -_-;

지금도 진행 중인 이 리팩토링 작업은
여전히 나를 살 떨리게 하고 있다.

UI가 바뀌거나, 기능이 바뀌는 것이라면
테스트도 좀 더 명확하겠건만..
이건 내부 로직만 변하고 겉으로 바뀌는 것은 하나도 없는지라..
더더욱 그런거 같다....

더군다나..
다른 곳에서는 안 쓰는 클래스, 메서드 같은데..? 하고 보면..
엉뚱한 곳에서 사용되고 있고...
클래스 하나가 20개가 넘는 메서드를 가지고 있는데
실제로 사용 되는 메서드는 단 한 개. 이런 클래스도 있다.

클래스를 수정하고 테스트를 할 만큼 했다라고 느낌에도 불구하고..
섣불리 이걸 반영하지 못 하겠다.. 라는 마음이 든다.

내가 모르는 어딘가에서 사이드 이펙트가 터지고 있을지도 모르기 때문에..

100% 테스트를 다 해서 문제 없이 배포하면 좋겠지만
그게 어디 말 처럼 간단한 일일까...
그래서 나는 할 만큼 했다. 라고 생각이 되면 과감하게 적용해버린다.
그리고 터지는 문제들은 확인 후 수정한다.

물론 메이저 기능들은 철저히 테스트를 해서
적용 후 터지는 사이드 이펙트는 다소 미미할 것이라고
예상하기 때문에 가능한 행동이기도 하지만...
하여간 무엇보다 용기와 실패를 두려워하지 않는 마음..
그리고, 그것을 용납해주는 조직의 분위기도 중요한 것 같다.

물론...
조직이 그걸 다 용납해주지는 않는다 -_-

시간이 돈이라니께..~

그냥 "악의는 없었어요. 용서해 주세요. 쥐 잡으려다 독을 깬 것 뿐이에요." 라고 말 할 뿐..-.-;

암튼.. 작년부터 꾸준히 진행한 리팩토링으로
상당히 많은 부분이 개선이 되었고
나 스스로도 레거시에 대한 분석을 많이 할 수 있게 되었다.

이렇게 한차례 지나고나면..
그 이후에 유지보수에 걸리는 비용과 시간이
상당히 감소한다. 그리고 그런데서 작은 보람도 느낀다.
(용식님~ 이 클래스 상당히 쓰기 편해졌어요~ 라는 말을 들을 때도 기쁘다.)

그래서 나는 오늘도 이 짓을 하고 있나보다 -_-