가상화란?
가상화란 물리적인 컴퓨터 자원을 추상화하며, 분산 컴퓨팅 환경을 가능하게 하는 것이다. 물리적인 컴포넌트를 논리적인 객체로 추상화한다. 예를 들어, 하나의 장치를 여러 개처럼 동작시키거나, 반대로 여러 개의 장치를 묶어 마치 하나의 장치인 것처럼 사용자에게 제공한다.
- 가상화의 대상 : 프로세서, 메모리, 스토리지, 네트워크
VM이란?
VM이란 컴퓨터 환경을 소프트웨어적으로 구현한, 어플리케이션을 실행하기 위한 환경을 의미한다.
하이퍼바이저란?
하이퍼바이저란 하드웨어와 다수의 VM간의 인터페이스 역할을 하는, 즉 가상 머신을 생성하고 구동하는 소프트웨어이다.
하이퍼바이저 유형
하이퍼바이저는 2개의 타입으로 나뉜다.
VM과 하이퍼바이저의 차이점은?
- 첫번째 타입은 전가상화로, 하드웨어에 어떤 소프트웨어도 설치되어 있지 않은 상태에서 하이퍼바이저를 설치하고 그 위에 가상머신을 생성하고 원하는 운영체제를 설치하는 방식이다. 이는 하이퍼바이저가 OS에 종속되지 않고, 하이퍼바이저가 직접 하드웨어를 제어할 수 있기 때문에 OS의 오버헤드가 적다는 장점이 있다. 하지만 여러 하드웨어 드라이버를 세팅해야 하므로 설치가 어렵다는 단점이 있다.
- 두번째 타입은, 반가상화로, 하드웨어에 OS를 설치하고 그 위에 하이퍼바이저를 설치하는 방식이다. 기존의 컴퓨터 환경에 하이퍼바이저를 활용하는 것인데, 이는 설치가 용이하다는 장점이 있지만 타입1보다 성능이 떨어질 수 있다는 단점이 있다.
가상 머신은 가상화를 통해 구현되는 복제된 컴퓨터 환경이고 하이퍼바이저는 이 가상머신들을 컨트롤 하는 중간 관리자 역할을 한다.
컨테이너란?
컨테이너는 선박의 컨테이너처럼 프로세스가 사용하는 자원을 격리 하는 것이다.
호스트OS상에 논리적인 구획을 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것이다.
VM과 컨테이너의 차이점 비교
먼저 VM은 운영체제 위에서 가상머신 내에 운영체제가 또 설치되므로, 더 많은 리소스가 필요하다. 이 때문에 성능이 떨어지고 비효율적이라는 단점이 있지만, 이는 장점이 될 수도 있다. 각각 독립된 VM들로 안정적인 운영이 가능하다는 점이다.
이와 반대로 컨테이너는 호스트와 동일한 운영체제에서 실행되고 운영체제 레벨에서 리소스를 격리하여 컨테이너에 할당하기 때문에 게스트OS가 필요가 없고 효율적이다. 하지만 이는 단점이 될 수도 있다. OS커널을 공유하기 때문에, 장애 발생 시 같이 영향을 받는다는 점이다. 또한, VM은 이식성이 낮고 컨테이너는 이식성이 높다. VM은 OS, 애플리케이션, 라이브러리에 의존하기 때문에 이식성이 낮고, 컨테이너는 작고 가벼워 멀티클라우드 환경뿐 아니라 베어 메탈 시스템 간에도 쉽게 이동할 수 있다.