POOOLING FOREST
레거시를 자산으로 바꾸는 기술: DDT 분해에서 배운 리팩토링의 미학 - 레거시 코드를 단순한 부채가 아닌 귀중한 자산으로 바꾸는 관점의 전환. ETH 취리히의 DDT 분해 기술에서
Engineering & Tech

레거시를 자산으로 바꾸는 기술: DDT 분해에서 배운 리팩토링의 미학

레거시 코드를 단순한 부채가 아닌 귀중한 자산으로 바꾸는 관점의 전환. ETH 취리히의 DDT 분해 기술에서 배운 지속 가능한 리팩토링 전략을 공유합니다.

송찬영

CTO

안녕하세요. 풀링포레스트 CTO 송찬영입니다.

개발자로서 가장 마주하기 싫은 순간이 언제인가요? 저는 단연코 '아무도 손대고 싶어 하지 않는 거대한 레거시 코드'를 마주할 때라고 생각합니다. 건드리면 터질 것 같고, 그냥 두자니 전체 시스템의 발목을 잡는 그런 존재들 말이죠. 우리는 이런 코드를 보며 한숨을 쉬고, 종종 "차라리 싹 밀어버리고 다시 짜자"는 유혹에 빠지곤 합니다.

최근 흥미로운 소식을 하나 접했습니다. 스위스 취리히 연방 공과대학(ETH Zurich) 연구팀이 개발한 새로운 환경 정화 기술에 관한 이야기인데, 이 기술의 원리가 우리 개발자들이 '기술 부채'를 대하는 태도에 큰 시사점을 줍니다.

연구의 핵심은 20세기의 골칫덩어리였던 DDT나 린단(Lindane) 같은 강력한 살충제를 처리하는 방법입니다. 이 물질들은 '지속성 유기오염물질(POPs)'이라 불릴 만큼 끈질깁니다. 수십 년이 지나도 썩지 않고 생태계에 축적되죠. 마치 우리 시스템 깊숙한 곳에 박혀 온갖 의존성을 만들어내는 스파게티 코드처럼 말입니다.

기존에는 이 오염물질들을 처리하는 방식이 비효율적이었습니다. 고온 소각 같은 방식은 비용도 많이 들고, 또 다른 유해 물질을 만들어내기도 했죠. 우리 식으로 말하면, 레거시를 걷어내기 위해 '빅뱅 리라이트(Big Bang Rewrite)'를 감행했다가 서비스 장애를 일으키거나 팀 전체가 번아웃에 빠지는 상황과 비슷합니다.

그런데 ETH 연구팀은 '교류 전기분해(Alternating Current Electrolysis)'라는 방식을 도입해 놀라운 결과를 만들어냈습니다.

이 방식의 핵심은 단순히 독성 물질을 '파괴'하는 데 그치지 않는다는 점입니다. 독성을 유발하는 할로겐 원자는 소금(NaCl)처럼 무해한 성분으로 격리하고, 남은 탄소 골격은 화학 산업에서 요긴하게 쓰이는 고부가가치 원료(벤젠 등)로 전환해 버립니다. 심지어 가정용 전기 파형과 유사한 교류를 사용해 전극 마모를 줄이고, 독성 가스 발생 같은 부작용(Side Effect)도 억제했습니다.

이 기사를 읽으며 저는 뒤통수를 맞은 듯한 기분이 들었습니다.

"우리는 기술 부채를 단순히 '제거해야 할 쓰레기'로만 보고 있지 않은가?"

풀링포레스트에서도 초기에 급하게 작성된 인증 모듈이 있었습니다. 너무 복잡하게 얽혀 있어 누구도 수정하고 싶어 하지 않는 'DDT' 같은 존재였죠. 처음엔 저도 이걸 들어내고 최신 프레임워크로 갈아끼우는 것만 생각했습니다. 하지만 ETH 연구진의 접근법처럼, '전환(Transformation)'의 관점에서 문제를 다시 보기로 했습니다.

우리는 그 복잡한 레거시 코드를 무작정 삭제하는 대신, 그 안에 녹아 있는 비즈니스 로직(탄소 골격)을 추출하는 데 집중했습니다. 코드는 엉망이었지만, 그 안에는 수년간의 예외 처리와 고객 요구사항이라는 귀중한 자산이 들어 있었기 때문입니다.

저희는 Claude와 같은 AI 도구를 활용해 레거시 코드를 분석하고, 그 안에서 핵심 로직만을 발라내어 문서화했습니다. 그리고 그 로직을 기반으로 테스트 케이스를 생성했습니다. 즉, '독성(난해한 코드 구조)'은 제거하고 '가치(검증된 비즈니스 규칙)'는 재활용하여 새로운 마이크로서비스의 기반으로 삼은 것입니다.

이 과정은 마치 ETH 연구진이 오염된 토양을 현장에서 바로 정화하여 유용한 자원으로 바꾸는 것과 흡사했습니다.

  1. 현장성: 연구진이 이동식 장비를 만들어 오염된 토양을 그 자리에서 처리했듯, 우리도 별도의 TF팀을 꾸려 격리된 환경에서 개발하는 것이 아니라, 현재 운영 중인 CI/CD 파이프라인 내에서 점진적으로 리팩토링을 수행했습니다.

  2. 부작용 억제: 교류 전기를 사용해 독성 가스를 막았듯, 우리는 스트랭글러 패턴(Strangler Pattern)을 사용해 기존 서비스에 영향을 주지 않으면서(부작용 억제) 기능을 하나씩 전환했습니다.

  3. 순환 경제: 쓰레기가 원료가 되듯, 과거의 코드가 미래 시스템의 견고한 명세서가 되었습니다.

기술 리더로서 우리는 종종 '새로운 것'에만 열광합니다. 하지만 진정한 엔지니어링의 묘미는 가장 더럽고 기피하고 싶은 문제를 가장 우아하고 효율적인 방법으로 해결할 때 드러납니다.

여러분의 프로젝트 어딘가에도 묻혀 있을 'DDT'를 한번 찾아보세요. 그것을 혐오스러운 오염물질로 볼 것인지, 아니면 가공되지 않은 원석으로 볼 것인지는 우리의 관점에 달려 있습니다. 무작정 폐기하기보다, 그 안에서 어떤 가치를 추출해 새로운 동력으로 삼을 수 있을지 고민해 보는 하루가 되었으면 합니다.

레거시는 짐이 아니라, 아직 정제되지 않은 자산일지도 모르니까요.

지금 읽으신 내용, 귀사에 적용해보고 싶으신가요?

상황과 목표를 알려주시면 가능한 옵션과 현실적인 도입 경로를 제안해드립니다.