의성궁

목차

1. Virtual Machine은 무엇인가
2. Virtual Machine의 필요성 및 활용 범위
3. 왜 지금이 Virtual Machine의 Renaissance인가
4. 연구 및 비즈니스의 기회로서의 Virtual Machine
------------------------------------------------

2. Virtual Machine의 필요성 및 활용 범위

VM은 새로운 컴퓨팅 패러다임으로서 활용 용도나 범위는 직접 새로운 시대가 열리기 전까지는 아무도 예측할 수 없습니다. 가령 전혀 상상도 못한 용도로 이용될 수도 있다는 것이지요.
하지만 프론티어들에게 통찰(insight)을 제공한다는 의미에서 이번
섹션에서는 컴퓨팅 환경에 따라 VM이 어떠한 용도로 활용될 수 있는지에 대한 구체적인 예를 들어 VM의 필요성과 활용 범위에 대한 소개를 하도록 하겠습니다. 물론 소개하는 도중 관련 연구나 실례들을 가급적 많이 언급하여 자세한 내용을 원하시는 분들이 더 자세한 정보를 원할 때 실마리가 되도록 노력하겠습니다.

a. Server Class

현재 VM계에서 가장 많은 돈을 벌어들이고 있는 기업은 단연 VMWare입니다. 스탠포드 대학의 교수 및 제자 출신들로 구성된 이 기업은 초기부터 막강한 기술력과 뛰어난 비젼 제시로 VM의 상업성을 증명해보였고 지금은 VM계의 독보적인 존재로 세상에 존재하고 있습니다. 물론 Xen을 기반으로 XenSource 및 다른 신생 기업들이 그 자리를 넘보고 있어서 내년 이맘때에도 같은 말을 할 수 있을지는 모를 일입니다. :)

이러한 VMWare가 가장 집중하고 있는 사업 영역은 바로 서버 제품군들입니다. 전통적으로 서버 시장은 각 벤더들이 "최고의 성능"을 뽑아내기 위해 "가장 효율 좋은" 소프트웨어 구조를 선도적으로 채택하는 영역입니다. 언제나 OLTP 등의 데이터처리 스루풋이 시스템 가치의 잣대가 되는 시장이었습니다. 그런데 과연 지난 글에 설명하였듯이 오버헤드가 많은 VM이 서버 시장에서 어떤 일을 할 수 있을까요?

VM이 현재 노리는 서버 시장은 웹서버 호스팅 업체들이 주로 구축하고 있는 웹서버 농장(farm)입니다. 또한, 고성능 연산을 목적으로하는 클러스터 환경도 역시 목표 시장 중의 하나입니다.

과거의 웹서버들은 주로 많은 이들이 접속을 하는 중앙집중적 정보의 생산자들이 운영하는 것들이 대부분이었습니다. 물론 개인홈페이지나 작은 기관의 홈페이지들이 많았지만 호스팅 업체들이 마켓을 형성하게될 정도의 수요가 형성된 것은 오래지 않았습니다. 이러한 현상은 더욱 가속화되어 이제는 개인마다 euiseong.net과 같은 블로그를 하나씩 갖게 되고 SOHO 비즈니스는 더욱 발달하여 서비스 리퀘스트가 하루에 수십건에서 수천건에 불과한 경량의 서버가 많이 필요하게 되었습니다.

웹서버 호스팅 업체들은 현재 이러한 시장에 대응하기 위해 웹서버에서 제공하는 가상 웹서버 기능 등을 통해 서비스를 제공하고 있습니다. 또는 좀 더 원시적으로는 계정을 하나 주고 URL에 디렉토리까지 포함하는 방법도 사용하고 있습니다. 하지만, 이러한 방식이 갖는 문제점으로는 사용자의 자유도가 떨어지는 것을 들 수 있습니다. 예컨데 지금 사용하고 있는 태터툴즈만 하더라도 아파치의 설정을 일부 바꾸어야하는 등의 작업이 필요합니다. 제가 만약 웹호스팅 업체를 이용하고 있다면 이것을 관리자에게 메일을 보내서 바꾸거나 해야겠지요. 제가 원하는 설정을 위해서 많은 사용자들이 이용하는 시스템에 뭔가를 바꾼다는 것은 사용자에게나 호스팅 업체측에게나 역시 부담스러운 일이지요. 또한, 한 서버의 일부 사용자가 대단한 스크립트나 엉뚱한 프로그램을 실행하여 자원을 독점하는 현상이 발생하는 것 역시 쉽게 막지 못합니다.

VM을 사용하면 이러한 문제들이 매우 쉽게 해결됩니다. 호스팅 업체들은 사용자에게 각각의 VM을 제공합니다. 그렇다면 사용자는 직접 시스템을 관리해야하는데 불편해서 어떻게 하냐고요? 그런 문제 역시 VM을 사용하면 더욱 간단하게 해결됩니다. 태터툴즈를 위한 machine Image, DNS server를 포함한 machine image등을 갖고 있다가 사용자가 원하는대로 image를 가져다가 쓰게 하는 인터페이스를 제공하면 되는 것입니다. 문제가 생기면 다시 image를 가져다가 부팅하면 원상복구 되니깐 개인 데이터만 잘 유지하면 메인트넌스 역시 쉬워지구요. 물론 메모리의 사용량이 증가한다는 단점은 있습니다. 각 사용자마다 비슷한 라이브러리나 프로그램을 독립적으로 메모리에 올려서 사용할테니깐요. 하지만, VMWare ESX 서버의 경우와 같이 윈도우즈 커널이나 라이브러리 등 모든 VM들이 공통으로 사용하는 부분에 대해 signature를 통해 확인하여 공유하는 방식으로 추가적인 메모리 사용 없이 VM을 추가로 실행하는 기술이 개발되어 있습니다. 일례로 VMWare ESX 서버에서는 윈도우즈 32개의 메모리 사용량이 1개의 메모리 사용량과 거의 동일하였다라는 보고가 있습니다.

사용자들간의 소프트웨어적인 독립에 아울러 더욱 좋은 점은 VMM을 통한 자원의 구분적인 할당이 운영체계에서 태스크별로 자원을 할당하는 것보다 더욱 쉽다는 것입니다. VMM에서 특정 VM의 프로세서 사용 시간을 조절하거나 I/O 밴드위스 사용량을 조절하는 것은 매우 쉬운일입니다. 따라서, 사용자들끼리 간섭으로 인한 불편은 사라지게 됩니다. 또한, 실행 중인 VM을 동적으로 다른 컴퓨터로 옮겨서 실행할 수있는 migration 기능을 통해 특정 서버의 로드가 다른 서버보다 높다면 그 서버의 사용자 중 일부를 live migration을 해버리면 간단하게 load balancing이 되게 되는 것입니다. 실제로 SDS 등에서 VM을 서버군에 적용해서 많은 성과를 보고 있다고 들었습니다.

클러스터 환경에서는 어떨까요? 클러스터 환경에서 VM의 사용은 주로 live migration으로 인한 유휴 서버의 전원 차단 및 로드 밸런싱 기능을 목적으로 하고 있습니다. 클러스터 컴퓨팅은 주로 고성능을 요구하기 때문에 한 대의 컴퓨터에서 하나의 VM이 실행되는 것을 기본으로 합니다. 하지만 클러스터라고 언제나 바쁘게 일하는 것은 아닐테고 실행되는 태스크의 성격이나 주기에 따라 클러스터를 구성하는 일부 컴퓨터들은 휴지 상태(idle state)에 있게 됩니다.또한, 낮은 로드(load)로 실행되는 많은 컴퓨터들도 존재하겠지요. 이러한 휴지 상태 또는 낮은 로드의 컴퓨터들은 요즘 중요 이슈가 되고 있는 발열 및 전력 소비를 이유 없이 하고 있는 셈입니다. VM을 사용한 시스템에서는 이러한 휴지 상태 또는 낮은 로드의 시스템들을 live migration을 통해 일부 호스트로 옮겨 실행하고 실제 컴퓨터는 재워버릴 수 있습니다. 이를 통해 냉각 비용 및 전기 소모를 대폭 줄일 수 있게 됩니다.

이러한 주요 장점 외에도 클러스터 및 웹서버 등의 모든 서버군에 해당되는 장점이기도 한데 시스템을 구성하는 일부 컴퓨터가 고장(failure) 나거나 정비가 필요한 경우 해당 컴퓨터에서 실행되는 VM을 다른 컴퓨터로  옮겨서 실행하는 것이 가능해집니다. 결국 가용성(availability)이 대폭 높아지는 것이지요.

또다른 장점으로는 비단 서버클래스에만 해당되지 않는 것이기도 하지만 소프트웨어의 배포 과정이 매우 쉬워진다는 것이 있습니다. 예컨데 오라클의 경우 현재 약 1만 카피 이상을 VMWare의 이미지 형태로 배포하였다고 밝혔습니다. 즉, 규모있는 소프트웨어의 경우 복잡한 설치 과정을 사용자에게 강요하기 보다는 차라리 하나의 VM 이미지 형태로 제공하게 되면 사용자들은 간단하게 설치하여 바로 사용할 수 있는 장점이 있습니다. 향후 VM이 일반적인 컴퓨팅 모델이 된다면 윈도우즈 비스타를 설치 프로그램  뿐만 아니라 Xen 이미지 형태로 제공하게 될 날이 올것입니다.

보안 역시 VM을 통해 더욱 강회될 수 있습니다. 최근 일부 IDS나 보안 시스템은 VM을 사용하여 허상컴퓨터(decoy, honey pot)를 마련하여 침입자가 VMM에 의해 차단되어진 VM 내부에 침입하도록 유도합니다. VM 내부를 아무리 장악하고 증거를 지우려 하여도 VMM에 의해서 모니터링 되는 것은 피할 수 없지요. 손오공이 아무리 빨리 달려도 부처님 손바닥이라는 또 다른 계(system)의 한계를 넘지는 못하는 것과 같은 원리입니다. 또한 서비스를 VM으로 구분하여 실행한다면 한 서비스가 침입에 의해 수행이 멈추더라도 다른 서비스에는 영향을 미치지 않으며 또한 복구 과정에서 이미지를 가져다가 다시 실행하면 되므로 빠른 복구가 가능해집니다.

b. Personal Computing Class

여기서 말하는 컴퓨팅 클래스는 데스크탑이나 노트북 등의 일반 사용자들이 매일같이 접하는 컴퓨터들을 포괄합니다. 현재 VM이 이러한 클래스에서 주로 사용되는 용도는 다양한 운영체계를 사용하는 기회를 제공하는 것이 주가 되겠습니다. 주로 VMWare를 사용하는 사람들이 개발자들이라는 것을 생각해본다면 당분간 이 클래스에서 VM의 사용자들은 다양한 운영체계를 하나의 컴퓨터에서 사용하거나 테스트를 목적으로 하고 있다는 것이 예상됩니다.

이러한 시장은 향후 Microsoft가 윈도우즈 비스타에서 VMM을 옵션으로 포함하고 있다는데에서 보다 일반 사용자들에게 넓게 침투할 것이라는 것을 예상할 수 있습니다. 윈도우즈 비스타가 제공하는 VMM을 통해 Linux 웹서버라던지 또 하나의 윈도우즈 비스타를 실행할 수 있는 것입니다. 특히 맥텔이라 불리우는 인텔 기반의 맥이 등장함으로 인해서 일반 사용자들이 현재의 PC를 대신하여 선택할 수 있는 강력한 대안으로서 등장하고 있습니다. 하지만 역시 MacOS만으로는 불편을 느끼는 경우가 있음으로 MacOS에 VM을 사용하여 Windows를 실행하는 유저들은 크게 증가할 것으로 생각됩니다. 이 때에도 VM은 가장 좋은 대안이 됩니다. 또한 Linux 사용자들에게도 윈도우즈 바이너리를 실행하는 것이 그렇게 어렵게 느껴지진 않을 것입니다. 재부팅할 필요도 없이 잠자고 있던 이미지만 실행(deflating)시키면 되는 것입니다. :)

VM이 개인용 컴퓨팅 클래스에 활용되는 또 다른 기회는 노매드 컴퓨팅(nomad computing)입니다. 과거 네트워크 컴퓨팅이라는 말이 썬(Sun)을 중심으로 소개된 적이 있습니다. 최소한의 컴퓨팅 파워를 지닌 클라이언트들이 서버의 스토리지를 공유하여 여러 사용자에게 컴퓨팅 환경을 제공한다는 것이다. 비용적인 장점도 있지만 중요한 하나의 포인트가 있었으니 그것이 바로 어디에 있던지 동일한 사용환경을 제공하는 노매드 컴퓨팅의 시발점이 된다는 것이었습니다. 하지만, 네트워크 컴퓨팅 환경은 안타깝게도 세상 어디에 가던지 만날만큼 널리 퍼지는 인프라스트럭쳐가 되지 못했습니다.

<노트북 왼쪽이 IBM의 소울패드>



IBM의 소울패드(SoulPad)는 USB 하드디스크 형태의 장치입니다. 연결을 하면 자동으로 VMM을 실행시키고 (Linux 또는 윈도우즈를 기반으로 하고 있다) 하드디스크에 저장된 VM 이미지를 불러서 실행합니다. 작업이 끝나면 VM 이미지를 하드디스크에 저장하게 된다. 결국 사용자는 소울 박스를 들고 다니면 세상 어디에 가도 동일한 컴퓨팅 환경을 제공 받게 되는 것입니다. 이것이야말로 진정한 노매드 컴퓨팅입니다. 즉 네트워크 컴퓨팅이 모든 인프라스트럭쳐가 동일한 프로토콜과 구조를 쓰도록 강요했다면 소울패드와 같이 VM을 통한 노매드 컴퓨팅은 세계 각지에 이미 널리 퍼져있는 PC를 모두 다 사용할 수 있다는 장점이 있습니다.

향후 네트워크 대역이 더욱 넓어지게 되고 운영체계에 관계된 공유 이미지들을 제외한 사적인 이미지만 저장할 수 있는 기능이 있다면 공중전화와 같은 키오스크에서 집에 있는 컴퓨터의 VM 이미지를 받아와 집과 동일한 컴퓨팅 환경을 사용한다거나 PC의 사용환경을 그대로 노트북에서 사용한다는 등의 노매드 컴퓨팅의 일상화를 이룰 수 있을 것입니다.

c. Ubiquitous Consumer Electronics Class

VM을 연구하는 많은 연구자들은 서버 시장 또는 PC 시장에서 VM의 장미빛 미래를 노래하고 있지만 제가 생각하는 VM의 미래는 바로 유비쿼터스 가전기기에 있습니다.

<시판 되고 있는 헤드마운티드 디스플레이>


프론티어가 구체적인 미래상을 전망하고 그에 따른 핵심 기술을 제안하였다고 해도 일이 그렇게 흘러가는 법은 많지 않습니다. 대표적인 예가 JVM(Java Virtual Machine)이 모든 가전 제품에 내장되어 Java로 짜여진 임베디드 프로그램이 가전 제품들을 통제할 것이라 주장했던 제임스 고슬링이 있습니다. 새로운 미래상이 사람들에게 받아들여지지 않게된 이유는 여러가지가 있겠지만 근본적인 이유들은 사람들이 필요성을 깨닫지 못하거나 더 좋은 대안이 있는 경우가 되겠습니다. 하지만, 이와 함게 중요한 요소가 있으니 그것은 바로 그 미래상을 위한 핵심적인 기술을 뒷받침하는 부가적인 기술들이 시장성이 있느냐의 문제가 되겠습니다.

유비쿼터스 환경을 위해서 필요한 것은 무엇보다도 네트워킹과 HCI 기술입니다. 특히 최근 무선 네트워킹과 디지털 디스플레이의 발전으로인해 통신과 사용자와의 인터랙션의 문제가 해결되면서 유비쿼터스 혁명 전야의 분위기는 완성 단계에 있습니다. 이제는 가정의 가전 기기들 하나하나에 들어갈 컴퓨팅 파워의 문제가 남았습니다. 컴퓨팅의 문제는 바로 최근 봄을 만난 멀티코어 기술로 해결이 가능합니다.

과거에는 컴퓨터의 집적도가 공간보다 비쌌습니다. 보다 많은 컴퓨팅 디바이스가 필요했을 때 고집적의 높은 성능의 프로세서를 구입하는 것보다 차라리 컴퓨터를 한 대 더 장만하는 것이 낫다는 것입니다. 하지만 기술의 발달과 멀티코어 프로세서 구조의 정착으로 인해 곧 공간의 가격이 컴퓨터의 집적도를 능가하는 시대가 올 것입니다. 이러한 경향은 가정에서 요구하는 컴퓨팅 디바이스의 갯수가 증가할수록 가속화 될 것입니다. 예를 들어 예전에는 각 방마다 컴퓨터가 필요했다면 그냥 방마다 컴퓨터를 두면 되었지만 이제는 32개 코어를 탑재한 프로세서가 로드맵에 올라와 있는 상황이고 안경형 디스플레이 및 곳곳에 박혀있는 디스플레이와 가전제품으로 인해 필요한 컴퓨터도 수십대가 되어 가고 있습니다. 결국 컴퓨터를 수십대 놓는 것보다는 차라리 멀티코어 컴퓨터 한 대를 놓고 그 컴퓨터에 VM을 실행해서 각 사용자에게 적합한 디스플레이로 아웃풋을 출력하는 것이 경제적이라는 말이 됩니다.

위와 같은 상황을 바탕으로 제가 생각하는 미래는 다음과 같습니다. 거실에서 인터넷을 통해 다운로드한 영화를 아버지와 어머니가 감상 중에 있습니다. 벽에 걸려있는 LCD 디스플레이를 통해 보고 있는데 이것은 홈서버의 아버지 VM과 연결되어 있습니다. 즉, 현재 보고 있는 영화는 아버지가 1시간 전에 자신의 방에서 결재하고 다운로드 받아놓았던 영화인 것입니다. 어머니 VM은 현재 할당된 디스플레이 없이 메신져만 실행되고 있습니다. 만약 어머니 VM에 실행되고 있는 메신져에 친구로 부터 연락이 오면 어머니 VM은 거실의 오디오를 통해 메세지가 왔음을 알리고 VMM을 통해 어머니가 볼 수 있는 적합한 디스플레이에 메세지를 보여줄 것입니다. 아들은 영화를 보다 싫증이 나서 헤드마운티드 디스플레이로 VR 게임을 하고 있습니다. 워낙에 고성능이 필요한 게임이라 헤드마운티드 디스플레이에는 3D 보드를 내장한 온전한 컴퓨터가 장착되어있습니다. 이러한 게임은 어쩔 수 없이 VM이 아니라 Native binary로 실행되지만 프로그램 및 데이터의 스토리지는 역시 홈서버의 스토리지 VM에서 제공하는 NFS를 통해 연결됩니다. 누나는 음악 감상을 하며 자신의 방의 씬 클라이언트(thin client)로 숙제를 하고 있습니다. 씬 클라이언트는 기존 엑스터미널이나 윈도우 데스크탑 연결 클라이언트와 같이 자신이 하는 일은 인터페이스의 제공과 디스플레이의 출력만하는 간단한 기계입니다. 즉, LCD와 키보드 및 마우스 그리고 네트워크 카드로 이루어져있는 이 장치에서 실행되는 프로그램은 모두 홈서버에서 실행되는 누나 VM에 존재하는 것입니다. 누나는 숙제를 하다가 모르는 것이 있어서 친구 집에 가려고 합니다. 가져갈 것은 아무 것도 없습니다. 친구 집에서 씬클라인트 한 대를 빌려서 집에 있는 자신의 VM 이미지를 친구집의 홈서버에 전송하면 집과 동일한 환경을 얻을 수 있습니다.

결국 인텔이 10년내로 출시할 것이라고 밝힌 16개 이상 코어를 지닌 데스크탑용 프로세서를 제대로 활용하는 방법은 위와 같은 VM이 될 것이라 생각합니다. 한 사람이 16개의 태스크를 동시에 실행하는 일은 동시에 할 수 있는 일이 제한되어 있는 인간의 능력으로 인해 그다지 많지 않을 것입니다. 차라리 온 가족이 16개 코어 컴퓨터 한대나 두대를 공유해서 동영상이나 업무를 처리하는 미래가 좋지 않겠습니까?
특히나 방마다 컴퓨터가 놓여있는 지금의 상황은 평당 가격이 천만원이 넘어가는 우리나라 현실에는 맞지 않습니다. :)  이러한 미래를 설명할 때 제가 좋아하는 비유가 있습니다. 충청도 어딘가에선 인구가 늘어 집이 필요하면 옆땅을 사다가 집을 지으면 싸게 먹히지만 강남에선 사람이 늘어나면 아파트 층수를 높게 짓는 것이 더 싸게 먹힌다. 즉, 공간이 싸다면 저사양 컴퓨터를 여러대 놓겠지만 현재는 공간이 더 비싸지고 컴퓨터의 집적도는 싸지고 있으므로 컴퓨팅 파워가 필요하면 컴퓨터 댓수를 늘리기 보단 집적도를 높여야 한다는 것입니다.

d. conclusion

위와 같이 여러 클래스에서 VM은 향후 미래를 바꿀 원동력이 될 것이라 기대되고 있습니다. 이 중에 몇개가 맞고 몇개가 틀릴지, 그리고 어쩌면 VM이 사라질지에 대한 것은 아무도 모릅니다. 모든 것은 여러분이 믿기에 달려있고 대중들이 얼마나 원하느냐에 달려있습니다.
Posted by euiseong

댓글을 달아 주세요

  1. 게임 시장을 VM 이 어떻게 섭렵하느냐도 한목 할듯 해여... 우리나라 PC 사용량의 반 가까이는 게임용 PC 일텐데 3D 처리에 대하여 VM이 얼마나 잘 제공할지가 궁금해지는군여... 이런거는 어디서 연구하는걸까나...

  2. 좋은 글 잘 읽었습니다^^
    재미있어요~

  3. 좋은 글 잘 봤습니다~^^:

  4. VM에 대한 아주 즐거운 글이네요.. ^^