마이크로소프트 신현석 부장입니다. 오늘부터 가상화에 대한 이야기를 시리즈로 다루어 볼까 합니다.
David Chappell이 쓴 "Virtualizaton for Windows: A Technology Overview"를 기본으로 하고, 제 의견을 조금 담겠습니다.

1. 가상화 이해
    - 하드웨어 가상화
    - 프리젠테이션 가상화
    - 어플리케이션 가상화
2. 마이크로소프트의 가상화 솔루션들
3. 가상화된 환경 관리
4. 가상화 기술 결합
의 순으로 작성을 해보겠습니다.

오늘은 가상화에 대해 이해 하는 시간을 가져보겠습니다.
 
가상화는 요즘 부각되는 IT 테크놀러지 중에서 가장 따끈따끈한 주제임에는 틀림없습니다. 사실 가상화는 다양한 종류가 있는데, 각각 중요한 역할을 하고 있지요. 그 3가지가 바로 하드웨어, 프리젠테이션, 어플리케이션 가상화 입니다. 가상화 되든, 아니면 기존 같이 개별적으로 운영되든 모든 자원은 효율적으로 관리되어야 합니다. 이를 위해 마이크로소프트의 관리 솔루션도 함께 다룰 것입니다. 

각 가상화가 제공하는 내용이 무엇이고, 어떻게 동작하는지, 그리고 어떻게 협업하는지를 명확히 하는 것이 주요 목적입니다.

가상화 기술들

정확한 이해를 위해서는 가상화를 사용하지 않은 시스템을 먼저 생각해봐야 합니다. 데스크탑 컴퓨터에 마이크로소프트 워드가 실행되고 있는 상황을 생각해보죠.


 
그림1. 가상화를 사용하지 않은 시스템

어플리케이션이 운영체제, 컴퓨터 하드웨어 위에 직접 설치되어 운영됩니다. 어플리케이션의 사용자 인터페이스(UI)가 기계에 직접 연결된 화면을 통해서 보여집니다. 
하지만, 이렇게 쓸 수 밖에 없는 건 아니죠. 사실, 이런 방식은 최선이 아닌 경우가 많습니다. 운영체제는 반드시 하드웨어에, 어플리케이션은 운영체제에, 사용자 인터페이스는 로컬 머신에 꼭 연결되어 사용되도록 하는 대신 각 부분이 좀 더 느슨하게 조합되어 사용하도록 할 수 있기 때문입니다. 이렇게 하면 여러가지 방법의 가상화가 가능해집니다.

운영체제와 물리적 하드웨어의 관계를 분리하면 하드웨어 가상화, 운영체제와 어플리케이션간의 사이를 분리하면 어플리케이션 가상화를 이룰 수 있습니다. 비슷하게, 어플리케이션이 구동되는 물리적 머신과 어플리케이션 사용자 인터페이스를 분리시킴으로서 프리젠테이션 가상화를 가능하게 합니다.

즉, 하드웨어와 소프트웨어가 훨씬 다양한 방법으로 사용할 수 있게 되고 구성을 쉽게 변경할 수 있습니다. 사실 대부분의 IT Pro들은 새로운 것을 설치하는 것보다 기존에 설치되어 있는 것을 운영하는데 훨씬 많은 시간을 사용하는데, IT Pro들의 업무를 쉽게 해주는 것은 의미가 있는 일입니다.

하드웨어 가상화

IT에 종사하는 사람은 가상화를 한대의 물리적 기계에 여러개의 운영체제를 구동하는 것이라고 생각합니다. 이것은 하드웨어 가상화를 의미하고, 앞에서도 설명했듯 이것만이 가상화의 전부는 아니죠. 가장 유명하긴 하지만요. 하드웨어 가상화의 개념은 아주 쉽습니다. "가상머신(VM)을 만들어주는 소프트웨어를 사용하여, 물리적 컴퓨터의 역할을 가상으로(Emulate) 하도록 해주는 것" 입니다." 한 번에 다수의 가상머신을 제공함으로써 이런 접근 방식은 한대의 물리적 머신에 동시에 여러개의 운영체제를 구동하도록 해줍니다. 그림2를 참고하시면 됩니다. 




그림2. 하드웨어 가상화

클라이언트 머신, 즉 데스크탑에서 사용됐을 경우 이런 접근 방식은 데스크탑 가상화, 서버 시스템에 사용되면 서버 가상화라고 합니다. 데스크탑 가상화는 여러 상황에서 아주 유용합니다. 가장 일반적으로 사용되는 예는 어플리케이션과 데스크탑 운영체제 간의 호환성에 문제가 있을 경우입니다. 예를들면, 윈도우 비스타를 사용중인 사용자가 윈도우 XP 서비스팩 2에서만 구동되는 어플리케이션이 필요한 경우 XP 서비스팩 2의 가상머신을 생성한 후, 이 어플리케이션을 구동하면 문제가 해결되는 것이지요. 

데스크탑 어플리케이션이 유용하긴 하지만, 하드웨어 가상화의 백미는 바로 서버지요. 제일 큰 이유는 경제적이라는 것입니다. 대부분의 서버 사용율을 10-15%를 넘기지 않는 다는 건 이미 알려져 있는 일이죠? 이렇게 서버 자원의 극히 일부만 사용하는 서버들을 효과적으로 활용하기 위해 업무(Workload)를 작은 조각으로 나누어 한대의 서버에서 통합 운영되도록 하는 것이죠. 결과적으로 서버를 관리하는데 소수의 인원만 있으면 되고, 서버가 차지하는 공간도 획기적으로 줄고, 전원도 훨씬 덜 사용하게 되고, 결국 엄청 절약하게 되는거죠.

서버 가상화의 또 다른 장점은 오류가 발생한 서버를 쉽게 복구할 수 있게 하는 것입니다. 가상머신은 파일로 저장되고, 결국 복구를 한다는 것은 파일을 새로운 머신으로 복사하는 것처럼 쉬워지는 것이죠. 가상 머신은 물리적인 머신에서 여러가지의 하드웨어 설정을 가질 수 있기 때문에 시스템을 복구할 때 가용한 머신은 아무거나 사용할 수가 있게 됩니다. 가상화를 사용할 때 물리적으로 동일한 시스템을 요구하지 않기 때문이죠.

하드웨어 가상화는 여러 방법으로 적용할 수 있는데 마이크로소프트는 아래의 3가지 유형을 제공합니다. 
첫째, Virtual Server 2005 R2
 - 윈도우 위에 소프트웨어를 하나 올려서 구현합니다. 이름에서 알 수 있듯 서버 가상화를 가능하게 하며 확장 가능한 멀티 사용자 시나리오를 타겟팅하고 있습니다. 

둘째, Virtual PC 2007
 - Virtual Server와 마찬가지로 윈도우 위에 소프트웨어를 하나 올려서 구현합니다. Virtual PC는 데스크탑 가상화를 제공하는데, 하나의 싱글 컴퓨터 위에 여러개의 운영체제를 운영하고자 할 때 사용되도록 만들어져 있습니다. 멀티 사용자 시나리오는 제공하지 않습니다.

셋째, Windows Server Virtualization
 - Virtual Server와 마찬가지로 WSV도 서버 가상화가 목적입니다. 위의 두 기술과 달리 소프트웨어를 추가하는 것이 아니고 Windows 자체에 구현된 하드웨어 가상화를 이용합니다. 하이퍼바이저라고 하죠. WSV는 Windows Server 2008의 일부분이고, Windows Server 2008 출시 이후 180일 이내에 정식버전이 출시되는 것으로 예정되어 있습니다. 현재는 베타버전이 나와 있습니다. 

여러 상황에 적합한 기술을 사용할 수 있고, 이후에 좀 더 자세히 설명드릴 예정입니다.

프리젠테이션 가상화

많은 어플리케이션은 대부분 한 대의 장비에서 구동되고 사용자 인터페이스를 보여주는 경우가 일반적입니다. 마이크로소프트 오피스 및 다른 어플리케이션들도 그렇게 사용되고 있죠. 그런데 이런 경우 몇 가지 아쉬움이 남죠. 한 회사에서 굉장히 많은 수의 데스크탑을 관리한다고 할 때 아주 중요한 데이터에 대해 보안이 지켜져야 한다고 합시다. 해당 장비 위에서 돌아가는 어플리케이션을 관리하기 위해 엄청 많은 시간과 비용을 사용해야 하겠지요. 이럴 때 어플리케이션을 원격지에 있는 장비에서 구동되도록 하고, 로컬에서는 사용자 인터페이스만 보여지도록 하는 것, 바로 프리젠테이션 가상화를 사용할 수 있게되는 것입니다. 그림3을 참고하시기 바랍니다. 


그림3. 프리젠테이션 가상화 구성

그림에서 알 수 있듯이 이 방식은 가상 세션을 생성하여, 각각이 원격지의 데스크탑 시스템과 상호작용 하도록 구성되어 있습니다. 세션에서 구동되는 어플리케이션들은 원격의 사용자 인터페이스를 보호하기 위해 프리젠테이션 가상화의 의지하게 됩니다. 각 세션은 하나의 어플리케이션만 실행할 수도 있고, 사용자에게 여러 어플리케이션을 제공할 수도 있습니다. 어떤 경우든 여러개의 가상 세션들은 한 개의 어플리케이션을 공동으로 사용할 수 있습니다.

공유 서버를 통해 어플리케이션들을 운영하는 경우에는 다음과 같은 장점을 얻을 수 있습니다. 
첫째, 여러대의 데스크탑에 정보를 분산시키지 않고 데이터를 중앙에 집중시켜 더 안전하게 보관하고 관리할 수 있습니다. 

둘째, 어플리케이션 관리 비용을 획기적으로 줄일 수 있습니다. 각 데스크탑의 어플리케이션을 업데이트 하는 대신, 중앙의 서버의 한 카피만 관리하면 되기 때문입니다. 프리젠테이션 가상화를 사용하면 데스크탑 운영체제의 시스템을 최소화 하거나, 특화된 데스크탑 디바이스, 즉 Thin 클라이언트를 사용할 수 있게 되어 관리 비용을 낮출 수 있게 됩니다.

셋째, 어플리케이션과 데스크탑 운영체제 간의 호환성을 염려할 필요가 없어집니다. 데스크탑 가상화도 이런 문제를 해결하지만, 중앙 서버에서 어플리케이션을 구동하는 것이 훨씬 간단하고, 또한 요청하는 클라이언트가 어떤 운영체제를 사용하든 상관없이 이용 가능합니다.

마이크로소프트의 프리젠테이션 가상화 기술은 Windows Terminal Service 입니다. 윈도우 NT 4.0 때 처음 출시됐고, 지금은 윈도우 서버 2003에 장착되어 있습니다. 터미널 서비스는 공유 서버 장비에 윈도우 어플리케이션을 장착하고 리모트 시스템, 즉 클라이언트의 화면으로 보내주는 방식, 즉 Thin 클라이언트 입니다. 윈도우 클라이언트의 경우, 일반적으로는 개별적으로 사용되다가 특정 어플리케이션은 가상화를 사용하는 방식 입니다. 

어플리케이션 가상화

가상화는 컴퓨팅 자원을 추상화 시켜서 보도록 합니다. 즉, 물리적인 기계에서 구동되는 것이 아니고 소프트웨어 추상화 계층에서 구동되는 것이죠. 비슷하게, 프리젠테이션 가상화는 어플리케이션의 사용자 인터페이스가 원격 장치에 추상화되도록 하는 기법인 것이죠. 즉, 가상화는 컴포넌트 간의 연결고리를 아주 약하게 만들어주는 방식이라는 겁니다. 

또 다른 추상화가 이용 가능한 분야가 어플리케이션과 운영체제 사이 입니다. 모든 어플리케이션은 운영 체제의 영향을 받게 되죠. 메모리 할당, 장치 드라이버 등을 사용할 때 있어서 반드시 그렇죠. 어플리케이션과 운영체제 사이의 호환성에 문제가 생기면 하드웨어 가상화 또는 프리젠테이션 가상화로 해결할 수 있었습니다. 그런데, 운영체제의 하나의 인스턴스에서 구동되는 두 개의 어플리케이션 간의 호환성에 문제가 생기면 어떻게 해결할 수 있을까요? 어플리케이션들은 주로 시스템 상의 다른 어플리케이션들과 여러 가지 것들을 공유하고 있죠. 그렇지만, 이런 공유는 문제를 일으킬 소지가 있습니다. 예를 들면, 한 개의 어플리케이션이 구동하기 위해 특정 버전의 다이나믹 링크 라이브러리(DLL)을 필요로 하고, 같은 시스템 상의 다른 어플리케이션은 같은 DLL의 또 다른 버전을 필요로 합니다. 두 개의 어플리케이션을 설치하고 구동하는 것은 소위 말하는 DLL 지옥 (Hell), 즉 어플리케이션 중의 하나가 DLL을 덮어 쓰는 경우 문제가 생기겠죠. 이런 상황을 피하기 위해 대부분의 개발 조직들은 새로운 어플리케이션을 설치할 때 테스트를 위해 엄청난 시간 및 노력을 쏟아 부어야 하고, 결국 비용이 많이 들게 됩니다. 

어플리케이션 가상화는 그림4와 같이 공유 자원들의 어플리케이션의 특정한 복사본을 만듦으로써 이런 문제를 해결해 줍니다. 어플리케이션이 다른 어플리케이션과 시스템상에서 공유함으로써 문제가 생길 수 있는 부분은, 레지스트리, 특정 DLL 등인데 이것들을 패키지화 하는 대신에 가상 어플리케이션을 생성하는 것입니다. 가상 어플리케이션이 배포될 때 자기 자신의 공유자원 복사본을 사용하는 것이죠. 


그림4. 어플리케이션 가상화

어플리케이션 가상화는 어플리케이션의 배포를 엄청 쉽게 해줍니다. 어플리케이션이 더이상 DLL 버전, 다른 환경 자원들과 충돌하지 않기 때문에 배포하기 전에 현재 사용중인 어플리케이션과의 충돌 여부 테스트가 필요없어 지는 것이죠. 그림 4에서 보여지는 것처럼 이런 가상 어플리케이션은 일반적인 어플리케이션과 함께 구동 될 수 있습니다. 물론 모든 것을 다 가상화할 필요는 없겠지요?

SoftGrid 어플리케이션 가상화는 마이크로소프트의 기술입니다. SoftGrid 관리자는 가상 어플리케이션을 생성하여 필요하면 배포할 수 있습니다. 이렇게 시스템의 핵심 부분의 추상화를 제공함으로 어플리케이션의 배포 및 갱신에 필요한 시간과 비용을 절감할 수 있게 해주는 것이죠. 

다른 가상화 기술들

위에서 설명한 3가지 가상화 기술외에 네트웍 가상화, 스토리지 가상화 기술 역시 중요하지요. 네트웍 가상화는 여러가지 방식으로 표현됩니다. 가장 대표적으로는 가상 사설 네트웍(VPN)이 있고요. VPN은 네트웍 연결을 추상화 하는 방식인데, 원격지의 사용자가 마치 네트웍에 물리적으로 연결되어 있는 것처럼 조직의 내부 네트웍을 접속할 수 있도록 해줍니다. VPN은 폭넓게 구현된 생각으로, 여러 다양한 기술을 이용합니다. 마이크로 소프트에서 구현한 VPN 기술은 Internet Security and Accceleration (ISA) Server 2006과 Internet Application Gateway 2007 입니다. 

스토리지 가상화 역시 폭넓게 사용되는 용어 입니다. 물리적인 스토리지 장치들을 추상화하여 제공하는 것으로, 직접 로컬로 연결된 디스크 드라이브 외에 어떤 장치도 다 묶어주는 개념입니다. 아주 간단한 예로, 윈도우의 폴더 리다이렉션, 즉 폴더의 정보를 네트웍 상의 어딘가의 접근 가능한 드라이브에 저장해 주는 것도 스토리지 가상화 입니다. SAN, DAS, NAS 등을 묶어서 하나의 가상 스토리지 개념으로 사용할 수 있게 해주는 것을 의미하고, 여기서는 네트웍 가상화, 스토리지 가상화에 대해서는 더 언급하지 않겠습니다.

가상화 관리하기

가상화는 여러가지 장점을 제공합니다. 그렇지만 조직의 컴퓨팅 환경이 가상화되면 될 수록, 점점 추상화 된다는 것을 의미하죠. 추상화가 많아지면 복잡성이 더해지고, 결국 IT 관리자가 통제하기 어려운 상황에 처하게 됩니다. 해답은 분명합니다. 가상화가 잘 관리되지 않으면 여러가지 이점은 그냥 날아가는 거죠.

예를들어, 여러대에서 구현되던 업무들이 한대의 서버에 여러개의 가상머신으로 옮겨져 있는 상황을 생각해보죠. 한 대의 서버에 모든 것들이 집중 되어 있죠. 만약, 장애가 난다면 큰 일이 벌어지겠죠? 가상화가 잘 관리되지 못하면 안정성이 떨어지고, 가상화 이전 상황보다 훨씬 더 많은 비용이 들게 될 수도 있습니다. 

이런 상황을 대비하기 위해 마이크로소프트는 다양한 시스템 관리도구를 제공합니다. 어떤 의미에서는 가상화를 관리하는 것은 실제 물리적인 서버들을 관리하는 것과 유사하고, 같은 툴을 사용할 수 있습니다. 생각해보면 물리적인 서버와 가상 서버를 동일한 툴로 관리하는 것은 굉장히 효율적이겠죠. 물론 가상 세계에 중점을 맞춘 툴도 물로 있고요. System Center Operations Manager 2007, System Center Configuration Manager 2007과 System Center Virtual Machine Manager 2007이 가상화, 실제 서버를 모두 관리하기 위한 용도로 제공되는 툴 입니다. 

시스템 관리의 가장 근원적인 관심사항은 분산되어 있는 하드웨어, 소프트웨어를 관리하고 모니터링 하는 것입니다. System Center Operations Manager 2007은 이런 관심사항을 만족스럽게 해결해주는 마이크로소프트의 주요한 제품입니다. 운영 스탭이 물리적 머신의 소프트웨어와 물리적 머신 자체의 상태를 모니터링 하도록 함으로써, IT 환경에 어떤 일이 벌어지고 있는지를 알도록 해주는 것이죠. 또한 적절히 상황에 대처하게 해주고, 작업을 수행하며 발생된 문제에 적절히 조치를 취하도록 해주기도 합니다. 물리적 머신과 가상 환경의 유사하기 때문에 Operations Manager는 가상 머신들과 가상화된 영역들에 대한 모니터링 및 관리까지 지원합니다. 

분산 환경에서 관리자가 또 피하기 어려운 것이 바로 소프트웨어를 설치하는 것과, 소프트웨어의 설정을 관리하는 것입니다. 이러한 작업들을 수작업으로 진행하는 것도 가능하긴 하지만, 자동화된 솔루션을 사용하는 것이 훨씬 좋은 방법입니다. 이를 위해 마이크로소프트는 System Center Configuration Manager 2007을 제공합니다. Operations Manager 처럼 Configration Manager도 물리적 머신을 다루는 것과 같이 가상머신들을 다룹니다. 

Operations Manager와 Configuration Manager는 큰 조직의 전문화된 IT 스탭을 위한 도구 입니다. 중견 규모의 기업은 그럼 어떤 도구를 사용할 수 있을까요? 마이크로소프트는 덜 복잡한 상황을 위해, System Center Essentials 2007을 제공하는데 위의 두 개의 툴에서 제공하는 가장 중요한 기능들을 제공합니다. 또한, 가상 세계 역시 모니터링하고 관리가 가능합니다. 

물리적 머신과 가상머신을 함께 관리하는 툴, 매력적이지 않습니까? 그런데 수백개의 가상머신이 생성되어 있는 생황을 생각해보세요. 이 많은 가상 머신을 어떻게 만들고 삭제할까요? 또, 가상 머신 관련한 작업은 어떻게 수행할까요? 하드웨어 가상화를 관리할 수 있는 툴이 필요해지겠죠. Virtual Server 2005를 통해 구동되는 가상머신의 관리를 위해, System Center Virtual Machine Manager 2007이 있습니다. 가상화 작업을 선택하고, 해당 가상머신을 구동하고, 어플리케이션을 다른 곳으로 옮기는 등의 작업, 물리적 머신을 가상 머신으로 생성하는 등의 작업에 꼭 필요합니다. 가상화의 큰 그림을 이해하기 위해서는 가상 세계를 어떻게 관리할 것인지를 볼 줄 아는 식견이 있어야 합니다. 가상화 기술 자체에 대한 이해도 요구됩니다.

다음 글에서는 마이크로소프트의 다양한 가상화 기술에 대해 알아보도록 하겠습니다.

감사합니다.
Trackbacks (0) | Comments (0)
http://hsshin.isblog.net/trackback_post_112.aspx
name
password
homepage
comment
secret
< PREV 1 NEXT >