티스토리 뷰

지난 클라우드 패러다임에 대한 내용 이 후 말씀 드렸듯이 오늘은 가상화와 클라우드에 대해서 이야기 해보려고 합니다.

 

1편 컴퓨팅 패러다임(Computing paradigm)

2편 가상화와 클라우드(Virtualization and Cloud)

3편 클라우드 유형: IaaS(Infra as a Service)

4편 클라우드 유형: PaaS(Platform as a Service)

5편 클라우드 유형: SaaS(Service as a Service)

6편 미래 컴퓨팅 패러다임(Next generation paradigm)

 

보통 가상화와 클라우드(Virtualization and Cloud)에 대한 차이점을 물어보면 좋은 답변을 들은 경우가 별로 없습니다. 그도 그럴 것이 가상화를 통해서 클라우드 서비스를 하는 것이니 무엇이 다르냐고 하면 전문적으로 배운 사람이 아니라면 구분하기가 어려운 것이 사실입니다.

 

그래서 오늘은 가상화가 무엇인지 간략하게 이야기해보고 가상화와 클라우드에 차이점이 무엇인지 다뤄보도록 하겠습니다.

 

What is Virtualization

Informally, a virtualized system (or subsystem) is a mapping of its interface, and all resources visible through that interface, to the interface and resources of a real system
비공식적으로 가상화 시스템은 인터페이스를 통하여 볼 수 있는 모든 자원을 실제 시스템의 인터페이스 및 자원에 매핑하는 것이다.

Formally, virtualization involves the construction of an isomorphism that maps a virtual guest system to a real host system (Popek and Goldberg 1974)
공식적으로 가상화는 가상 게스트 시스템을 실제 호스트 시스템에 같은 구조(The construction of an isomorphism)로 매핑하여 연관시키는 것이다.

<Quotation 1 What is virtualization  (허 2010)>

 

규칙적으로 등장하는 말들이 바로 매핑입니다. 자원을 인터페이스로 추상화하고, 추상화된 자원을 정교하게 나누거나 하는 등(e.g. CPU 1Core를 5개 vCPU Core로 표현, 100G 파일을 100G vDisk를 표현) 실제 시스템과 추상화(공통화)[1]된 자원을 매핑하여 제공하는 기술 즉 가상화를 통하여 제공하는 것입니다. 여기에서 중요하게 생각되는 것이 매핑입니다.

 

[1] 추상화(공통화)란? : 우리가 보통 컴퓨팅과 프로그래밍에서 추상화 또는 공통화라고 하는 것을 말할 때는 특정 분야, 시스템, 플랫폼, 기기 등에 있어서 공통적으로 말할 수 있는 기능, 기술들을 정리하는 것으로 말할 수 있습니다. 예를 들어 프린트를 기준으로 말해본다면 다양한 브랜드의 프린트가 있고 또 그 브랜드마다 다양한 모델들이 존재하지만 공통시킬 수 있는 기능이 있습니다. 바로 "인쇄", "양면인쇄" 등입니다. 요즘 회사들 마다 이런 기능들을 통합해서 "Universal Driver"들을 내놓고 있는데 예전에는 특정 모델의 Driver를 찾아 설치했어야 하는 것에 비해 효율적이고 편리해 진 것이 사실입니다. 또한, OS등 Driver를 사용하는 입장에서도 Driver의 구체성을 따질 필요 없이 인쇄, 양면인쇄, 컬러 인쇄등을 공통적으로 호출 하여 사용할 수있을 것입니다. 이처럼 추상화 또는 공통화란 다양한 리소스(Resource)가 있을 수 있다고 하지만 그것들 속에서 공통점을 찾아 정리하는 것으로 이해한다면 좋을 것 같습니다. 클라우드에서 추상화란 CPU라면 브랜드와 모델에 상관없이 예상할 수있는 CPU의 Feature를 사용하는 것이고, Network라면 예상가능한 Network Protocol을 지원하는 기능이 될 것입니다. 이처럼 가상화는 x86기반의 어떤 시스템이(브랜드, 모델)이 올지 모르기 때문에 추상화를 통해서 자원과 인터페이스를 매핑하는 것이라 보면 좋을 것 같습니다.

 

물론 가상화는 추상화와 다른 부분이 있습니다. 추상화는 단순하게 상세한 것을 숨기고 공통화 된 부분을 표현하는 것(e.g. HAL: Hardware Abstraction Layer-대표적으로 프린트의 정확한 드라이버가 아니어도 인쇄, 양면 인쇄 등을 추상화 하여 제공함으로써 하나의 드라이버로 다양한 프린터 기기에 프린트를 진행)과 다르게 가상화는 때로 실제 시스템에 따른 상세정보도 제공한다는 것에서 추상화와 가상화는 약간의 차이가 있는 것입니다. 중요한 것은 가상화는 추상화라는 기술을 주로 기반하고 있다는 것입니다.

Traditional and Virtual server concept

 

Image&nbsp;1&nbsp;The architecture of a computer system before and after virtualization, where VMM stands for virtual machine monitor&nbsp;&nbsp;(허2010)

 

앞서서 간단하게 가상화에 대해서 살펴 보았습니다. 그렇다면 가상화를 활용하는 것이 기존의 서버 개념과 어떤 차이를 보이는지 살펴보도록 하겠습니다.

  • 기존 서버 개념(Traditional Server Concept): 하드웨어 자원에 (Host)Operating System을 설치하고 응용프로그램을 설치 및 실행<Image 1 (a)>
  • 가상 서버 개념(Virtual Server Concept): 하드웨어 자원에 Host Operating System을 설치하고 가상화 층(Virtualization Layer)위에 가상화 자원이 존재하고 이를 바탕으로 Guest Operating 을 설치 응용프로그램을 설치 및 실행<Image 1(b)>

기존의 서버 개념은 서비스를 위하여 구입한 서버에 (Host) Operating System을 설치하고 개발/서비스 하려는 프로그램을 설치하고 실행하는 것에 비해서, 가상 서버 개념은 x86기반의 서버에 Host Operating System을 설치하는 것 까지는 기존 서버 개념”과 동일합니다. 그러나 가상화 레이어를 만들고, 실제 시스템의 자원을 가상화를 통하여 제공하여 게스트 운영체제(Guest Operating System)을 설치하고 그 위에 서비스하려는 프로그램을 설치하고 실행하는 것이 다른 부분이라 할 수 있습니다.

 

참고로 가상화 계층(Virtualization Layer)을 일반적인 용어로 VMM(Virtual Machine Monitor, Virtual Machine Management)이란 용어를 사용하고 있습니다(V**are 기술지원 직급-아마 차장님이었던 듯-이 있으신 분이 이야기 중에 “VMM”을 언급하니 그런 용어는 쓰지 않는다고 한적이 있는데, 너무 당당해서 매우 당황스러운 경험을 한적이 있다. 부디 이 글을 읽으시는 분들은 VMM 용어에 대해 확실히 알고 가시길 바랍니다.). VMM은 우리가 흔히 하이퍼바이저(Hypervisor)라는 용어로 많이 사용합니다.

 

 

Image&nbsp;2&nbsp;기존 서버 개념(Traditional Server Concept)&nbsp;적용 서비스&nbsp;&nbsp;(허&nbsp;2010)

 

<Image 2> 에서와 같이 기존 서버 개념에서는 서버 하나에 서비스 및 응용 프로그램을 1개정도 설치하여 서비스 할 수 있었다.

 

 

Image&nbsp;3&nbsp;가상 서버 개념(Virtual Server Concept)&nbsp;적용 서비스&nbsp;&nbsp;(허&nbsp;2010)

 

 

하지만 가상 서버 개념에서는 <Image 3>에서와 같이 1개 이상의 물리적인 서버를 묶어 여러 게스트 운영체제를 설치하여 다양한 서비스를 설치하여 제공할 수 있다는 것이 기존 서버 개념과 다르다고 볼 수 있습니다.

Type of Virtualization and Hypervisor

Virtualizations

앞서 가상화와 가상화를 통한 가상 서버 개념에 대해서 살펴 보았습니다. 이러한 가상화는 흔히 구분하자면 “네트워크 가상화”(Network Virtualization), “스토리지 가상화”(Storage Virtualization), “서버 가상화”(Server Virtualization)의 영역이 있습니다. 여기에서는 서버 가상화를 예를 들어 우선 다뤄보고자 하며, 크게 하드웨어 가상화(Hardware Virtualization)와 소프트웨어 가상화(Software Virtualization)[2] 로 나누어 볼 수 있습니다.

 

[2] 소프트웨어 가상화(Software Virtualization): 하드웨어, 데스크톱, 소프트웨어, 메모리, 데이터, 스토리지, 네트워크로 일컬어 지는 유형분리와는 다름을 말씀드립니다. 가상화를 할 수 있는 하드웨어 서포팅에 대한 분류로 보시는 것이 좋을 것 같습니다.

 

하드웨어 가상화(Hardware Virtualization): 하드웨어 가상화라는 것은 결국 여러 운영 체제를 동시에 호스트 컴퓨터에서 실행할 수 있는 컴퓨터 계층으로 1970녀도 IBM S/360을 기반으로 개발되었으며 그 이후, 많은 현대식 변종들이 개발자들로 부 터 생겨나게 됩니다. 하드웨어 자체적으로 가상화를 지원하는 부분이라 보시면 조금은 이해가 편하실 것이라 생각됩니다.

하드웨어 가상화

  • Intel VT
  • AMD-V

소프트웨어 가상화(Software Virtualization): 소프트웨어 가상화는 다시 두 가지로 크게 나누어 볼 수 있습니다. 바로 전가상화(Full virtualization)와 반가상화(Para[or Half]-Virtualization) 입니다.

 

전가상화(Full virtualization)

  • 기본적으로 물리적 하드웨어 기능이 제공
  • 물리적 하드웨어 기능이 VM에 그대로 노출 즉 직접 접근이 가능
  • 수정되지 않은 게스트 OS가 설치된 VM 실행
  • 수정되지 않은 게스트 OS로 인해 성능이 다소 저하될 수 있습니다. 

반가상화(Para[or Half]-virtualization)

  • 실제 하드웨어와 유사하지만 동일하지는 않은 가상 하드웨어 추상화를 제공합니다.
  • VMM과 협력하도록 게스트 OS를 수정합니다.
  • 따라서 오버헤드가 낮아져 성능이 향상됩니다.

사실 어떻게 보면 전가상화가 더 좋은 또는 나은 것이 아닌가 하고 생각을 했지만, 게스트 운영체제를 수정하여 조금 더 최적화 시켰다는 부분에서 차이를 보이며 오히려 반가상화가 성능면에서 더 좋다는 설명을 듣고서야 납득이 되었습니다.  

 

사실 위의 내용은 저만의 정리라기 보다는 제가 알고있고, 또한 대학원 등에서 수업을 통하여 배웠던 내용을 정리한 것이라 저의 정리 또는 구분에 동의하기 어려워 하시는 분들도 계실 수 있습니다(수업등의 자료는 자주 업데이트가 일어나지는 않다보니 현재 기술과 조금 다르거나 쳐져이 있을 수 있습니다). 다양한 기준으로 나눌 수 있기 때문에 그럴 수 있다고 생각합니다. 그러나 가장 기본적으로 위와 같이 나눌 수 있을 것이라고 생각합니다. 참고로 가상화 기술과 컨테이너 기술은 추상화를 통해서 제공하는가 자원을 제한하여 공유하는가 등으로 조금은 다른 기술입니다. 이 부분은 나중에 한 번 다뤄보도록 하겠습니다.

Hypervisors

하이퍼바이저(Hypervisor)에 대해서 알아보려고 합니다. 크게 Bare-metal Hypervisor와 Hosted Hypervisor가 있습니다. 두 하이퍼바이저의 차이는 하드웨어에 직접 설치하느냐, Host OS를 설치하고 그 위에 설치하느냐 하는 차이에 있습니다. 가상화의 구분과는 조금 다른 결의 내용이라 별도로 정리해 보았습니다.

 

 

Image&nbsp; 4 &nbsp; Bare-metal and Hosted Hypervisor

 

 

이 두가지 방식은 분명한 차이가 있습니다. Bare-metal Hypervisor는 소프트웨어(펌웨어)는 서버 운영체제 구동전에 하드웨어 레이어 바로 상위에서 동작합니다. 높은 성능, 신뢰성, 높은 보안성을 요구하는 경우에 적합하다고 볼 수 있습니다. 

 

Hosted Hypervisor는 자원 할당 및 사용을 위해서 Host 운영체제의 서비스를 활용합니다. 적은 비용과 사용과 설치가 쉽다는 점에서 차이가 있습니다.

클라우드(Cloud)와 가상화(Virtualization)의 차이

앞서 가상화 및 하이퍼바이저에 대해서 간략하게 알아 보았습니다. 그럼 이제 가상화와 클라우드의 차이점에 대해서 이야기 나눠보고자 합니다. 분명한 것은 클라우드가 되려면 “가상화” 기술이 필요하다는 것입니다. 즉, 클라우드 서비스는 가상화 기술을 기반으로 구축/구현 된다고 볼 수 있습니다.

 

그렇다면 무엇이 다르냐하면, 대표적으로 꼽을 수 있는 것이 오케스트레이터(Orchestrator) 기능입니다. 호스트에 설치되어 있는 운영체제와 VMM을 통합 적으로 관리하는 것은 물론 네트워크 가상화, 스토리지 가상화까지 관리하는 것이 바로 오케스트레이터가 하는 역할이라고 볼 수 있습니다. 

 

 (하이퍼바이저 및 네트워크 가상화 기능이(NFV) 설치된)물리 서버의 각 영역(Server, Storage, Network Domain)에 대한 정보를 수집 관리하여 실제 클라우드 포탈을 통하여 서버 생성 요청이 있을 경우 적절한 물리 서버를 선택하여 배포하게 됩니다. 또한, 물리 서버(Physical Server:저희 이노그리드에서는 Server Node라고 표현합니다)가 문제가 발생할 경우 해당 서버에서 동작중인 가상머신(Virtual Machine)을 오케스트레이터에 의해서 관리 중인 다른 물리 서버에 마이그레이션(Migration)및 복구(Recovery)를 하게 되고, 오토스케일(Auto-scale)등에 대한 동작, 오토스케일을 위한 모니터링(Monitoring), 생애주기 관리(Lifecycle Management)등의 기능을 담당하는 역할을 합니다(그 밖에도 추가적으로 Log등 더 많은 기능을 넣어 제공할 수 있습니다).

 

 

Image&nbsp;5&nbsp;IBM's&nbsp;Orchestrator do&nbsp;(Denny 2015)

 

 

요즘에는 가상화 지원되는 서버를 묶어 오케스트레이터를 통하여 관리하던 영역을 넘어서 여러 다른 형태의 클라우드 서비스를 묶어서 관리할 수 있는 멀티 클라우드 오케스트레이터(Multi Cloud Orchestrator)도 출시되고 있는 것이 현실입니다.

 

 

Image&nbsp; 6 &nbsp;Multi-Cloud Orchestrator&nbsp;(Suchitra 2016)

 

 

그리고 이런 오케스트레이터에 명령을 전달할 수 있는 클라이언트 응용프로그램(Client Application)을 제공함으로써(대부분 웹페이지를 제공) 우리가 알 고 있는 클라우드 서비스가 이뤄진다고 볼 수 있다.

 

 

Image&nbsp; 7 &nbsp;Cloud Clients&nbsp;(Aavindraa 2012)

 

 


인용 및 참고 자료

Suchitra, Venugopal. 2016. "IBM." Cloud orchestration technologies: Explore your options. 11 7. Accessed 1 20, 2021. https://developer.ibm.com/articles/cl-cloud-orchestration-technologies-trs/.

Denny, Muktar. 2015. "Cloud Orchestrator - IBM Software Defined Environment Event." Slideshare. 19 8. Accessed 1 20, 2021. https://www.slideshare.net/DennyMuktar/cloud-orchestrator-ibm-software-defined-environment-event.

허, 의남. 2010. "Virtualization Overview." 04_virtualization_v1-1. Edited by 의남 허. Translated by 의남 허. 15 6.

Aavindraa. 2012. Wikipedia. 8 4. Accessed 1 20, 2021. https://upload.wikimedia.org/wikipedia/commons/3/3c/Cloud_computing_layers.png.

Andrew. 2014. Bicycle and Programming. 12. Accessed 1 20, 2021. http://andrewloyolajeong.blogspot.com/2014/12/bare-metal-and-hosted-hypervisor.html.