레거시

legacy. 유산이라는 뜻의 영단어.

현재까지 남아 사용되고 있거나 현재의 체계에 영향을 미치는 과거의 낡은 체계를 뜻한다.

1 레거시 시스템

legacy system. 컴퓨터 용어로는 하위 호환을 위해 신규 프로그램 속에 남겨두는 기존 프로그램의 소스 코드를 뜻한다.

1.1 필요성

현재 사용되고 있는 소스 코드보다 더욱 효율적인 소스 코드가 개발되었다고 할 때, 해당 프로그램의 다음 업데이트 버전에서는 프로그램 효율성 증가를 위해 새로 개발된 소스 코드를 사용한다. 그러나 이를 위해 기존의 소스 코드를 모두 삭제하거나 수정해 버리면, 기존 프로그램을 이용해왔던 사람들이 순식간에 해당 프로그램을 사용하지 못하게 되는 사태가 일어난다.[1] 온라인 게임이나 온라인 연동 모바일 앱에서는 강제 업데이트를 통해 해결하지만, 온라인 연동 없이 오프라인 환경에서 사용되는 프로그램처럼 업데이트를 강제할 수 없는 상황에서는 업데이트를 하지 않은 버전으로도 작동이 되도록 하위 호환을 제공해줄 필요가 있다.

1.2 문제점

그러나 기존 시스템이 내부적으로 가지고 있는 버그 등의 문제를 새 버전에서도 그대로 짊어지고 가야 한다. 하위 호환을 위해 지속적으로 추가되는 소스 코드가 세월이 흐를수록 프로그램 내부에 쌓이고 쌓여 소스 코드가 지나치게 복잡해지고, 충돌 등의 새로운 문제를 일으키기도 한다. 새 시스템과 기존 시스템이 상충될 경우 기존 시스템을 버리는 게 아니라 새 시스템 도입을 하지 않는 선택을 하게 되기도 한다. 잘 쓰던 옛날 제품 버리고 새 제품 사기에는 돈이 아깝다 ActiveX와 이에 의존적인 대한민국의 인터넷 환경이 대표적인 예다.

1.3 해결책

호환성을 위한 레거시 지원은 단기적으로는 필요하나, 장기적으로는 언젠가 총대를 메고 기존 시스템을 폐지하는 개혁이 필요하다. 물론 갑작스러운 레거시 폐지는 혼란을 가져올 우려가 있으므로, 충분한 기간을 두고 레거시 폐지를 예고한 후 이 기간 동안 사용자 층의 사전 준비와 공감대를 이끌어내는 것이 중요하다. 그 예로 마이크로소프트에서는 인터넷 익스플로러에서 레거시 코드를 계속 지원해 왔으나, Windows 10으로 넘어오면서 레거시 코드를 포기하고 새롭게 만든 엣지를 출시했다. 기존 인터넷 익스플로러에서만 작동되던 사이트 이용을 위해 익스플로러 11 버전을 동봉하고 있으나, 이를 잘 보이지 않게 작업표시줄과 시작메뉴 최상단에 고정시키지 않고 보조프로그램 디렉토리에 두는 등의 방법으로 이용자들이 찾기 어렵게 숨겨놓음으로써 엣지로 넘어오도록 유도하고 있다.

나무위키의 자체 엔진에서는 모니위키의 기존 문법을 호환시키기 위해 대부분의 모니위키 문법을 그대로 쓰고 있지만, 목차 문법 등 모니위키와 달라진 문법은 봇을 돌려서 모든 문서에 적용시키는 방법으로 해결했다. 또한 2015년에 분류 시스템을 추가했으나, 아직 분류가 되어있지 않은 문서들이 많기에, 분류 시스템이 없는 모니위키 체계에서의 리그베다 위키에서 사용되던 '분류 정보' 메타문서를 그대로 남겨두고 있다.

1.4 관련 문서

2 창작물에서의 레거시

  1. 멀리 갈 것도 없이 애플이 이런 행보를 많이 보여 주고 있다. 아이폰은 예외사항이긴 하지만(...).