가상화 기술이란?

컴퓨터공부/가상화기술 2016.07.31 23:22 Posted by 아는 개발자

 대학교 1학년때 컴퓨터에 대해서 관심을 갖기 시작할 시절, 동기중 한 명이 Virtual Box라는 것을 이용하면 하나의 PC로 여러개의 운영 체제를 구동 할 수 있다는 것을 알려 주었다. 그 친구는 자신의 집에서는 윈도우 위에 우분투라는 것을 올렸다며 엄청난 기술이라고 호들갑을 떨었는데 당시 나는 전공 초짜였지만 기술 지식에서 뒤쳐지는게 싫어서 "오 그래? 대단한걸? 나도 집에가서 해봐야겠다!"라고 말해놓고 우분투는 대체 뭐고 왜 하나의 PC에 여러 개의 운영체제를 올려야 하냐며 혼잣말을 했었던 기억이 난다.


 하지만 운영체제 수업에서 리눅스라는 환경을 처음으로 경험하게 되고 후에 RoR(Ruby on Rails), NodeJs등을 이용해 개발하는 일이 늘어나면서 리눅스는 나와 뗄레야 뗄 수 없는 사이가 되었다. 리눅스 PC를 추가로 구매할 여력이 없던 학생 신분인 내게는 가상머신이 1학년때 한 말이 무색할 정도로 정말 필수적이었고 그중에서 VMware사에서 제공한 VMPlayer 가상머신은 구세주와 같은 존재였다(지금은 서비스가 중단되었다고 들었다)



( VMplayer를 이용해 윈도우10에서 Ubuntu를 사용하는 환경 가상화기술의 발전으로 윈도10에서 사용하는 것과 속도감 차이가 거의 없다 )


  하나의 PC에 여러개의 운영체제를 사용할 수 있는 소프트웨어로는 대표적으로 VMware사에서 제공하는 Vmware Workstation과 Oracle의 오픈소스 프로젝트중 하나인 VirtualBox가 있다. 아마 대학교 3학년 운영체제를 처음으로 경험하는 학생들이 가장 많이 사용하는 소프트웨어일 것이다. 이외에도 오픈소스로 운영되고있는 QEMU, 리눅스재단에서 운영되는 XEN등 여러가지 소프트웨어가 시중에 존재한다. 이러한 소프트웨어들은 다른 운영체제를 사용하는것 뿐만 아니라 현재 사용하고 있는 운영체제에서(기술 용어로는 Host PC라 한다) 추가한 운영체제(기술용어로 Guest 또는 VM이라 한다)의 네트워크나 CPU의 개수와같이 하드웨어 옵션을 변경 할 수 있는 기능도 가지고 있다..


 위의 소프트웨어들처럼 하나의 하드웨어로 여러가지 운영체제를 동시에 사용 할 수 있는 기술을 가상화기술이라고 한다. 하지만 이건 가상화기술의 부분적인 의미에 불과하다. 위키피디아에서는 "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술" 로 가상화 기술을 정의한다. 나는 개인적으로 가상화 기술을 하드웨어 사용성을 극대화한 기술이라고 짧게 정의한다.


 시중에 가상화 기술을 응용한 소프트웨어는 정말 많다. 앞에서 언급한 VMware나 VirtualBox처럼 HostPC위에 GuestOS를 올리는 것뿐만 아니라 AWS, Microsoft Azure, Heroku같은 클라우드 컴퓨팅 서비스도 가상화기술을 사용한 소프트웨어의 일종이다. 클라우드 컴퓨팅회사가 가상화 기술을 사용하는것에 생소하게 느껴지시는 분들이 있을 것이다(나도 책을 읽어보기전에 그랬다)


 스타트업같은 소규모 회사에서는 클라우드 컴퓨팅 회사에 트래픽이나 코어의 개수와 같은 요구 스펙을 말하고 클라우드 컴퓨팅 회사는 사용자가 요청한 스펙에 맞게 서버를 열어준다. 그러면 사용자는 별도의 하드웨어를 구매할 필요 없이 클라우드 컴퓨팅 회사에서 제공하는 서비스를 사용 할 수 있다. 하지만 실제로 클라우드 컴퓨팅회사에서 사용자가 요구한 하드웨어를 100% 그대로 제공한 것은 아닐 것이다(그러면 직접 서버를 사는거랑 다를바가 없다)


  클라우드 컴퓨팅 회사에서 실제로 운영하고 있는 대규모의 하드웨어 서버가 있지만 유저가 원하는대로 각각의 매칭시켜주기에는 역부족일 것이다. 그래서 클라우드 컴퓨팅 회사들은 하드웨어 서버를 가상화해 효율적으로 사용 될 수 있도록 한 후 사용자가 요구에 따라 VM에 옵션을 바꿔주는 형태로 제공한다.


( 클라우드 컴퓨팅 회사 아키텍처 )


  *인터넷 쇼핑몰이었던 아마존이 박싱데이 시즌에 밀려드는 엄청난 트래픽을 감당하기위해 서버를 많이 사다 두었었는데 박싱데이 시즌을 제외하곤 정작 대부분의 서버들이 놀고있어 문제였었다고한다. 서버들의 사용성을 극대화하기 위해 생각해낸 비즈니스모델이 클라우드 컴퓨팅이었고 대성공을 이뤄 지금은 아마존과 별도로 AWS란 이름으로 운영된다.


  위에서 언급한 것 외에도 아직 내가 알고 있지 못한 분야에서 가상화 기술은 많이 활용되고 있다.


  가상화 기술의 개념은 동일하나 이것을 어떤 방식으로 구현할 것이냐에 따라서 크게 두가지(Type1, Type2)로 구분된다. 두 가지에 대해선 다음 포스팅에 쓰도록 하겠다.

'컴퓨터공부 > 가상화기술' 카테고리의 다른 글

2. Xen 기본 구조/Hypercall  (0) 2016.11.05
1. Xen Project 소개  (0) 2016.11.05
가상화기술 Type1  (0) 2016.09.11
가상화기술 Type2  (0) 2016.09.11
가상화 기술의 유형  (0) 2016.09.06
가상화 기술이란?  (2) 2016.07.31
  1. Luke J 2019.08.15 11:16  댓글주소  수정/삭제  댓글쓰기

    최근에 가상화에 관심이 가기 시작한 "도대체 우분투는 뭐고..." 하는 수준과 별반 차이 없는 초보개발자입니다. 적당히 깊이로 잘 정리해주신 덕에 제 개인적으로는 아주 유익한 글들이었습니다.
    고맙습니다^^