이전

그 시절엔 이유가 있었던 기술 레거시에 대한 생각

레거시 시스템이라고 하면 막연히 좋지 않은 인상을 느끼는 경우가 많습니다. 낡은 기술이 곧 질이 낮은 코드와 구조로 이어진다고 여겨지기도 하죠. 물론 수년 전 개발된 레거시 시스템을 처음 열어보면 지금은 잘 쓰이지 않는 기술로 이루어진 코드에 당황스러워지기 마련이에요. 참고할 수 있는 문서나 주석 등이 남겨져 있지 않거나, 급한 일정에 맞춰 엉성하게 짜인 코드라면 더욱 곤란할 수밖에 없고요.

하지만 레거시(Legacy)가 곧 질 나쁜 코드나 구조를 의미하는 건 아닙니다. 단어대로 과거의 유산을 일컫죠.

개발자는 프로그래밍 기술을 통해 제품을 만들고, 문제를 해결하는 사람이에요. 이때 기술은 문제를 해결하기 위한 도구입니다. 시대가 변하면서 사용자의 요구사항과 조건은 더욱 복잡해지기 마련이고, 기존의 구조와 로직만으로는 해결하기 어려운 문제들이 자꾸 생겨나죠. 이를 해결하기 위한 기술 또한 계속해서 등장하고요. 즉 과거의 기술뿐만 아니라, 지금은 잘 쓰이지 않지만 현대 기술이 등장하는 데 영향을 준 기술 역시 레거시라고 부릅니다.

다만 트렌드가 지나 사람들이 잘 쓰지 않게 된 기술로 이루어진 시스템은 업데이트나 지원이 중단되거나, 생태계가 빈약해지면서 지속적인 유지보수와 운영에 어려움이 따를 수 있죠. 기업 차원에서는 해당 기술을 다루는 실력있는 인력을 선발하기 쉽지 않고, 기술을 보유한 당사자 역시 수요가 많은 최신 기술에 비해 양질의 일자리를 구하기 힘들고요.

물론 꼭 오래된 기술이기 때문에 유지보수가 어려운 건 아니에요. 무조건 모든 프로젝트를 새로운 기술로 갈아 엎어야 할 필요도 없고요. 다만 함께 일하는 사람과 환경이 선호하지 않아 함께 일할 때 어려움이 따르거나,해당 기술만으로 극복하기 어려운 한계가 나타나는데도 정체되어 있다면 효율적인 기술을 쓰고 있다고 하기는 어렵겠죠.

그래서 레거시라는 말 자체에 (부정적이든 낙관적이든) 너무 깊은 뜻을 둘 필요는 없을 것 같아요. 또, 레거시가 된 기술을 쓴다고 무조건 자신의 실력이나 위치를 평가절하할 필요도 없고요. 환경 여하를 떠나 구조를 깊이있게 고민하고, ‘좋은 코드’를 구현할 수 있는 역량을 갖춘다면 좋은 개발자라고 할 수 있지 않을까 싶습니다. 결국 모든 기술은 도구니까요!

출처 인프메이션