소프트웨어 레이어 관점에서 본 가상화와 클라우드 컴퓨팅

출처 : http://engineered.egloos.com/2082556

소프트웨어 레이어 관점에서 본 가상화와 클라우드 컴퓨팅

요새 한창 소프트웨어 분야에서 집중적으로 관심 받는 분야가 x86 서버 가상화와 클라우드 컴퓨팅이다. 첫번째 개념인 서버 가상화(Virtualization)은 사실 상당히 오래된 개념으로, 단일 또는 다수의 하드웨어 상에서 운영체제 여러 개를 동시에 돌리는 것이다. 예전 메인프레임에서는 당연하게 지원됐다고 하나, x86 서버와 유닉스 서버들이 메인프레임에게서 주도권을 뺏어온 지금에서야 x86 서버에 대한 가상화가 이슈로 떠올랐다. 클라우드 컴퓨팅은 간단히 데이터센터 호스팅 서비스의 확장판이라고 볼 수 있다. 굳이 중소규모의 기업 또는 집단이 비싼 돈을 들여 서버 인프라스트럭쳐(infrastructure)를 구축하지 말고, 대형 웹 기반 업체들이 제공하는 컴퓨팅 자원을 활용하자는 것이 포인트이다. 이때, 인프라스트럭쳐를 제공하는 업체는 사용량에 따라 사용료를 과금하게 된다.

소프트웨어 개발자라면 "가상화"는 그리 낯선 개념이 아니다. 임베디드 소프트웨어 개발자라면 윈도 기반 PC에서 리눅스 개발 환경 구축을 위해서 VMware를 안 써본 사람이 없을 것이고, 어플리케이션 개발자라면 호환성 테스트를 위해서 개발 PC에 수 많은 OS들을 동시에 돌리면서 호환성 확인을 해봤을 것이다. 이 같은 가상화는 가장 기본적인 형태로 다음과 같은 소프트웨어 레이어를 갖는다.

PC 한대에 OS 한개, 그리고 그 위에 어플리케이션의 형태로 가상화 소프트웨어가 동작한다. 가상화 소프트웨어는 가상의 하드웨어를 에뮬레이트(emulate)하여 여러 게스트(Guest) OS를 동작시킨다. 이런 방식은 가상화 소프트웨어의 부하를 높이고, 그림에서 볼 수 있듯이 OS 간에 겹치는(중복되는) 작업을 요구하기 때문에 비효율성이 문제된다. 게다가 가상화 소프트웨어가 유저 어플리케이션 수준에서 동작하기 때문에 자연스럽게 권한 제약 및 하드웨어 접근 제약 등의 부가적인 문제가 따라오기 쉽다.

최근 이슈화되는 가상화 기술들은 한단계 더 나아가서 호스트 OS의 필요성을 제거했다. 일명 하이퍼바이저(Hypervisor)라는 소프트웨어 레이어를 제공하는 것으로, 이 방식의 가상화 소프트웨어는 OS의 중재 없이 직접 하드웨어에 대한 추상화(Abstraction)를 수행한다.

기존 방식의 비효율을 획기적으로 제거했으나 여전히 극복되어야 하는 단점이 존재한다. 일단 OS에 비해 짧은 역사로 인해 당연스럽게도 하드웨어 지원이 제한적이고, CPU에서 하드웨어적으로 가상화를 지원하지 않으면 그닥 큰 성능 향상을 이룰 수 없다. 하지만 이 방식은 가상화 소프트웨어에게 기존 OS의 지위를 부여하는 효과를 갖고 있기 때문에 MS를 제외한 많은 가상화 소프트웨어 업체 및 비주류 OS 업체들에게서 크게 환영받는다.

여기서 한발 더 나가는 방법이 있다. 위의 두 방식 모두 단일 PC 또는 서버만을 활용할 수 있다는 한계를 갖고 있다. 만약, 하이퍼바이저가 다수의 하드웨어 상에서 돌면 어떻게 될까? 여러 OS와 그 OS 상에서 실행되는 어플리케이션이 요구하는 컴퓨팅 리소스를 적절하게 여러 하드웨어 나눠줄 수 있고, 관리자는 여러 서버를 마치 서버 한 대만을 다루는 것처럼 관리할 수 있다면 정말 최선의 선택이라고 할 수 있다.

이런 방식이 최근에 주목받는 방식으로 두 번째 방식을 조금 확장한 것이다. 데이터센터를 비롯하여 각종 기업 전산 센터 등에서 필요로 하는 방식으로 VMware 등에서 레퍼런스를 확보하기 위해서 죽어라 영업을 하고 있는 방식이다.

이제 한 걸음만 더 나아가면 "가상화"가 "클라우드 컴퓨팅"을 만난다. 클라우드 컴퓨팅은 사실 90년대 말과 2000년대 초에 IBM과 HP 그리고 Akamai 등에서 열을 내며 소리내던 "유틸리티 컴퓨팅(Utility Computing)"의 후계자이다. 당시에 제조업체가 주를 이뤘다면 지금 클라우드 컴퓨팅에 열을 내고 열심인 곳은 아마존과 구글 등 서비스 업체라는 것이다. 이들은 그들의 엄청난 서버 인프라스트럭쳐와 웹 기술, 그리고 최근 웹 기반 어플리케이션 광풍을 등에 입고 "클라우드 컴퓨팅"의 창시자이자 전도사로 나섰다.

기본적으로 초기 클라우드 컴퓨팅은 매우 제한적으로 이뤄졌다. 서비스 제공업체에서 제공하는 어플리케이션에 최소한의 커스터마이징(Customizing) 작업만을 허용했고, 곧 이어 (제한적이지만) 직접 제작한 어플리케이션까지 활용할 수 있게 되었다. 사실상 초기 "클라우드 컴퓨팅"은 웹 호스팅 서비스의 확장판으로 보는 것이 맞을 수도 있다. 이러한 제한적인 방식에 대한 소프트웨어 레이어는 다음과 같이 표현될 수 있다(그림에서는 하드웨어가 하나로 나와있지만 사실 분산된 여러 하드웨어가 활용된다)

하지만 이런 "클라우드 컴퓨팅"계에 깜짝 놀랄만한 업체가 나타났으니, 우리에겐 "인터넷 서점"으로 유명한 "아마존"이다. 아마존은 EC2(Elastic Computer Cloud)를 발표하며 단숨에 클라우드 컴퓨팅 계를 정복했다. 아마존은 (가상) 서버를 임대해주고, 사용자는 그 서버를 이용하여 서비스를 제공할 수 있다. 이때, 서비스는 아마존이 갖고 있는 거대한 규모의 웹 서버 인프라 상에서 동작한다. 며칠 전 ZDNet.com에서 본 글(Amazon launches pre-emptive strike against Microsoft’s planned cloud platform)에 의하면 곧 마이크로소프트 기반 윈도 서버와 SQL 서버에 대한 지원도 한다고 한다.

최종적으로 "클라우드 컴퓨팅"은 "가상화"의 최종 방식을 접목하여 다음과 같이 분산된 서버 인프라와 그 서버들을 통합해주는 하이퍼바이저만 남는 형태로 될 것이다. 사용자는 자신이 선택한 OS에 자신이 선택(또는 개발)한 어플리케이션을 돌릴 수 있게 될 것이다. 결과적으로 새롭게 시작하는 중소기업이나 개인 사업자들은 직접 물리적인 서버를 갖는 일은 없어질 것이다. 대기업이라 할지라도 최소한의 중요 데이터를 제외한 모든 데이터 및 어플리케이션들은 클라우드로 옮길 것이다.

다만, 이러한 미래가 다가오기 위해선 선결과제가 몇 가지 존재한다.

  1. 보안. 과연 얼마나 클라우드에 있는 내 데이터가 안전하고 비밀스러울 수 있을 것인가?

  2. 안정성. 클라우드 컴퓨팅을 제공하는 업체가 얼마나 끊김없이 서비스를 제공할 수 있을 것인가?

  3. 표준화. 한번 만들어진 어플리케이션을 여러 업체의 클라우드에서 활용할 수 있는가?

  4. 라이센스. 과연 위의 모델을 따를 경우, OS에 대한 라이선스 비용은 어떻게 책정될 것인가?

과연 저런 과제들이 해결될 수 있는 것인지에 대한 회의감도 있고, 만약 저 문제들이 해결되었다고 "클라우드 컴퓨팅"이 대세가 될 지는 아무도 모른다. 게다가 얼마 전 나 같은 쪼무래기와는 비교가 불가능한 (좀 많이 극단적인) 리차드 스톨만이 클라우드 컴퓨팅에 매달리는 걸 "멍청"하다고 했으니(Stallman brands cloud computing as 'stupidity'), 도통 미래에 어떻게 될지는 모르는 일이다. 다만, 대체적인 추세를 보건데, "클라우드 컴퓨팅"이 대세가 될 것이고, 머지 않아 주류가 될 것이라는 것에 조용히 소심하게 한 표를 던져본다.

덧1. 개인적으로 나중에 까먹지 말기 위해서 약 40분에 걸쳐서 정리해 봤을 뿐이니, (혹시라도 있다면) 전문가인 독자분께서 보기에 영 거슬리거나 영 무식해 보이는 소리가 있으면 덧글로 남겨주시기 바랍니다.

덧2. 아무리 아마존이 웹 분야에서는 엄청 선구자고 기술적으로 뛰어나다지만, 어쨌든 시작은 "인터넷 서점"이었는데, 어쩜 저리 기술 기업으로서의 입지가 생길 수 있는지 궁금하다. 아니면 내가 아마존을 제대로 몰랐던 것인가?

by amplengine | 2008/10/05 16:03 | Virtual Machine | 트랙백 | 덧글(1)

트랙백 주소 : http://amplengin2.egloos.com/tb/914170
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 야간비행 at 2011/03/28 09:07
좋은설명 감사합니다. :>
그럼 최근 이슈되고 있는 구글OS가 클라우드컴퓨팅이랑 같은 개념인가요 ?

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶