2020.05.28

Win32와 UWP를 결합한다··· MS의 '프로젝트 리유니언' 따라잡기

사이먼 비슨 | InfoWorld
마이크로소프트가 빌드 2020에서 여러 애플리케이션 개발 모델을 통합하기 위한 일련의 기술 집합체인 ‘프로젝트 리유니언(Project Reunion)’을 공개했다. 회사의 기존의 Win32와 새로운 UWP를 병합하기 위해 WinUI 3로 제시했으며, 데스크톱 및 스토어 설치 프로그램을 지원하는 접근방식을 기반으로 한다.
 
Image Credit : Getty Images Bank

현 실태 및 지금까지의 여정
마이크로소프트의 계획을 이해하기 위해서는 지금의 위치와 그간의 맥락을 살펴볼 필요가 있다. 과거에는 윈도우 애플리케이션을 정의하고 개발 방식을 파악하기가 쉬웠다. SDK, 컨트롤, Win32를 구성하는 API의 조합은 윈도우 NT부터 XP와 비스타 및 윈도우 7까지 익숙했던 기존의 윈도우 개발 모델의 진화였다.

그리고 윈도우 8이 등장하면서 윈도우 개발에 지각변동이 나타났다. 이 현대적인 모델은 다양한 운영체제와 폼팩터들 사이에서 웹과 서비스 사이의 경계를 넘나드는 경험을 제공하기 위해 새로운 클라우드 서비스와 호환되는 모바일 앱 덕분에 등장했다. 

WinRT는 강력한 도구였지만 새로운 규칙이 적용됐다. 전력을 아끼기 위해 앱은 백그라운드 상태에서 동작하지 않았고 절전 상태에서는 시스템이 리소스를 필요로 하는 경우 언제든지 종료될 수 있었다.

기존의 윈도우에 익숙한 개발자들은 새로운 플랫폼에 맞추어 코드를 처음부터 재구성해야 했고 이로 인해 마이그레이션을 하지 않는 사람들도 많았다. 윈도우 8용 앱을 개발했다면 윈도우 스토어 WinRT 코드와 수준 낮은 데스크톱 리그로 좌천되는 느낌이 들게 하는 Win32 코드 사이에서 선택을 해야 했다. 

데스크톱도 기존의 익숙한 데스크톱이 아니었다. 하나의 앱으로 취급되었으며 다른 WinRT 앱과 마찬가지로 절전 상태로 전환될 수 있었다.

이후 윈도우 8.1 및 윈도우 10가 등장했다. 이들의 목표 중 종전의 작동 방식을 바꾸고 시작 메뉴를 되살리며 터치 중심적인 시작화면에서 익숙한 데스크톱으로 회귀하는 것이었다. 하지만 스토어 앱과 Win32 사이에는 여전히 벽이 있었고, 윈도우 10의 데스크톱 브리지 등의 도구가 이를 없애야 했다. 기존의 WinRT는 윈도우 10에서 UWP가 되었다. 데스크톱 앱 지원과 자마린(Xamarin)을 결합한 교차 플랫폼 개발 모델이라고 할 수 있다.

한편, 익숙한 .NET도 바뀌고 있었다. 시스템 프로그래밍 중심적인 .NET 코어가 점차 API를 선택하면서 코드 마이그레이션을 간소화하는 일련의 .NET 스탠다드 API를 통해 .NET 프레임워크와 유사해지는 현상이 나타났다. 이 길다면 긴 이야기 프로젝트 리유니온을 이해하기 위한 맥락이다. 

프로젝트 리유니온의 기반
마이크로소프트에 따르면 두 가지 핵심 개발을 통해 UWP와 Win32가 단일 개발 프레임워크로 통합될 수 있었다. 첫 번째는 기존의 MSI와 윈도우 스토어의 APPX의 개념을 결합한 새로운 설치 형식인 MSIX의 도입이었다. 

MSIX 앱은 스토어에만 국한되지 않으며 단일 앱으로 또는 기존의 기업 배포 도구를 통해 제공될 수 있다. MSIX는 앱 사용자 정의와 설치 프로그램 파일을 분리함으로써 새로운 업데이트마다 패키지를 재구성하지 않고 기업 배포 앱을 최신 상태로 유지할 수 있다. MSIX를 통해 Win32 코드는 윈도우 10 데스크톱 브리지를 활용할 수 있으며 고립 기능을 이용해 애플리케이션 보안을 향상시킬 수 있다.

두 번째 개발은 UWP 컨트롤이 윈도우 10 Win32 앱에서 구동할 수 있으며 구식 윈도우 플랫폼에서 Win32 컨트롤을 사용할 수 있는 XAML 아일랜드(XAML Islands)였다. 이 옵션은 윈도우 7의 수명이 끝나고 많은 기업들이 윈도우 10으로 이동하면서 중요성이 감소했다. 그 결과 지난 수 년 동안 XAML 아일랜드 접근 방식이 진화했다. 윈도우 UWP SDK로부터 UI 구성요소가 분리되었고 이동식 WinUI 3가 생겨났다.

그렇게 지금의 상황까지 오게 되었고 프로젝트 리유니언이 출범됐다. 두 개발 접근방식 사이의 벽을 지속적으로 허무는 한편, 라이브러리 및 번들 애플리케이션 구성요소 모두를 호스팅하는 NuGet 패키지로 제공되는 Win32와 UWP API 모두에 액세스하는 보편적인 수단을 제공하는 것이 목적이다.

윈도우 SDK와 윈도우의 분리
프로젝트 리유니언은 WinUI에서 한 걸음 더 발전하고 있다. WinUI 3가 결국 기본 SDK로부터 UI 구성요소를 분리함으로써 필요 시 더욱 신속하게 발전할 수 있게 되었고 프로젝트 리유니언의 목적은 이와 마찬가지로 Win32와 UWP API를 해당 OS로부터 분리시키는 것이다.

이것이 윈도우 애플리케이션 개발에 미치는 가장 큰 변화일 수 있으며 SDK는 더 이상 윈도우 릴리즈와 연계되지 않을 것이다. 윈도우 10을 통해 6개월마다 새로운 SDK가 제공되고 있으며, 이 새로운 접근방식을 통해 각 API는 필요에 따라 언제든지 바뀔 수 있다.

이 새로운 분리 접근방식이 효과가 있으려면 애플리케이션 배포 방식이 바뀌어야 한다. 여기에서 MSIX는 애플리케이션 구성요소가 사용자에게 영향을 미치지 않고 백그라운드에서 업데이트될 수 있도록 한다.

프로젝트 리유니언의 핵심 기능은 현대적인 API를 지원되는 구식 윈도우 버전에 적용하는 코드인 ‘폴리필’(polyfill) 지원이다. 이를 위해 할 일이 많으며 번역과 심(Shim)을 통해 복잡한 기능이 지원될 수 있도록 해야 한다. 

하지만 우리가 웹에서 배웠듯이 이것은 중요한 일이다. 새로운 기능이 더욱 신속하게 제공되도록할 수 있는 폴리필을 통해, 구식 브라우저를 지원하면서도, 새로운 버전이 신기능을 활용하도록 할 수 있었다.

구식 윈도우 릴리즈에서 프로젝트 리유니언 코드를 구동하면 성능이 다를 수는 있지만 최소한 구동은 가능할 것이다. 이를 통해 버전별 코드를 제공하지 않고 장기 지원 릴리즈에서 구동하는 소프트웨어, 윈도우 IoT 하드웨어에 활용할 수 있을 것이다. 하위 수준 지원 관리는 새로운 릴리즈를 저해할 수 있으며 이 접근방식을 통해 새로운 기능을 희생하지 않고도 애플리케이션을 계속 업데이트할 수 있을 것이다.

조금 더 오래 걸릴 뿐, 프로젝트 리유니언 로드맵
마이크로소프트는 프로젝트 리유니언의 첫 로드맵을 공개했다. 한 가지는 확실하다. 대대적인 업데이트는 기대하지 말자. 향후 몇 년 동안 예정된 릴리즈를 통해 확인된 최고의 전략은 기존 애플리케이션 개발 모델을 고수하고 우선 WinUI 3로 전환한 후 필요에 따라 중요한 병합 API를 추가하는 것이다. 코드를 처음부터 재작성 하면 시간과 자원이 많이 소요되며, 마이크로소프트도 이를 인지하고 변화의 영향을 완화하기위해 최선을 다하고 있다.

초기 단계는 빌드에서 발표되었다. UWP 및 Win32를 위한 WinUI 3 프리뷰 릴리즈, 애저 호스팅 윈도우 가상 데스크톱을 위한 MSIX 지원, 새로운 엣지와 유사한 일정으로 업데이트되는 새로운 크로미움(Chromium) 기반 WebView2의 프리뷰 등이 그것이다. 

올 해 말까지 추가적인 API 지원에 대한 프리뷰와 WinUI 프리뷰가 있을 예정이다. 2021년부터는 매년 여러 개의 프로젝트 리유니언 릴리즈를 공개하고 초기에는 새로운 API와 함께 애플리케이션 호환성에 집중하겠다는 야심 찬 계획이 준비되고 있다. 

준비하기 
프로젝트 리유니언에 맞추어 코드를 준비하려면 두 가지 할 일이 있다. 첫째, 패키징 및 배포를 MSIX로 전환해야 한다. 둘째, 컨트롤을 WinUI로 마이그레이션하는 과정을 시작해야 한다. 

UWP에서는 쉽게 진행할 수 있으며, WinUI 2는 이미 제공되고 있고 WinUI 3는 프리뷰 상태이다. Win32의 경우 XAML 아일랜드로 시작하고 WinUI 3에 대한 연구를 시작하면 된다. 또한 가능하면 크로미움 기반 웹 컨트롤의 이점을 얻기 위해 WebVIew2도 적용하기 시작해야 한다.

기존의 프로젝트를 기반으로 구축되어 있기 때문에 프로젝트 리유니언은 완전히 새로운 것이 아니다. 대신에 더욱 사려 깊은 접근방식의 일환이며 지난 몇 년 동안 개발되고 프리뷰를 거치고 있는 일련의 기술에 이름을 부여한 것이다. 현재의 수준을 넘어서게 되면 결국 애플리케이션 SDK로부터 윈도우 OS가 분리될 것이다. 

* 사이먼 비슨은 통신 업계와 벤처 업계 경력을 보유했으며, 지금은 영국에 소재한 기술 컨설팅 기업을 운영하고 있다. ciokr@idg.co.kr



2020.05.28

Win32와 UWP를 결합한다··· MS의 '프로젝트 리유니언' 따라잡기

사이먼 비슨 | InfoWorld
마이크로소프트가 빌드 2020에서 여러 애플리케이션 개발 모델을 통합하기 위한 일련의 기술 집합체인 ‘프로젝트 리유니언(Project Reunion)’을 공개했다. 회사의 기존의 Win32와 새로운 UWP를 병합하기 위해 WinUI 3로 제시했으며, 데스크톱 및 스토어 설치 프로그램을 지원하는 접근방식을 기반으로 한다.
 
Image Credit : Getty Images Bank

현 실태 및 지금까지의 여정
마이크로소프트의 계획을 이해하기 위해서는 지금의 위치와 그간의 맥락을 살펴볼 필요가 있다. 과거에는 윈도우 애플리케이션을 정의하고 개발 방식을 파악하기가 쉬웠다. SDK, 컨트롤, Win32를 구성하는 API의 조합은 윈도우 NT부터 XP와 비스타 및 윈도우 7까지 익숙했던 기존의 윈도우 개발 모델의 진화였다.

그리고 윈도우 8이 등장하면서 윈도우 개발에 지각변동이 나타났다. 이 현대적인 모델은 다양한 운영체제와 폼팩터들 사이에서 웹과 서비스 사이의 경계를 넘나드는 경험을 제공하기 위해 새로운 클라우드 서비스와 호환되는 모바일 앱 덕분에 등장했다. 

WinRT는 강력한 도구였지만 새로운 규칙이 적용됐다. 전력을 아끼기 위해 앱은 백그라운드 상태에서 동작하지 않았고 절전 상태에서는 시스템이 리소스를 필요로 하는 경우 언제든지 종료될 수 있었다.

기존의 윈도우에 익숙한 개발자들은 새로운 플랫폼에 맞추어 코드를 처음부터 재구성해야 했고 이로 인해 마이그레이션을 하지 않는 사람들도 많았다. 윈도우 8용 앱을 개발했다면 윈도우 스토어 WinRT 코드와 수준 낮은 데스크톱 리그로 좌천되는 느낌이 들게 하는 Win32 코드 사이에서 선택을 해야 했다. 

데스크톱도 기존의 익숙한 데스크톱이 아니었다. 하나의 앱으로 취급되었으며 다른 WinRT 앱과 마찬가지로 절전 상태로 전환될 수 있었다.

이후 윈도우 8.1 및 윈도우 10가 등장했다. 이들의 목표 중 종전의 작동 방식을 바꾸고 시작 메뉴를 되살리며 터치 중심적인 시작화면에서 익숙한 데스크톱으로 회귀하는 것이었다. 하지만 스토어 앱과 Win32 사이에는 여전히 벽이 있었고, 윈도우 10의 데스크톱 브리지 등의 도구가 이를 없애야 했다. 기존의 WinRT는 윈도우 10에서 UWP가 되었다. 데스크톱 앱 지원과 자마린(Xamarin)을 결합한 교차 플랫폼 개발 모델이라고 할 수 있다.

한편, 익숙한 .NET도 바뀌고 있었다. 시스템 프로그래밍 중심적인 .NET 코어가 점차 API를 선택하면서 코드 마이그레이션을 간소화하는 일련의 .NET 스탠다드 API를 통해 .NET 프레임워크와 유사해지는 현상이 나타났다. 이 길다면 긴 이야기 프로젝트 리유니온을 이해하기 위한 맥락이다. 

프로젝트 리유니온의 기반
마이크로소프트에 따르면 두 가지 핵심 개발을 통해 UWP와 Win32가 단일 개발 프레임워크로 통합될 수 있었다. 첫 번째는 기존의 MSI와 윈도우 스토어의 APPX의 개념을 결합한 새로운 설치 형식인 MSIX의 도입이었다. 

MSIX 앱은 스토어에만 국한되지 않으며 단일 앱으로 또는 기존의 기업 배포 도구를 통해 제공될 수 있다. MSIX는 앱 사용자 정의와 설치 프로그램 파일을 분리함으로써 새로운 업데이트마다 패키지를 재구성하지 않고 기업 배포 앱을 최신 상태로 유지할 수 있다. MSIX를 통해 Win32 코드는 윈도우 10 데스크톱 브리지를 활용할 수 있으며 고립 기능을 이용해 애플리케이션 보안을 향상시킬 수 있다.

두 번째 개발은 UWP 컨트롤이 윈도우 10 Win32 앱에서 구동할 수 있으며 구식 윈도우 플랫폼에서 Win32 컨트롤을 사용할 수 있는 XAML 아일랜드(XAML Islands)였다. 이 옵션은 윈도우 7의 수명이 끝나고 많은 기업들이 윈도우 10으로 이동하면서 중요성이 감소했다. 그 결과 지난 수 년 동안 XAML 아일랜드 접근 방식이 진화했다. 윈도우 UWP SDK로부터 UI 구성요소가 분리되었고 이동식 WinUI 3가 생겨났다.

그렇게 지금의 상황까지 오게 되었고 프로젝트 리유니언이 출범됐다. 두 개발 접근방식 사이의 벽을 지속적으로 허무는 한편, 라이브러리 및 번들 애플리케이션 구성요소 모두를 호스팅하는 NuGet 패키지로 제공되는 Win32와 UWP API 모두에 액세스하는 보편적인 수단을 제공하는 것이 목적이다.

윈도우 SDK와 윈도우의 분리
프로젝트 리유니언은 WinUI에서 한 걸음 더 발전하고 있다. WinUI 3가 결국 기본 SDK로부터 UI 구성요소를 분리함으로써 필요 시 더욱 신속하게 발전할 수 있게 되었고 프로젝트 리유니언의 목적은 이와 마찬가지로 Win32와 UWP API를 해당 OS로부터 분리시키는 것이다.

이것이 윈도우 애플리케이션 개발에 미치는 가장 큰 변화일 수 있으며 SDK는 더 이상 윈도우 릴리즈와 연계되지 않을 것이다. 윈도우 10을 통해 6개월마다 새로운 SDK가 제공되고 있으며, 이 새로운 접근방식을 통해 각 API는 필요에 따라 언제든지 바뀔 수 있다.

이 새로운 분리 접근방식이 효과가 있으려면 애플리케이션 배포 방식이 바뀌어야 한다. 여기에서 MSIX는 애플리케이션 구성요소가 사용자에게 영향을 미치지 않고 백그라운드에서 업데이트될 수 있도록 한다.

프로젝트 리유니언의 핵심 기능은 현대적인 API를 지원되는 구식 윈도우 버전에 적용하는 코드인 ‘폴리필’(polyfill) 지원이다. 이를 위해 할 일이 많으며 번역과 심(Shim)을 통해 복잡한 기능이 지원될 수 있도록 해야 한다. 

하지만 우리가 웹에서 배웠듯이 이것은 중요한 일이다. 새로운 기능이 더욱 신속하게 제공되도록할 수 있는 폴리필을 통해, 구식 브라우저를 지원하면서도, 새로운 버전이 신기능을 활용하도록 할 수 있었다.

구식 윈도우 릴리즈에서 프로젝트 리유니언 코드를 구동하면 성능이 다를 수는 있지만 최소한 구동은 가능할 것이다. 이를 통해 버전별 코드를 제공하지 않고 장기 지원 릴리즈에서 구동하는 소프트웨어, 윈도우 IoT 하드웨어에 활용할 수 있을 것이다. 하위 수준 지원 관리는 새로운 릴리즈를 저해할 수 있으며 이 접근방식을 통해 새로운 기능을 희생하지 않고도 애플리케이션을 계속 업데이트할 수 있을 것이다.

조금 더 오래 걸릴 뿐, 프로젝트 리유니언 로드맵
마이크로소프트는 프로젝트 리유니언의 첫 로드맵을 공개했다. 한 가지는 확실하다. 대대적인 업데이트는 기대하지 말자. 향후 몇 년 동안 예정된 릴리즈를 통해 확인된 최고의 전략은 기존 애플리케이션 개발 모델을 고수하고 우선 WinUI 3로 전환한 후 필요에 따라 중요한 병합 API를 추가하는 것이다. 코드를 처음부터 재작성 하면 시간과 자원이 많이 소요되며, 마이크로소프트도 이를 인지하고 변화의 영향을 완화하기위해 최선을 다하고 있다.

초기 단계는 빌드에서 발표되었다. UWP 및 Win32를 위한 WinUI 3 프리뷰 릴리즈, 애저 호스팅 윈도우 가상 데스크톱을 위한 MSIX 지원, 새로운 엣지와 유사한 일정으로 업데이트되는 새로운 크로미움(Chromium) 기반 WebView2의 프리뷰 등이 그것이다. 

올 해 말까지 추가적인 API 지원에 대한 프리뷰와 WinUI 프리뷰가 있을 예정이다. 2021년부터는 매년 여러 개의 프로젝트 리유니언 릴리즈를 공개하고 초기에는 새로운 API와 함께 애플리케이션 호환성에 집중하겠다는 야심 찬 계획이 준비되고 있다. 

준비하기 
프로젝트 리유니언에 맞추어 코드를 준비하려면 두 가지 할 일이 있다. 첫째, 패키징 및 배포를 MSIX로 전환해야 한다. 둘째, 컨트롤을 WinUI로 마이그레이션하는 과정을 시작해야 한다. 

UWP에서는 쉽게 진행할 수 있으며, WinUI 2는 이미 제공되고 있고 WinUI 3는 프리뷰 상태이다. Win32의 경우 XAML 아일랜드로 시작하고 WinUI 3에 대한 연구를 시작하면 된다. 또한 가능하면 크로미움 기반 웹 컨트롤의 이점을 얻기 위해 WebVIew2도 적용하기 시작해야 한다.

기존의 프로젝트를 기반으로 구축되어 있기 때문에 프로젝트 리유니언은 완전히 새로운 것이 아니다. 대신에 더욱 사려 깊은 접근방식의 일환이며 지난 몇 년 동안 개발되고 프리뷰를 거치고 있는 일련의 기술에 이름을 부여한 것이다. 현재의 수준을 넘어서게 되면 결국 애플리케이션 SDK로부터 윈도우 OS가 분리될 것이다. 

* 사이먼 비슨은 통신 업계와 벤처 업계 경력을 보유했으며, 지금은 영국에 소재한 기술 컨설팅 기업을 운영하고 있다. ciokr@idg.co.kr

X