본문 바로가기
업무관련공부&이슈

레거시 시스템이란 뭘까?

by hyeongjin's_life 2012. 12. 5.



 흔히들 프로젝트를 할때나 제품을 개발할 때 기존에 있던 시스템을 레거시 시스템이라고 한다. 그런데 구체적으로 무엇을 레거시 시스템이라고 하는걸까?
요즘 읽고 있는 린소프트웨어 개발의 적용이란책을 보니 '테스트로 보호되지 않는 시스템' 이라고 레거시 시스템을 정의하고 있다. 여기서 테스트는 물론 자동화된 테스트를 말하는 것이다.
이 정의에 따르자면 딸린 테스트 없이 소프트웨어를 개발하는 매 순간 레거시 코드를 개발하는 것이 된다. 그렇다면 이 레거시 시스템을 어떻게 해야 될까? 책에서는 다음과 같은 방법을 제시한다.

1. 다시 짜고 내다 버린다.
2. 리팩터링으로 굴복시킨다.
3. 질식시킨다.

1번은 특히 레거시 소프트웨어를 아예 다시 짜는 방법이기 때문에 관리자들에게 매력적으로 느껴질수있다. 하지만 추적기록이 잘 남지 않기 때문에 리스크가 너무 높다.

두번째 시스템을 리팩터링하는 경우가 더 나은 방법인 경우가 많지만 레거시 시스템은 말 그대로 테스트 하니스가 없는 시스템이다. 그래서 첫 단계가 의존도를 깨트리는 것이고 독립적인 코드 주변에 테스트를 추가하여 리팩터링이 가능하게 해야 한다. 
하지만 이게 말이 쉽지 진짜 레거시 시스템은 단위 테스트를 추가하는게 거의 불가능에 가깝다 -.- 
아마도 내가 Working Effectively with Legacy Code라는 책과 Mock object를 몰랐다면 시도자체를 안했을것 같다. 하지만 위의 책은 레거시 코드를 리팩토링하는데는 거의 바이블과 다름없다. 심지어 저자는 레거시 코드를 리팩토링하는 과정을 즐긴다고 한다 -.-  레거시 코드와 리팩토링에 관심있는 사람은 필독서중의 하나이고 최근에 번역서도 나온걸로 알고 있다.

질식시키는 방법은 레거시 코드의 일부분이라도 건드릴 기회가 있을 때마다 포도 덩굴처럼 질식시키는 코드를(물론 자동화된 테스트와 함께) 추가하는 방법이다. 변경해야 하는 아주 일부분이라도 새로운 코드를 만들어 기존 코드를 대체하도록 한다.  점차적으로 새 코드와 데이터베이스를 구축하여 결국 실제로 사용되고 있는 오랜 시스템의 각 부분들이 전부 대체되었음을 발견하게 된다.

하지만 사실 어떤게 정답인지는 아직도 모르겠다. 리팩터링하는 데 드는 비용이 너무 크면 사실 내다버리고 다시짜거나 질식시키는 방법도 해결책 중의 하나일지도 모른다.


'업무관련공부&이슈' 카테고리의 다른 글

SAP 자재마스터  (0) 2013.03.11
BSC란 무엇인가…지속적인 경쟁우위 창출 '전략 툴', CSR이란 무엇인가  (0) 2012.12.06
SAP R/3  (0) 2012.12.05
ERP 구축의 진정한 목적  (0) 2012.12.05
SAP, ERP란?  (0) 2012.12.05