Microsoft Virtualization 101

클라우드 이야기를 다니다보면, 다양한 기반 기술 이야기가 나옵니다만, 가상화에 대한 이야기가 참 많이 나올 수 밖에 없습니다.

클라우드에서 필수적인 유연성(Flexible) 및 탄력성(Elastic)을 기술적으로 구현하기 위해선 가상화 기술이 필수적이기 때문입니다. 꽤 오랜 시간동안 가상화에 대한 이야기를 많이 드렸지만, 시장에 다양한 유형의 가상화 기술이 존재하기 때문에 많이들 헷갈려하시고 잘못 이해하고 계신 경우도 많이 보았습니다. 이에 한번 정도 포스팅을 통해 전체 가상화의 특징에 대해서 정리할 필요성은 있어보입니다. 기본적인 내용에 대한 정리기에 다소 길어질 수 있습니다만, 이 글 하나로 잘 정리되어졌으면 하는 바램입니다. Smile

image

Windows Server 2008 출시 시점부터 많이 사용한 프리젠테이션의 한 페이지입니다. Microsoft는 데스크톱(일반 사용자)에서부터 데이터센터(서버)를 모두 커버할 수 있는 가상화 기술을 제공하고 있고, 이를 단일한 관리 플랫폼(System Center)에서 관리할 수 있다는 메시지가 주였습니다.

  1. 서버 가상화(Server Virtualization)
  2. 프리젠테이션 가상화(Presentation Virtualization)
  3. 응용 프로그램 가상화(Application Virtualization)
  4. 데스크톱 가상화(Desktop Virtualization)
  5. 사용자 상태 가상화(User State Virtualization, 오늘 포스팅에선 다루지 않겠습니다. 개인적으로는 다른 가상화와 섞기엔 성격이 많이 틀리기에.)

서버 가상화

서버 가상화에 대해서는 많이들 잘 알고 계시며, 별로 혼돈하시지도 않으십니다. 말 그대로 1대의 물리적인 서버를 여러 대의 가상 머신으로 나눠쓰는 것을 의미합니다. Microsoft에서는 Hyper-V, VMWare에서는 ESX, vSphere가 이에 해당됩니다. 서버 가상화이기에, 데스크톱의 기능(USB, 그래픽 가속, 오디오)들은 대부분 제공하지 않습니다.(말 그대로 서버 하드웨어라고 생각하시면 쉽습니다.) 서버 가상화 환경에선 현재 지원중인 서버 운영 체제, 클라이언트 운영 체제가 모두 설치 및 동작 가능합니다.

image

프리젠테이션 가상화

프리젠테이션, 말 그대로, 보여주는 부분에 대한 가상화입니다. 쉬운 예로 원격 데스크톱 서비스(aka 터미널 서비스)가 여기에 해당됩니다. 컴퓨팅을 위한 자원은 다른 곳에 존재하는 서버의 자원을 사용하는 것입니다. 사용하는 컴퓨터에서는 입력을 위한 마우스, 키보드, USB, 출력을 위한 모니터, 사운드 정도만 처리합니다. 큰 서버에 여러명의 사용자가 접속해서 서버의 자원을 쓴다고 생각하시면 됩니다. Microsoft에서는 원격 데스크톱 연결(Remote Desktop Connection)이 클라이언트, 원격 데스크톱 서비스가 서버 모듈의 역할을 합니다. 당연히 사용하는 컴퓨터의 하드웨어는 고사양이 아니어도 상관없습니다. 모든 하드웨어 자원은 서버의 것을 사용하므로, 다른 말로, 클라이언트의 하드웨어 스펙 정도에 따라 Thin Client, Ultra-Thin Client, Kiosk라고 부르기도 합니다.

image

프리젠테이션 가상화에 포함된 기술중 하나는 바로 RemoteApp이라는 기술입니다. 뒤에서 언급드릴 응용 프로그램 가상화와 혼돈을 하시는 경우가 많으신데요. 지금 설명드리는 프리젠테이션 가상화는 서버의 데스크톱을 그대로 다 보여주는 형태입니다. 서버의 데스크톱과 현재 접속을 하고 있는 개인 데스크톱과는 별개로 동작하는 것이죠. 개인 데스크톱을 사용하면서, 서버의 프리젠테이션 가상화를 좀더 편리하게 사용할 수 있는 방법이 없을까? 라고 해서 나온 것이 바로 RemoteApp입니다.

개인의 데스크톱에서 서버에서 실행중인 응용 프로그램을 보여주기만 하는 것입니다. 원격 데스크톱 클라이언트가 서버의 데스크톱을 전체다 보여주는 것이 아니라, 실행하는 프로그램의 화면만 보여주는 것입니다. (스크린샷이 있을거라 생각했는데… 왜 없을까요.. ㅜㅜ) 이에 프리젠테이션 가상화인 RemoteApp는 서버 자원을 사용하고, 후에 언급할 응용 프로그램 가상화는 서버에서 스트리밍받은 응용 프로그램을 로컬에서 동작시키는 것이니 클라이언트의 자원을 사용합니다.

모든 자원을 서버의 것을 이용하므로, 중앙 관리라는 장점도 있지만, 단점도 존재합니다. 대표적인 것이 바로 그래픽 처리에 대한 부분입니다. 서버의 그래픽 리소스는 그리 좋은 것을 사용하지 않습니다. 이에 프리젠테이션 가상화의 기본 사항에선 그래픽에 대한 다양한 지원이 미비한 것이 사실입니다. 3D라던가, 동영상, Windows의 Aero UI등..

이러한 부분을 개선하고자, Windows Vista, Windows 7의 프리젠테이션 가상화에서는 서버 접근시, 그래픽에 대한 처리를 서버 자원을 사용하지 않고, 이에 대해서만 클라이언트의 자원을 사용하는 기술이 탑재되었습니다. 해당 기술은 프리젠테이션 가상화를 접근하는 프로토콜인 RDP(Remote Desktop Protocol)의 향상으로 가능해졌으며, 이에 높은 그래픽 처리등이 가능해졌죠. 물론 이러한 처리를 위한 교신으로 네트워크 대역폭을 더 사용하게 됩니다.

그래픽에 대한 클라이언트의 처리로 인해 클라이언트가 높은 수준의 사용자 경험(UX)를 가질 수 있게 됨은 반가운 일이나, 여전히 사각지대인 부분이 있었습니다. 바로 하드웨어의 그래픽 사양이 요구하는 그래픽 처리를 할 수 없는 저사양, 또는 구형인 경우, 그리고 Windows Vista, Windows 7이 아닌, Windows XP인 경우에는 프리젠테이션 가상화를 통해 모든 사용자의 요구 사항을 처리할 수는 없었죠. 가장 최근에 탑재된 기술입니다만, RemoteFX라는 기술은 서버에 고사양의 그래픽카드를 설치하고, 이를 접근하는 클라이언트에서 나눠쓰는 기술입니다. 서버 기술과 RDP의 향상으로 가능해진 기술로, 이제 서버의 자원만으로도, 모든 클라이언트의 요구 사항을 다 처리해줄 수 있게 되었습니다.

데스크톱 가상화

서버 가상화와 유사한 기술입니다. 서버 가상화는 서버 하드웨어에서 가상화 모듈을 사용한다고 생각한다면, 데스크톱 가상화는 일반 사용자 컴퓨터에서 가상화 기술을 동작시키는 것입니다. Microsoft에서는 이를 Virtual PC, VMWare에서는 Workstation이란 제품으로 내놓고 있습니다. 모든 자원은 클라이언트의 컴퓨터에서 사용되며, 한대의 컴퓨터를 여러대로 나눠쓰는 것은 서버 가상화와 동일합니다.(기반 기술의 아키텍쳐적 차이는 있겠지만, 사용자가 보기엔 동일해보입니다.) Windows 7을 사용하면서, 호환성 이유로 Windows XP나 타 운영 체제를 개인 컴퓨터에서 사용하는 것은 모두 데스크톱 가상화라고 부를 수 있습니다. 데스크톱 가상화나 서버 가상화나 동작중인 가상 머신들간, 또는 가상 머신과 물리적인 머신간은 논리적으로 고립되어져 있기에, 정상적인 컴퓨터의 교신 방법(네트워킹)을 제외하곤 상호 교신할 수 없습니다.(이를 가상화의 주요 원칙인 보안 고립이라고 부릅니다.)

image

데스크톱 가상화 사용시, 클라이언트에 사용하는 가상 머신의 이미지, 또는 설정을 중앙에서 통제하는 것이 또다른 이슈이기도 합니다. 사용자들이 무분별하게 만들고, 사용하는 가상 머신의 이미지에서 무슨일이 일어날지, 그리고 필요한 프로그램이 뭔지에 대해서 컨트롤하기가 쉽지 않다는 것이죠. 데스크톱 가상화의 중앙 관리를 위한 솔루션이 바로 Microsoft Enterprise Desktop Virtualization(MED-V)이며, MED-V는 EA/SA 고객분들의 혜택인 MDOP에 포함되어져 있습니다. MED-V를 사용하시면 사용자가 데스크톱 가상화를 사용할때 사용하는 이미지에 대한 중앙 관리, 설정에 대한 반영등을 정책화하여 관리가 가능해집니다.

응용 프로그램 가상화

이미 2008년 2월 21일에 포스팅하였습니다만, 가장 개념을 잡기 어렵다고, 그리고 타 가상화와 혼돈된다고 느끼시는 것이 바로 응용 프로그램 가상화입니다. 응용 프로그램 가상화는 응용 프로그램과 운영 체제를 분리해놓았다고 생각하시면 됩니다. 지금까지의 모든 응용 프로그램은 사용을 위해서는 실제 컴퓨터(물리적 데스크톱이던, 가상 머신이던)에 설치를 해야 합니다. 이 설치시 관련된 파일이 하드 디스크에 저장되고, 프로그램 관련 정보가 운영 체제에 기록되게 됩니다.(레지스트리가 대표적) 응용 프로그램의 파일만 슬쩍 다른 컴퓨터로 복사한다고 응용 프로그램이 동작하지 않는 것도 여기에 해당됩니다.

응용 프로그램 가상화는 운영 체제와 응용 프로그램의 종속성을 끊어주는 역할을 하게 됩니다.

Microsoft의 응용 프로그램 가상화인 Microsoft Application Virtualization(MAV)는 데스크톱 가상화의 MED-V와 마찬가지로, MDOP 패키지에 포함되어져 있습니다. MAV는 크게 3가지의 모듈로 구성되어져 있습니다. 서버, 클라이언트, 그리고 시퀀서(Sequencer)…

image

시퀀서부터 설명드려야 이해가 쉬우실 것입니다. 응용 프로그램이 아무 컴퓨터에서나 정상적으로 동작하려면, 응용 프로그램 실행 및 설치와 관련된 정보를 모두 가지고 있어야 합니다. 응용 프로그램 가상화에서 사용할 응용 프로그램의 정보를 수집하는 프로그램을 바로 시퀀서라고 합니다. 응용 프로그램 가상화 기술을 통해, 응용 프로그램을 사용하기 전, IT 관리자는 사용자들이 사용하고 있는 운영 체제가 설치된 컴퓨터(물리적 데스크톱이던, 가상 머신이던)에서 해당 응용 프로그램을 한번 설치하는 작업을 해봐야 합니다. 설치 작업을 모니터링하는 역할을 하는 것이 바로 시퀀서입니다.

시퀀싱을 할 경우, 응용 프로그램 설치 파일이 행하는 모든 작업(파일 복사, 레지스트리, 서비스 등록, 기타 등등)을 모두 모니터링하여, 하나의 배포 가능한 패키지형태로 만들어줍니다.

image

위의 그림은 Office 2010 32비트 버전에 대해서 Windows 7용으로 시퀀싱한 결과 파일입니다. 확장자가 OSD인 파일은 각 응용 프로그램에 대한 위치 및 버전 정보등이 담겨있으며, 앞서 설명드린, 파일 및 레지스트리, 각종 프로그램 정보는 용량이 큰 SFT 파일로 저장되게 됩니다. 각각의 시퀀싱된 프로그램은 MAV 서버에 등록되고, 등록시 부여한 권한이 있는 사용자만, 사용할 수 있습니다.

image

권한이 있는 클라이언트가 MAV Server에 접근을 하게 되면, 앞서 보신 SFT 파일이 다 내려오는 것이 아니라, 사용자의 권한 여부에 따라 OSD 파일을 확인해서, 마치 프로그램이 설치된 것처럼, 아이콘을 로컬에 만들어주게 됩니다. MAV Client에는 응용 프로그램에 대한 정보가 아닌, MAV Server의 이름만 입력하면 됩니다.

image image

클라이언트가 해당 프로그램을 클릭하게 되면, 그제서야 SFT 파일이 클라이언트로 내려오게 됩니다. (이 내려오는 과정을 스트리밍(Streaming)한다고 표현합니다. 이에 응용 프로그램 가상화를 스트리밍 방식이라고 이야기하죠) 많이들 물어오시는 것이, 저 큰 파일이 다내려가면, 최초 실행시 너무 오래걸리는 것 아니냐라는.. 그러한 이슈를 해결하기 위해 FB(Feature Block)이라는 컨셉을 가지고 있습니다. 시퀀싱시, 프로그램을 한두번정도 실행후 많이 사용하는 기능들을 사용해보라는 권장사항이 있습니다. 이는 최초 실행과 사용 기능에 대한 필요 부분을 미리 파악하여, 그부분을 먼저 클라이언트로 스트리밍하여, 프로그램을 실행한 후, 나머지 부분을 백그라운드에서 스트리밍하게 됩니다. 이 앞부분을 배로 FB1이라고 부르고, 이를 시퀀싱시에 파악하여, 표시하게 됩니다.

image

MAV Client를 설치하게 되면, 안보이던 Q드라이브가 나오고, 접근도 불가능한 것을 보실 수 있습니다. 응용 프로그램 가상화 모듈이 사용하는 것으로써, SFT 파일을 스트리밍받아, 이를 해제하는 드라이브라고 생각하시면 쉽습니다. 사용한 SFT 파일은 응용 프로그램 종료시, 로컬에 캐시해둘 수도 있고, 사용시마다, 다운로드받게 할 수 있습니다. 당연히 중앙에서 관리하기에 응용 프로그램이 업그레이드된 경우엔 중앙에서 새로운 SFT 파일을 만들거나, 업그레이드 파일을 추가하여, 새 버전으로 업데이트시킬 수 있죠.

그렇다면 응용 프로그램 시퀀싱 패키지는 하나로 모든 운영 체제를 다 커버할 수 있을까요? 그렇진 않습니다. 이미 언급드린 것처럼, 시퀀싱용 데스크톱에서 해당 운영 체제에 맞게 만들어 놓은 것이므로, 개별 운영 체제별로 별도의 시퀀싱 절차를 밟으셔야 합니다.

이제 응용 프로그램 가상화에 대해서 이해가 되셨나요? 종종 사이트나 IT Pro 분들을 만나뵈면, 응용 프로그램 가상화가 호환성 해결의 방안으로 생각하시는 경우가 많은데, 그렇지 않다는 것도 이제 이해가 되셨죠?

기업이나 시장에선 하나의 가상화만 사용할까?

정답은 하나가 될 수도 있고, 여러개가 될 수도 있습니다.

가상화 공식 - 응용 프로그램 + 서버 = ?! 에서 살펴본 것처럼, 응용 프로그램 가상화는 여러 가상화와 통합적으로 사용될 수 있겠죠. 차근히 예를 통해 살펴보면

Q1-1: 사용자에게 데스크톱을 제공해야 한다? 일반적인 A: 프리젠테이션 가상화 or 데스크톱 가상화

Q1-2: 서버 가상화내 가상 머신에 클라이언트 운영 체제를 사용할 수 있을까? A: 가능합니다. 그리고 가상 머신에서 동작중인 클라이언트 운영 체제에 원격 데스크톱 연결(프리젠테이션 가상화)을 이용하여 접근 = 이미 이를 시장에서 VDI(Virtual Desktop Infrastructure)라고 부르고 있음, 참고

Q2: 데스크톱에 대한 그래픽 처리는? A: 클라이언트 처리 방식(Windows Vista, Windows 7) or 서버 집중 방식(RemoteFX)

Q3: 사용자에게 제공되는 데스크톱에 대한 응용 프로그램은? A: 일일히 다 설치해준다 or 응용 프로그램 가상화를 사용한다

결국 어떠한 하나의 가상화만 가지고는 원하는 인프라에 대한 처리가 불가능합니다. 여러 가상화가 같이 제공되어야, 동적 인프라의 가치가 발휘되게 됩니다. 이를 Microsoft에서는 Virtualization 360이라고 부르고 있죠. 단순한 가상화 기술뿐만 아니라, Microsoft의 기술, 그리고 경쟁사의 가상화 기술까지도 한 화면에서 관리가능한 관리 인프라까지를 포함하고요.

어떠신가요? 시장에서 언급하고 있는 가상화에 대해서 조금은 이해가 되시나요? Smile

Comments

  • Anonymous
    August 03, 2010
    가상화에 관심이 많은 엔지니어입니다 앞으로도 좋은 포스트 부탁드려요 매번 느끼는거지만 세미나에서 연설하실때 말씀을 참 재밌게 잘하시는것 같아요

  • Anonymous
    August 04, 2010
    르무엘님 // 안녕하세요~! 좋은 말씀 감사합니다. 자주 와주세요~ :)

  • Anonymous
    August 05, 2010
    근래 가상화의 추가되는 기능중에는 "Offline Mode"라는 것을 주안점을 두고 있는데요, 혹시 MS에서도 Offline 가상화 관련하여 진행되는 내용들이 있을까요?

  • Anonymous
    August 05, 2010
    김천용님 // 안녕하세요. Offline Mode라는 부분은 가상화 뿐만 아니라, 클라우드 서비스 관점에서는 많은 벤더가 관심을 가지는 분야라고 생각합니다. 네트워크가 오프라인일때 어떻게 사용자가 서비스를 사용할 수 있게 할 것이냐라는 부분에서.. 위에 언급한 응용 프로그램 가상화나 MEDV도 그런 측면이 강합니다. VDI도 마찬가지고요. 서버에 첫 연결 후, 관련 파일들을 다운로드받게한 후, 이를 사용케하거나, 클라이언트 모듈을 일부 준비시키는 것이 이에 해당되는 부분이.. 결국 서비스 + 소프트웨어가 어느 정도 되어야 Offline Mode도.. 또한 보안에 대한 고려도 해야겠죠. 방문해주셔서 감사합니다.

  • Anonymous
    August 05, 2010
    답변 감사드립니다. 그렇다현 현재 나와있는 MEDV 혹은 MDOP의 APP-V(Softgrid 4.6 Version)을 통해서도 일정 부분 구현이 가능할런지요? 사실 MEDV와 APP-V쪽 자료들은 접하기가 쉽지않네요.  현재의 기준으로 MS Platform에서 구현 가능하다면, 시도해볼만한 가치가 있다고 생각이 드네요.

  • Anonymous
    August 05, 2010
    좋은 글 감사합니다. 최근 Office 2010의 Click-to-Run(간편 실행) 때문에 Application Virtualization에 대한 궁금한 부분이 많았는데, 많은 도움이 되었습니다.

  • Anonymous
    August 06, 2010
    Hosup님 // 안녕하세요. Office 2010의 경우에는 시퀀싱을 하시기전, Office 2010에 응용 프로그램 가상화 관련 모듈을 별도로 시퀀서 머신에 설치하시고 진행하셔야 합니다. 라이선스에 대한 부분 모듈 및 몇가지 서버 모듈과 통신을 해야하는 부분때문에 그렇습니다. :)

  • Anonymous
    August 06, 2010
    김천용님 // Microsoft.com에서 APP-V Deployment Guide(technet.microsoft.com/.../cc843778.aspx), MED-V Quick Guide(download.microsoft.com/.../MEDV_QuickStartGuide.pdf)등을 한번 살펴보세요 :)

  • Anonymous
    August 26, 2010
    좋은 글 감사합니다. 애전 APP-V 를 여러번 테스트 해보았는데요. 사용하기에 따라 상당히 편리하지만 특정 응용프로그램 경우 시퀀싱이 제대로 되지 않아 사용 할 수 없는 응용프로그램이 많이 있던데 이런 부분은 어떻게 해결 하는게 좋을가요?