AWS - 클라우드를 가능하게 만든 기술, 가상화
가상화 (virtualizaion) 는 클라우드를 구성하는 핵심 기술 중 하나이다. 우리가 EC2를 배우기 전에 이 '가상화'를 알면, 훨씬 EC2를 잘 이해할 수 있기 때문에 가상화에 대해 먼저 간단하게 훑고 지나가도록 하자.
가상화란?
가상화란, 단일 컴퓨터의 하드웨어 요소를 일반적으로 가상머신 (VM) 이라고 하는 다수의 가상컴퓨터로 분할할 수 있도록 해주는 기술이다. 즉, 하나의 컴퓨터 안에서 여러 개의 서버를 관리할 수 있도록 하는 기술이다.
예를 들어 하나의 컴퓨터에 웹 서버와 메일서버가 함께 있다면, 가상화는 이 두개의 서버를 하나의 통합서버로 합쳐, 두 개의 서버에서 쓰지않는 잉여자원을 줄여 효율적으로 서버를 관리하는 기술인 것이다.
이 가상화 기술을 잘 사용하면, 리소스를 효율적으로 관리할 수 있을 뿐만 아니라 클라우드 컴퓨팅처럼 다수의 컴퓨터를 매니징하는 데 효율적이다.
가상화에 대해 알아보기 전, 알고 있어야 하는 배경지식!
* 특권명령 (Privileged instruction)
어떤 특정한 프로그램이 시스템 요소들과 소통할 수 있는 명령으로, 오직 OS만 가능하다.
* OS (Operation System)
시스템 하드웨어 자원과 소프트웨어 자원을 운영관리하는 프로그램
ex. Windows, Linux, Mac os, Android ...
우리가 유튜브를 보면서 카톡을 하거나, 노래를 들으면서 게임을 하는 등 여러 시스템을 동시에 사용할 수 있는 이유는 일반 프로그램은 특권명령이 필요없기 때문이다.
우리들의 핸드폰은 IOS 아니면 Android OS이고, 우리들의 컴퓨터는 대체로 Mac OS 아니면 Windows 인 것과 같이, 가상화가 등장하기 전까지는 [하나의 시스템 = 하나의 OS] 라는 법칙이 통용되어 왔다. OS는 일반 프로그램이 아니기 때문에 특권명령이 적용되어 하나의 하드웨어 시스템 당 하나밖에 들어갈 수 없는 것이다. 이처럼 OS가 하드웨어에 직접 설치된 상태를 Bare-Metal이라고 한다. 즉, Bare-Metal은 가상화와 반대되는 개념으로, 가상화가 나타나기 전까지는 오로지 Bare-Metal 로만 OS 운영이 가능했었다.
1세대 가상화
이때, 1세대 가상화가 등장했다.
1세대 가상화는 Fully Emulated 라고 불린다.
Emulated. 즉, CPU, 하드디스크 등 모든 시스템 요소가 에뮬레이터 안에서 돌아가는 것이다. 에뮬레이터는 일종의 프로그램으로써, 그 기능이 실제 물질적으로 존재하는 것처럼 구현하는 시스템이다. 간단히 생각하면 사람도, 음식도, 집도 프로그램을 돌려 구현하는 영화 메트리스와 유사하다.
1세대 가상화는, 엄~~~~청나게 느렸다.
2세대 가상화
2세대 가상화는 Paravirtualization이다.
각각의 시스템 안에 들어가있는 Guest OS가
OS와 하드웨어 사이에 존재하는 하이퍼바이저 Hypervisor 와 통신하는 시스템이다.
예전에는 에뮬레이션을 통해 모든 것이 프로그램 안에서 구현되었다면, 2세대 가상화부터는 가상화를 위해 등장한 하이퍼바이저를 통해 속도가 눈에 띄게 향상되었다. 그러나, 여전히 몇몇 요소에 대해서는 에뮬레이터를 필요로 했기 때문에 완벽하지 않다는 단점이 있었다.
3세대 가상화
3세대 가상화는 Hardware Virtual Machine, HVM이 나타나면서 시작되었다. 하이퍼바이저를 제거하고, 하드웨어가 다이렉트로 Guest OS와 통신하며 직접 발벗고 나서 가상화를 지원하는 것이다.
2세대 가상화보다 더욱 더 속도가 향상되면서, 사람들은 3세대 가상화를 Near Bear-Metal, 즉 '거의' Bear-Metal과 유사한 속도의 시스템이라고 명명했다.
결론적으로,
가상화는 AWS 클라우드 환경에서 리소스를 작은 단위로 빠르게 구성할 수 있게 해주는 원동력이다.
우리가 회사에 입사해서 컴퓨터를 제공받을 때에도, 회사는 절대 컴퓨터와 서버를 새로 만들어서 가져다주지 않는다. 나에게 할당된 모니터가 회사의 서버를 이용할 수 있도록 이미 돌고있는 서버를 잘 '가상화'시켜서 제공해주는 것이다.
이후에 배우게 될 EC2가 굉장히 빠른 컴퓨팅 파워를 제공해줄 수 있는 것 역시 가상화 덕분이다. 클라우드와 가상화는 뗄래야 뗄 수가 없는 관계인만큼, 앞으로 클라우드를 배우면서 가상화에 대한 기초적인 이해는 기반으로 가지고 있도록 하자.