Windows는 왜 지금의 모습이 되었나: 개발자가 보는 역대 Windows의 진화

· 업데이트: · · Windows, Windows 애플리케이션 개발, 호환성, OS 역사, Win32, .NET, 보안

수정 이력(2건, 최종 수정 2026년 09월 03일)

이 글에 적용한 변경 사항의 기록입니다. 보관해 둔 수정 전 버전은 DOI가 부여된 고정 URL에서 읽을 수 있습니다.

관련 기사 링크를 한국어 permalink에 맞추는 등 CI가 지적한 표시용 수정을 반영했습니다. 본문의 기술적인 주장은 바꾸지 않았습니다.
한국어 전면 재작성에 맞춰 본문 표현을 바로잡았습니다. 기술적인 주장은 일본어판과 같습니다.
최초 공개
이 글을 인용하기(DOI: 10.5281/zenodo.21635294)

이 글은 Zenodo에 보관되어 있습니다. 항상 최신 버전으로 연결되는 DOI와 지금 보고 있는 버전에 고정된 DOI를 아래에 함께 제시합니다.

小村 豪 (2026). 「Windows는 왜 지금의 모습이 되었나: 개발자가 보는 역대 Windows의 진화」. 합동회사 코무라소프트. https://doi.org/10.5281/zenodo.21635294 https://comcomponent.com/ko/blog/windows-history-developer-view/

DOI(최신 버전)
10.5281/zenodo.21635294
DOI(이 버전)
10.5281/zenodo.21635295

1. 들어가며

Windows의 역사라고 하면, 겉모습의 변화로 이야기되는 경우가 많습니다.

시작 메뉴가 등장했다. Aero가 들어왔다. 시작 화면이 되었다. 작업 표시줄의 위치가 바뀌었다. 모서리가 둥글어졌다.

물론, 그것도 Windows의 역사입니다.

그러나 Windows 앱 개발자 입장에서 보면, 정말로 큰 변화는 화면 디자인만이 아닙니다. 오히려 중요한 것은 이런 변화입니다.

  • OS의 안정성
  • 메모리 보호
  • 권한 관리
  • 드라이버 모델
  • 32bit / 64bit 지원
  • COM, ActiveX, Win32 API와의 호환성
  • .NET Framework와 .NET
  • UAC
  • Windows Update
  • 보안 기능
  • 스토어 앱과 데스크톱 앱의 공존
  • WSL
  • TPM, Secure Boot
  • 고 DPI, 멀티 디스플레이
  • 하이브리드 CPU와 절전 제어

Windows는 겉모습만 바꾸며 진화해 온 OS가 아니라, 오래된 앱을 가능한 한 계속 실행하면서 안정성, 보안, 성능, 하드웨어 지원을 조금씩 끌어올려 온 OS입니다. 이 점이 Windows의 재미이자, 번거로움이기도 합니다.

이 글에서는 역대 Windows를 단순한 연표가 아니라, Windows 앱 개발자가 본 변화로 돌아봅니다.

읽기 전에, 이후 장에서 설명 없이 나오는 약어를 한 줄씩 정리합니다.

용어 정식 명칭 한 줄 의미 주로 나오는 장
UAC User Account Control 관리자 계정으로 로그온해도 기본적으로는 제한된 토큰으로 실행하고, 관리자 권한이 필요한 작업에서만 권한 상승을 요청하는 메커니즘. Vista에서 도입 7장, 13장, 14장
WDDM Windows Display Driver Model Vista에서 도입된 디스플레이 드라이버 모델. 화면 그리기를 GPU 전제로 다시 만든 것 7장, 11장
UEFI Unified Extensible Firmware Interface 기존 BIOS를 대체하는 펌웨어 규격. Secure Boot의 전제가 된다 11장
Secure Boot Secure Boot UEFI 기능으로, 서명을 검증한 부트 로더와 드라이버만 부팅시키는 메커니즘 11장
TPM Trusted Platform Module 키 생성·보관과 부팅 구성 측정을 수행하는 보안 기능. Windows 11에서는 2.0이 요구 사항 11장
WinRT Windows Runtime Windows 8에서 도입된, COM을 바탕으로 한 새로운 API 기반 9장
ESU Extended Security Updates 지원 종료 후에도 일정 기간, 중요한 보안 업데이트만 유상으로 받는 메커니즘 14장
LTSC Long-Term Servicing Channel 새 기능 업데이트를 받지 않고 장기간 지원되는 Windows 제공 형태 14장

이 글의 지식 맵

Windows는 가정용 Windows 95/98/Me 계열과, 업무용으로 안정성과 권한 관리를 발전시켜 온 Windows NT/2000 계열이라는 두 흐름이 Windows XP에서 실용적인 형태로 통합되면서 현재의 모습이 시작됩니다. Windows Vista는 UAC와 WDDM이라는 새로운 드라이버 모델을 도입해 보안 모델을 전환했고, Windows 7이 이를 실용화했으며, Windows 8은 WinRT를 도입해 터치와 스토어의 시대를 열었습니다. Windows 10은 Windows as a Service라는 지속 업데이트 전제를 정착시켰고, Windows 11은 TPM 2.0과 UEFI Secure Boot를 포함한 요구 사항 상향으로 현대적인 하드웨어 전제로 나아갔습니다. 이 흐름 속에서 .NET Framework는 OS에 포함된 구성 요소인 반면, 그 후속인 .NET(Core 이후)은 크로스 플랫폼 런타임으로서 독립적으로 진화하고 있습니다.

Windows의 역사(개발자 관점)의 지식 맵가정용 Windows 계열과 업무용 Windows NT 계열이 Windows XP에서 통합되고, Vista 이후 UAC나 WDDM 등의 보안·드라이버 모델이 도입되며, Windows 10에서 지속 업데이트인 Windows as a Service로, Windows 11에서 TPM 2.0과 UEFI Secure Boot를 요구 사항으로 하는 현대 하드웨어 전제로 나아간, Windows 각 버전의 후속 관계와 특징적인 메커니즘 채택을 보여주는 그림의 후속의 후속의 후속의 후속의 후속의 후속의 후속의 후속이용한다이용한다이용한다이용한다이용한다전제로 한다전제로 한다전제로 한다이용한다의 후속이용한다이용한다Windows XPWindows VistaWindows 10Windows 95 / 98Windows NT / 2000Windows MeWindows 7Windows 8 / 8.1Windows 11UAC(사용자 계정 컨트롤)WDDM(Windows Display Driver Model)WinRT(Windows Runtime)Windows as a Service(지속 업데이트 모델)TPM 2.0UEFI 보안 부팅Windows 11 최소 요구 사항.NET Framework.NET(Core 이후)Active Directory(AD DS)그룹 정책

그림의 실선은 항상 성립하는 관계, 점선은 조건이 붙는 관계입니다(성립 조건은 상세 페이지의 관계별 설명에 적혀 있습니다). 관계 전체 목록(총 20건, 근거와 확신도 포함)과 주요 개념의 정의는 지식 맵 상세 페이지에 정리되어 있습니다(일본어). 데이터: JSON-LD / Turtle

2. Windows의 역사는 두 흐름이 합류하는 역사이기도 하다

Windows의 역사를 이해할 때, 먼저 짚어 둘 점은 Windows에는 크게 두 가지 흐름이 있었다는 것입니다.

가정용 PC로 퍼진 Windows 95 / 98 / Me의 흐름. 기업·업무 용도를 염두에 두고 성장한 Windows NT / 2000의 흐름.

이 둘이 Windows XP에서 크게 합류합니다.

MS-DOS / Windows 3.xWindows 95 / 98 / Me가정용 PC·사용성·주변기기Windows NT / 2000업무용·안정성·권한 관리Windows XP가정용과 업무용의 통합Windows Vista / 7UAC·WDDM·보안 강화Windows 8 / 8.1터치·스토어·클라우드Windows 10지속 업데이트·WSL·호환성과 현대화Windows 11보안 기준·현대 하드웨어

이 흐름을 모르면, Windows의 지금 모습은 조금 이해하기 어려워집니다.

왜 오래된 API가 남아 있는가. 왜 관리자 권한 문제가 있는가. 왜 32bit 앱이 아직 동작하는가. 왜 Program Files에 직접 쓰면 문제가 되는가. 왜 드라이버나 주변기기에서 고생하는 일이 있는가.

그것들은 단순한 설계 실수라기보다, Windows가 오랜 시간에 걸쳐 현실의 PC 이용을 떠안아 온 결과이기도 합니다.

3. Windows 95 / 98: 가정용 PC를 대중화한 시대

Windows 95는 오늘날 Windows의 사용 편의성을 결정지은 OS입니다.

시작 메뉴. 작업 표시줄. 최소화, 최대화, 닫기 버튼. Plug and Play. 네트워크 기능. 인터넷으로 들어가는 길.

지금은 당연한 조작이, 이 시기에 꽤 형태를 갖췄습니다.

개발자 시점에서 보면, Windows 95 / 98 시대는 PC가 “일부 잘 아는 사람이 쓰는 기계”에서 “가정이나 직장에서 평범하게 쓰는 도구”로 바뀌어 가던 시대입니다.

앱을 설치한다. 프린터를 연결한다. 모뎀으로 인터넷에 연결한다. CD-ROM에서 소프트웨어를 넣는다. 디지털카메라나 USB 기기를 다룬다.

그런 이용이 한꺼번에 퍼졌습니다.

Windows 98에서는 인터넷, USB, DVD, 멀티미디어, 가정 내 네트워크 같은 요소가 더욱 강해집니다.

다만 이 시대의 Windows에는 DOS에서 유래한 불안정함도 남아 있었습니다.

어떤 앱이 OS 전체를 말려들게 한다. 드라이버 품질이 나쁘면 블루스크린이 난다. DLL 버전이 다르면 다른 앱이 망가진다. 다시 시작하면 고쳐진다는 알 수 없는 경험칙이 통용된다.

이 시대를 아는 사람에게 Windows는 편리한 동시에, 조금 무서운 것이었습니다.

4. Windows Me: 가정용 DOS 계열 Windows의 마지막 발버둥

Windows Me는 평가하기 어려운 OS입니다.

대체로 “불안정했던 Windows”로 이야기되는 경향이 있습니다. 실제로 좋은 기억이 적은 사람도 많을 것입니다.

그러나 Windows Me에도 새로운 시도는 있었습니다.

System Restore. System File Protection. AutoUpdate. 디지털 미디어 기능. 홈 네트워크.

즉, 지금의 Windows에서는 당연해진 “망가지면 되돌린다”, “중요 파일을 지킨다”, “업데이트를 자동화한다”는 방향성은 이미 보였습니다.

다만 기반으로 보면 가정용 DOS 계열 Windows의 막바지입니다.

기능으로는 현대적인 것을 넣으려 하고 있다. 그러나 OS의 기반은 아직 충분하지 않다.

그 간극이 Windows Me의 어려움이었다고 생각합니다.

개발자 시점에서는, Windows Me는 “새로운 경험을 담으려면 OS의 기반 자체를 바꿔야 한다”고 알려 주는 존재입니다.

그리고 그 답이 NT 계열로의 통합이었습니다.

5. Windows NT / 2000: 업무용 Windows의 기반

가정용 Windows와는 별도로, Windows NT 계열의 흐름이 있었습니다.

NT 계열은 처음부터 업무 이용을 강하게 의식한 Windows입니다.

안정성. 메모리 보호. 권한 관리. 서비스. 네트워크. 기업 내 관리.

이 흐름의 중요한 정점이 Windows 2000입니다.

Windows 2000은 Windows 95 / 98에서 쌓인 사용 편의성을 받아들이면서, NT 계열의 안정성과 관리성을 앞에 내세운 OS였습니다.

개발자에게 중요한 점은, 이 무렵부터 Windows가 “멈춰도 어쩔 수 없는 가정용 OS”가 아니라 “업무를 지탱하는 플랫폼”으로서의 성격을 키워 갔다는 것입니다.

Windows 서비스로 상주한다. 이벤트 로그에 기록한다. 사용자 권한을 생각한다. 네트워크 도메인으로 관리된다. 공유 폴더나 프린터와 연동한다.

그런, 지금의 업무 앱 개발에서는 당연한 전제가 NT 계열 Windows의 맥락에서 자라났습니다.

6. Windows XP: 가정용과 업무용의 통합

Windows XP는 Windows 역사에서도 특히 중요한 OS입니다. 이유는 단지 인기가 있었기 때문이 아니라, 가정용 Windows의 흐름과 업무용 Windows NT 계열의 흐름이 실용적인 형태로 통합되었기 때문입니다.

Windows XP 덕분에 가정용 PC에서도 NT 계열의 안정성을 전제로 삼을 수 있게 되었습니다. 이것은 매우 큰 변화입니다.

그전까지의 가정용 Windows에서는 앱이나 드라이버의 이상이 OS 전체를 불안정하게 만들기 쉬운 면이 있었습니다. XP 이후에는 적어도 기반으로 보면, 더 안정된 NT 계열을 전제로 삼을 수 있습니다.

한편 XP는 매우 오랫동안 사용되었습니다. 이것은 좋은 일이기도 하고, 어려운 일이기도 합니다. 오래 쓰인 탓에 기업 시스템, 사내 도구, ActiveX, COM 컴포넌트, 오래된 주변기기, 업무 전용 소프트웨어가 대량으로 XP 시대의 전제를 떠안게 되었습니다.

즉 XP는 현대 Windows의 원형인 동시에, 지금까지 이어지는 레거시 자산의 출발점 중 하나이기도 합니다.

Windows 앱 개발자에게 XP의 교훈은 다음 한 줄로 모입니다.

OS가 오래 쓰이면, 앱의 전제도 오래 남는다.

이것은 호환성 문제이기도 하고, 업무 지속의 문제이기도 합니다.

7. Windows Vista: 실패로 취급되기 쉽지만, 중요한 전환점

Windows Vista는 평이 나빴던 OS로 이야기되는 일이 있습니다.

무겁다. 경고가 많다. 드라이버가 맞지 않는다. 앱이 동작하지 않는다. XP가 더 나았다.

당시 사용자 경험으로는, 그 평가에도 이유가 있습니다.

그러나 Windows 앱 개발자 입장에서 보면, Vista는 중요한 전환점입니다.

특히 큰 것은 다음입니다.

  • UAC
  • WDDM
  • Aero / Desktop Window Manager
  • 새로운 드라이버 모델
  • 보안 강화
  • 64bit 환경의 확산
  • Program Files나 Windows 폴더에 대한 쓰기 제한
  • 애플리케이션 매니페스트

Vista는 Windows에 “안전하게 쓰기 위한 불편함”을 들여왔습니다.

그때까지의 Windows에서는 관리자 권한으로 실행하는 일이 너무 당연해져 있었습니다. 앱도 설정 파일을 실행 파일과 같은 폴더에 쓴다. 레지스트리의 시스템 영역에 가볍게 쓴다. 설치 프로그램도 앱 본체도 관리자 권한을 전제로 한다.

그런 방식이 드물지 않았습니다.

Vista 이후에는 그것이 통하기 어려워집니다.

앱은 어디에 설정을 써도 되는가. 사용자별 데이터는 AppData에 두는가. 모든 사용자 공통 데이터는 ProgramData에 두는가. 관리자 권한이 필요한 처리를, 어디에서, 어떻게 사용자에게 설명하는가.

이 점을 생각하지 않으면, Windows 앱으로서 제대로 동작하지 않게 되어 갔습니다.

Vista는 이용자 입장에서는 번거로웠을 수 있습니다. 그러나 장기적으로 보면, Windows가 현대적인 보안 모델로 나아가려면 필요했던 단계였습니다.

8. Windows 7: Vista의 기반을 실용적으로 만든 OS

Windows 7은 완성도가 매우 높은 Windows로 기억됩니다.

Vista에서 들어온 큰 변화를, 더 가볍고, 더 쓰기 쉽고, 더 안정된 형태로 다듬은 OS입니다.

업무용 Windows로도 인기가 높았고, Windows 앱 개발 현장에서도 오랫동안 기준 환경으로 다뤄졌습니다.

Windows 7의 중요한 점은 “큰 설계 사상 변경”보다 “실무에서의 완성도”입니다.

Vista에서 들어온 UAC나 WDDM 등의 방향성은 남기면서, 사용자 경험이 개선되었습니다.

개발자에게는 Windows 7의 보급으로, Vista 이후의 설계를 전제로 한 앱 개발이 현실적이 되어 갑니다.

예를 들면 이런 생각입니다.

  • 표준 사용자로 동작하는 것을 전제로 한다
  • 관리자 권한이 필요한 처리는 설치 프로그램이나 별도 프로세스로 나눈다
  • 설정 파일의 저장 위치를 적절히 나눈다
  • 고 DPI나 멀티 디스플레이를 조금씩 의식한다
  • 32bit 앱을 64bit Windows에서 실행하는 전제를 가진다
  • 드라이버나 주변기기의 호환성을 확인한다

Windows 7은 Windows 앱 개발에서 “XP 시대의 방식”에서 “Vista 이후의 방식”으로 옮기기 위한, 현실적인 가교였다고 할 수 있습니다.

9. Windows 8 / 8.1: 터치 시대로의 급선회

Windows 8은 꽤 대담한 OS였습니다.

시작 화면. 라이브 타일. Windows Store. 터치 조작. 참 바. 클라우드 연동.

PC뿐 아니라 태블릿도 강하게 의식한 Windows입니다.

방향성 자체는 결코 잘못되지 않았다고 생각합니다.

스마트폰과 태블릿이 빠르게 퍼지면서, PC에도 터치나 스토어 앱의 발상을 받아들일 필요가 있었습니다.

다만 기존의 데스크톱 사용자에게는 변화가 급했습니다.

시작 메뉴가 사라진 것처럼 보인다. 화면 전체가 바뀐다. 마우스와 키보드 중심의 업무 PC에서는 조작의 맥락이 너무 바뀐다.

그 결과 Windows 8은 평가가 갈리는 OS가 되었습니다.

개발자 시점에서 보면, Windows 8은 “Windows에는 여러 앱 모델이 공존한다”는 현실을 강하게 만든 OS입니다.

기존의 Win32 데스크톱 앱. .NET Framework 앱. WPF 앱. 스토어 앱. WinRT. 터치 전제 UI.

같은 Windows 위에 여러 방식이 나란히 놓이게 되었습니다.

이것은 알기 어려움이기도 합니다. 그러나 동시에 Windows다움이기도 합니다.

새로운 것을 넣는다. 그러나 오래된 것을 바로 버리지 않는다.

이 자세는 Windows 10 이후에도 이어집니다.

10. Windows 10: 서비스로서의 Windows

Windows 10의 큰 특징은, Windows가 “몇 년마다 새로 구입하는 OS”에서 “계속해서 업데이트되는 OS”로 바뀐 점입니다.

Windows as a Service. 기능 업데이트. 누적 업데이트. Windows Defender의 강화. Microsoft Edge. WSL. 가상화 관련 기능. 클라우드와의 연동.

Windows 10에서는 Windows 자체가 항상 업데이트된다는 전제가 되었습니다.

이것은 이용자에게도, 개발자에게도 큰 변화입니다.

예전에는 Windows XP, Windows 7처럼 특정 OS 버전을 오랫동안 기준으로 삼을 수 있었습니다. 그러나 Windows 10 이후에는 같은 Windows 10이라도 버전이 다릅니다.

1507, 1511, 1607, 1703, 1709, 1809, 1903, 2004, 21H2, 22H2.

세부를 모두 의식할 필요는 없지만, 개발자는 “Windows는 계속 업데이트된다”는 전제를 가져야 하게 되었습니다.

이것은 테스트 사고방식에도 영향을 줍니다.

  • Windows Update 이후에 문제가 생기지 않는가
  • 보안 기능 강화로 설치 프로그램이 멈추지 않는가
  • 백신 소프트웨어와 충돌하지 않는가
  • .NET Framework나 런타임 상태에 지나치게 의존하지 않는가
  • 기존 주변기기나 드라이버가 최신 Windows에서도 동작하는가
  • WSL이나 가상화 기능과의 공존에 문제가 없는가

Windows 10은 호환성을 지키면서 현대화한다는, 매우 Windows다운 난제에 맞선 OS였습니다.

11. Windows 11: 보안 기준과 현대 하드웨어의 시대

Windows 11에서는 겉모습도 바뀌었습니다.

가운데로 모인 작업 표시줄. 둥근 UI. 새로운 시작 메뉴. Snap Layouts. 새로운 Microsoft Store.

그러나 개발자 시점에서 보면, 더 중요한 것은 보안 기준과 하드웨어 전제의 변화입니다.

Windows 11에서는 TPM 2.0, UEFI, Secure Boot, DirectX 12 지원 GPU, WDDM 2.0 드라이버 등 시스템 요구 사항이 올라갔습니다.

이것은 단순한 걸러 내기가 아니라, OS의 보안 기능, 신뢰성, 업데이트 가능성, 현대적인 하드웨어 기능을 전제로 삼기 위한 판단입니다.

물론 오래된 PC나 오래된 주변기기를 쓰는 현장에는 곤란한 이야기입니다. 그러나 Windows가 앞으로도 안전한 업무 기반으로 남으려면, 어디선가 전제를 끌어올려야 합니다.

개발자에게 Windows 11은 이런 시대를 보여 줍니다.

  • 보안 기능을 전제로 한다
  • 고 DPI, 다중 화면, 터치, 펜, 음성 입력 등을 전제로 한다
  • GPU나 디스플레이 드라이버의 세대 차이를 의식한다
  • P코어/E코어 같은 하이브리드 CPU를 의식한다
  • 절전 설정이나 백그라운드 실행의 영향을 생각한다
  • 클라우드 계정이나 관리 정책과의 관계를 생각한다

Windows 앱의 성능과 안정성은 이제 코드만으로 결정되지 않습니다.

OS 버전, 업데이트 상태, 보안 설정, 전원 설정, CPU 구성, 드라이버, 권한, 주변기기. 그것들을 포함해 실행 환경으로 볼 필요가 있습니다.

12. 개발자 시점에서 본 Windows의 진화

역대 Windows를 개발자 시점에서 대략 정리하면, 이 표와 같습니다.

시대 대표적인 Windows 출시 연도 OS로서의 변화 개발자에 대한 영향
가정용 PC의 보급 Windows 95 / 98 1995 / 1998 시작 메뉴, 작업 표시줄, Plug and Play, 인터넷 지원 설치 프로그램, DLL, 주변기기, 네트워크 지원이 중요해짐
가정용 DOS 계열의 막바지 Windows Me 2000 System Restore, AutoUpdate, 디지털 미디어 새 기능을 넣으려면 OS의 기반이 필요하다는 점이 보임
업무용 기반 Windows NT / 2000 1993(NT 3.1)〜2000 안정성, 권한 관리, 서비스, 네트워크 관리 업무 앱, 상주 처리, 이벤트 로그, 권한 설계가 중요해짐
통합의 성공 Windows XP 2001 가정용과 업무용의 통합, NT 계열의 일반화 XP 전제의 업무 자산이 대량으로 생김
보안 전환 Windows Vista 2006 UAC, WDDM, 드라이버 모델, 64bit 관리자 권한을 전제로 한 방식이 통하기 어려워짐
실용화 Windows 7 2009 Vista의 개선, 안정성, 업무 이용에서의 보급 Vista 이후의 방식이 실무에서 정착함
터치와 스토어 Windows 8 / 8.1 2012 / 2013 시작 화면, 스토어 앱, 클라우드 연동 Win32와 새로운 앱 모델의 공존이 과제가 됨
지속 업데이트 Windows 10 2015 Windows as a Service, Defender 강화, WSL OS 업데이트를 전제로 한 테스트가 필요해짐
현대 하드웨어 Windows 11 2021 TPM, Secure Boot, UI 개편, 현대 CPU/GPU 보안, 전원, CPU, 드라이버까지 포함한 설계가 필요해짐

이 표에서 보이는 것은, Windows가 단순히 “새로워진” 것이 아니라는 점입니다. 오래된 호환성을 안은 채로, 새로운 안전성과 새로운 하드웨어에 대응해 왔습니다.

그렇기 때문에 Windows 앱 개발에서는 최신 API만 봐서는 부족합니다.

오래된 COM 컴포넌트가 남아 있을 수 있다. ActiveX를 쓴 업무 흐름이 남아 있을 수 있다. 32bit DLL이 필요할 수 있다. 프린터 드라이버나 USB 기기가 오래되었을 수 있다. 관리자 권한 없이 써야 할 수 있다. Windows Update로 동작이 바뀔 수 있다.

그것이 Windows입니다.

번거롭습니다.

그러나 그 번거로움은, Windows가 현실의 업무를 오랫동안 떠안아 온 증거이기도 합니다.

13. Windows 앱 개발에서, 역사를 알고 있으면 도움이 되는 것

Windows의 역사를 알고 있으면, 실무에서 문제를 보는 시각이 달라집니다.

예를 들어, 앱이 실행되지 않을 때.

단순히 “버그입니다”라고는 단정할 수 없습니다.

32bit / 64bit 문제일 수 있다. 필요한 .NET Framework가 없을 수 있다. VC++ 런타임이 없을 수 있다. COM 등록이 깨져 있을 수 있다. UAC 때문에 쓰기가 실패하고 있을 수 있다. 백신 소프트웨어에 막혀 있을 수 있다. 오래된 프린터 드라이버가 영향을 주고 있을 수 있다. 고 DPI로 화면이 깨져 있을 수 있다. Windows Update 이후의 동작 차이일 수 있다. 절전 설정 때문에 성능이 나오지 않을 수 있다.

Windows 앱 개발에서는 앱 단독만 보는 것이 아니라, 환경 전체를 볼 필요가 있습니다.

이것은 번거롭습니다. 그러나 그만큼, 현장에서 동작하는 소프트웨어를 만드는 가치가 있습니다.

14. 실무에서 봐야 할 체크리스트

기존 Windows 앱의 수정이나 신규 개발에서는, 최소한 이 정도의 관점을 가지고 있으면 안심입니다. 항목만 나열하면 확인할 방법이 없으므로, 각각 “어디를 보면 알 수 있는지”를 붙입니다.

확인할 관점 어디에서 확인하는가
대상 OS는 Windows 10인가, Windows 11인가 winver를 실행한다. 또는 “설정”의 “시스템”의 “버전 정보”
Windows 10인 경우, 지원이나 ESU, LTSC의 취급은 어떻게 되어 있는가 Microsoft Lifecycle 페이지에서 대상 에디션의 지원 종료일을 확인한다
32bit 앱인가, 64bit 앱인가 작업 관리자의 “세부 정보” 탭에서 프로세스 이름에 “32비트”가 붙는지 본다. 빌드 산출물이면 dumpbin /headers의 machine 행
32bit DLL이나 COM 컴포넌트에 의존하지 않는가 dumpbin /dependents로 의존 DLL을 나열한다. 32bit COM의 등록은 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID 쪽에 들어간다
관리자 권한 없이 일반 조작을 할 수 있는가 표준 사용자 계정을 만들고, 그 계정으로 주요 조작을 한 번 해 본다
Program Files에 설정을 쓰고 있지 않은가 Process Monitor로 쓰기 위치를 본다. %LOCALAPPDATA%\VirtualStore에 파일이 나오면, 쓰면 안 되는 곳에 쓰고 있는 것이다
사용자별 데이터는 AppData, 공통 데이터는 ProgramData로 나누고 있는가 echo %APPDATA%echo %ProgramData%로 실제 경로를 확인하고, 앱의 쓰기 위치와 대조한다
UAC 권한 상승이 필요한 처리를 분리하고 있는가 실행 파일의 매니페스트에서 requestedExecutionLevel을 확인한다. 권한 상승이 필요한 처리가 별도 프로세스로 되어 있는지
설치 프로그램, 업데이트 처리, 제거 처리가 안전한가 표준 사용자로 설치부터 제거까지 진행해 본다. “설정”의 “앱”에서의 제거도 시험한다
.NET Framework, .NET, VC++ 런타임 등의 의존 관계는 명확한가 dotnet --info, “설정”의 “앱” 목록, dumpbin /dependents
고 DPI, 멀티 디스플레이, 원격 데스크톱에서 화면이 깨지지 않는가 “설정”의 “시스템”의 “디스플레이”에서 배율을 150%나 200%로 하고 시작한다. 원격 데스크톱을 통해서도 연다
프린터, USB 기기, 시리얼 통신, 카메라 등 주변기기와 궁합이 있는가 devmgmt.msc로 장치 관리자를 열고, 인식 상태와 드라이버 날짜를 본다
Windows Update 이후에도 동작을 확인할 수 있는 체계가 있는가 winver로 빌드 번호를 기록하고, 업데이트 전후에 같은 절차를 다시 수행한다. Get-HotFix로 적용 이력을 본다
Windows Defender나 타사 보안 소프트웨어와의 궁합을 확인하고 있는가 Get-MpComputerStatus로 상태를 확인한다. 이벤트 뷰어 > 응용 프로그램 및 서비스 로그 > Microsoft > Windows > Windows Defender > Operational
절전 설정이나 CPU 구성의 차이로 성능이 바뀌는 것을 상정하고 있는가 powercfg /getactivescheme로 전원 플랜을 확인한다. CPU 구성은 작업 관리자의 “성능”에서 본다
오류 시에 로그를 남기고, 현장에서 상황을 수집할 수 있는가 이벤트 뷰어에 앱 로그가 나오는지. 출력 경로와 보관 기간이 정해져 있는지

관점마다 더 파고들고 싶다면, 이 사이트의 다음 글에서 다룹니다.

이 체크리스트는 단순한 개발 기법이 아니라, Windows가 쌓아 온 역사 그 자체입니다.

15. Windows는 오래된 것이 아니라, 쌓여 있는 것이다

Windows는 흔히 “오래되었다”고 말합니다. 확실히 오래된 부분은 있습니다.

Win32 API도 있습니다. COM도 있습니다. 레지스트리도 있습니다. DLL 문제도 있습니다. 오래된 컨트롤도 있습니다. 호환성을 위해 남아 있는 동작도 있습니다.

그러나 그것을 단순히 오래되었다고 잘라 내기만 해서는, Windows의 본질이 보이지 않습니다. Windows는 오래된 것을 안은 채로, 새로운 것을 쌓아 올려 온 OS입니다. 정리된 정원보다는, 증축을 이어 온 거대한 도시에 가깝다고 하는 편이 맞습니다.

새 빌딩이 있다. 오래된 골목도 있다. 지하에는 옛날 배관이 지나고 있다. 편리한 고속도로도 있다. 공장도 병원도 학교도 관공서도, 그 도시 안에서 움직이고 있다.

개발자는 그 도시 안에서 앱을 만듭니다.

그래서 최신 길만 알아서는 부족합니다. 오래된 길이 왜 남아 있는지도, 조금은 알아 둘 필요가 있습니다.

덧붙여, 12장 말미에서 말한 “번거로움은 현실의 업무를 떠안아 온 증거다”라는 시각과, 이 장의 “증축을 이어 온 도시”라는 시각은, 같은 이야기를 다른 각도에서 한 것입니다. 이 감각 자체를 조금 더 파고든 글로, 개발자의 이상한 사랑, 또는 나는 어떻게 걱정을 그만두고 Windows를 사랑하게 되었는가를 썼습니다. 이 글이 연표 쪽, 저쪽이 수필 쪽에 해당합니다.

16. 정리

Windows의 역사는 겉모습의 역사만이 아닙니다. 호환성을 지키면서 안정성, 보안, 성능, 하드웨어 지원을 어떻게 끌어올려 왔는가의 역사입니다.

Windows 95 / 98은 PC를 가정과 직장으로 넓혔습니다. Windows NT / 2000은 업무용 OS로서의 안정성과 관리성을 키웠습니다. Windows XP는 그 둘을 통합했습니다. Windows Vista는 보안과 드라이버 모델의 큰 전환점이 되었습니다. Windows 7은 그 전환을 실용적으로 만들었습니다. Windows 8은 터치와 스토어라는 새로운 방향으로 발을 내디뎠습니다. Windows 10은 계속해서 업데이트되는 Windows를 정착시켰습니다. Windows 11은 보안 기준과 현대 하드웨어에 대한 대응을 더 진행하고 있습니다.

Windows는 깨끗하게 정리된 이상향이 아닙니다. 현실의 업무, 오래된 자산, 주변기기, 보안 요구, 새로운 하드웨어를 동시에 안은 채 계속 움직여 온, 거대하고 복잡한 플랫폼입니다.

그렇기 때문에 Windows 앱 개발에서는 “지금의 Windows만”을 보는 것이 아니라, 과거부터 이어져 온 설계 사상과 호환성의 역사를 이해하는 것이 중요합니다.

오래된 자산을 함부로 버리지 않는다. 그러나 새로운 안전성과 실행 환경에도 대응한다.

그 균형 위에 지금의 Windows가 있습니다. 그리고 그 위에서 확실하게 동작하는 소프트웨어를 만드는 일에는, 지금도 큰 가치가 있습니다.

참고 자료

같은 태그를 공유하는 최신 기사입니다. 더 가까운 주제로 지식을 넓힐 수 있습니다.

이 기사와 가까운 토픽 페이지입니다. 기사를 출발점 삼아 관련 서비스와 다른 기사로 이어집니다.

이 기사는 다음 서비스 페이지로 이어집니다. 가까운 입구부터 확인해 주세요.

자주 묻는 질문

이 기사 주제에 대해 상담 시 자주 나오는 질문을 모았습니다.

Windows XP는 왜 Windows 역사에서 중요한가요?
가정용 Windows(95/98/Me)의 흐름과, 업무용 Windows NT/2000의 흐름이 XP에서 실용적인 형태로 통합되었기 때문입니다. 이로써 가정용 PC에서도 NT 계열의 안정성을 전제로 삼을 수 있게 되었습니다. 한편 XP는 매우 오랫동안 사용되었기 때문에, 기업 시스템, ActiveX, COM 컴포넌트, 오래된 주변기기 등이 XP 시대의 전제를 대량으로 떠안게 되었고, 지금까지 이어지는 레거시 자산의 출발점 중 하나가 되기도 했습니다.
Windows Vista는 실패작이었나요?
당시 사용자 경험으로는 "무겁다", "경고가 많다", "드라이버가 맞지 않는다"는 악평에 이유가 있었지만, 개발자 시점에서는 중요한 전환점입니다. UAC, WDDM, 새로운 드라이버 모델, 64bit 환경의 확산, Program Files에 대한 쓰기 제한 등이 도입되어, 관리자 권한을 전제로 한 앱 설계가 통하기 어려워졌습니다. Windows가 현대적인 보안 모델로 나아가려면 필요했던 단계였다고 할 수 있습니다.
Windows 10에서 개발자에게 무엇이 바뀌었나요?
Windows가 "몇 년마다 새로 구입하는 OS"에서 "계속해서 업데이트되는 OS"(Windows as a Service)로 바뀐 것이 가장 큰 변화입니다. 같은 Windows 10이라도 1507부터 22H2까지 버전이 다르기 때문에, 특정 OS 버전을 오랫동안 기준으로 삼는 사고방식이 통하지 않게 되었습니다. Windows Update 이후에 문제가 생기는지, 보안 기능 강화로 설치 프로그램이 멈추는지 등, OS가 계속 업데이트된다는 전제로 테스트할 필요가 생겼습니다.
Windows 11의 시스템 요구 사항은 왜 올라갔나요?
Windows 11에서는 TPM 2.0, UEFI, Secure Boot, DirectX 12 지원 GPU, WDDM 2.0 드라이버 등이 요구 사항이 되었습니다. 이것은 단순히 오래된 PC를 잘라 내려는 것이 아니라, OS의 보안 기능, 신뢰성, 업데이트 가능성, 현대적인 하드웨어 기능을 전제로 삼기 위한 판단입니다. Windows가 앞으로도 안전한 업무 기반으로 남으려면, 어디선가 전제를 끌어올릴 필요가 있었다는 뜻입니다.

저자 프로필

기사 저자의 프로필 페이지입니다.

Go Komura

합동회사 코무라소프트 대표

Windows 소프트웨어 개발, 기술 상담, 장애 조사를 중심으로 재현이 어려운 장애 조사와 기존 자산이 남아 있는 프로젝트에 강점이 있습니다.

블로그 목록으로 돌아가기