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