레거시 시스템

덤프버전 :

분류


1. 개요
2. 필요성
3. 문제점
4. 해결책
5. 관련 문서
6. 창작물에서의 레거시



1. 개요[편집]


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


2. 필요성[편집]


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


3. 문제점[편집]


그러나 기존 시스템이 내부적으로 가지고 있는 버그 등의 문제를 새 버전에서도 그대로 짊어지고 가야 한다. 하위 호환을 위해 지속적으로 추가되는 소스 코드가 세월이 흐를수록 프로그램 내부에 쌓이고 쌓여 소스 코드가 지나치게 복잡해지고, 충돌, 보안등의 새로운 문제를 일으키기도 한다. 실제로 2017년 워너크라이 랜섬웨어가 1990년에 만들어진 SMBv1의 보안 취약점을 파고 들어 웜 마냥 컴퓨터들을 감염시킨 바 있다.

또한 새 시스템과 기존 시스템이 상충될 경우 기존 시스템을 버리는 게 아니라 새 시스템을 도입하지 않는 선택을 하기도 한다. 물론 이 문제 역시 누적되면서 새 시스템의 도입은 하염없이 늦어지며, 레거시 인프라의 지원이 끝나는 순간 해당 시스템도 덩달아 지원이 끝난다. 어도비 플래시의 지원이 종료된 당시에 대비하지 못했던 플래시 게임들이 끝장난 것을 생각하면 쉽다.


4. 해결책[편집]


호환성을 위한 레거시 지원은 단기적으로는 필요하나, 장기적으로는 신규 시스템의 도입을 방해하고 보안을 저해하는 원인이 된다. 따라서 언젠가는 총대를 메고 기존 시스템을 폐지해야만 한다. 즉, 기존 시스템을 유지보수하면서 더 나은 시스템으로 옮겨야 한다. 이 과정을 이사에 빗대어 마이그레이션(Migration)이라 한다. (해시넷 위키 항목 참조) 물론 갑작스러운 레거시 폐지는 혼란을 가져올 우려가 있으므로, 충분한 기간을 두고 레거시 폐지를 예고한 후 이 기간 동안 사용자 층의 사전 준비와 공감대를 이끌어내는 것이 중요하다.

그 예로 Microsoft에서는 Internet Explorer에서 레거시 코드를 계속 지원해 왔으나, Windows 10으로 넘어오면서 레거시 코드를 포기하고 새롭게 만든 Microsoft Edge를 출시했다. 기존 인터넷 익스플로러에서만 작동되던 사이트 이용을 위해 IE를 동봉하고 있으나, 이를 잘 보이지 않게 작업표시줄과 시작메뉴 최상단에 고정시키지 않고 보조프로그램 디렉토리에 두고 엣지 내에 IE 모드를 넣어 놓는 등의 방법으로 이용자들이 찾기 어렵게 숨겨놓음으로써 엣지로 넘어오도록 유도하고 있다. 그리고 IE의 버전 업데이트를 중단하고 보안 업데이트만 지속하는 식으로 최신 웹 기술을 의도적으로 지원하지 않기 시작하면서 IE가 자연스레 도태되도록 유도하였고, 2020년대를 기점으로 대다수의 사이트들이 IE에서 깨져나오거나 아예 접속조차 안 되게 막아버리면서 IE는 완전히 버려졌다. 이후로도 Windows 10 기준으로 이미 삭제 수순에 들어갔고, 2022년에는 Windows Server 계열이나 Windows 10 Enterprise LTSB/LTSC 계열을 제외하고는[2] 아예 지원을 종료해버렸다. 그리고 Windows 11에는 아예 Internet Explorer가 없다.[3] 3D 핀볼은 코드조차 건지지 못한 뼈아픈 마이그레이션 실패 사례로 꼽힌다.

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

여담으로, 마이그레이션은 개발자의 밥줄이 되는 소양 중 하나이다. 그러나 아이러니하게도 서버 개발자들에게는 3D 작업 중 하나로 극도로 꺼리는 작업 중 하나이다. 비용 문제도 시간 문제도 있지만, 작업이 잘못됐다가는 중요한 데이터가 그대로 유실될 수 있기 때문이다.


5. 관련 문서[편집]



6. 창작물에서의 레거시[편집]


  • 보드게임에서 이전 플레이가 다음 플레이에 영향을 미치는 시스템을 레거시라고 부른다. 봉인된 상자를 열어 추가요소가 생기거나, 게임판에 스티커를 붙이고, 종이를 찢는 등의 효과[4]로 게임이 크게 변화하게 된다.
  • Geometry Dash에서는 150위권 밖으로 떨어진 데몬들을 Legacy Demon이라고 부른다.

[1] 멀리 갈 것도 없이 애플macOS가 이런 식으로 레거시의 ㄹ 자도 안 챙겨주는 행보를 보여주고 있다. iOS는 예외사항이긴 하지만.[2] Windows 8.1용 Internet Explorer 11은 2023년 1월 10일까지 지원되었으나, 현재는 해당 운영 체제의 지원이 종료되면서 Internet Explorer 11의 지원도 같이 종료되었다.[3] 다만 Microsoft Edge의 Internet Explorer 모드를 사용하거나, MFC 기반 응용 프로그램에서 mshtml.dll을 임베드시켜서 불러오는 것은 가능하다. 그래서인지 MFC 기반인 한컴 자동 업데이트(NEO~2020)나 메이플스토리(정확히는 업데이트 알림) 등에서 IE를 불러오는 부분을 클릭하면 Windows 11임에도 IE가 열리는 황당한 모습을 볼 수도 있다.[4] 일종의 영구적 죽음.

파일:CC-white.svg 이 의 내용 중 전체 또는 일부는
문서의 r73 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}}에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r73 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)
문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)



파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-30 16:35:45에 나무위키 레거시 시스템 문서에서 가져왔습니다.