8/08/2023

Hypervisor Virtualization vs. Container Virtualization

Hypervisor Virtualization

https://www.researchgate.net/figure/Architecture-of-bare-metal-hypervisor-based-virtualization-1_fig1_315884900

하이퍼바이저 가상화 기술은 하나의 컴퓨터에서 하나의 운영체제만 운영하는 방식에서 발생하는 비효율적인 상황(운영체제가 컴퓨터의 모든 자원을 항상 최대로 사용하기 어렵기 때문에 자원들이 유휴(idle) 상태로 낭비되고 서버 자원의 사용량을 예측하기 쉽지 않으며 증감 폭이 크기 때문에 물리적으로 서버를 계속해서 늘려나가는 것은 한계이다.)을 해결하는 기술로 하나의 컴퓨터에서 다수의 독립적인 운영체제를 운영한다. 하이퍼바이저는 하나의 컴퓨터에서 여러 운영체제를 동시에 실행하기 위한 소프트웨어이다.

하이퍼바이저 가상화는 하나의 물리적 서버 위에 존재하는 호스트 운영체제와 그 위에 존재하는 다수의 독립적인 운영체제들로 구성된다. 다수의 독립적인 운영체제는 가상으로 운영되기 때문에 각각의 운영체제는 서로에 대해 알지 못하고 호스트 운영체제조차 알지 못한다. 따라서, 하나의 물리적 서버에서 실행되고 있지만 완전히 독립적인 운영체제로 운영되기 때문에 하나의 물리적 서버의 자원을 각각의 운영체제에 할당하여 효율적으로 사용할 수 있다.


Container Virtualization

https://www.researchgate.net/figure/Container-based-virtualization-architecture_fig3_303230151

기존의 가상화 방식은 위에서 설명한 것처럼 운영체제를 가상화하는 방식이었다. VMware, VirtualBox와 같은 대표적인 가상화 서비스도 이와 마찬가지로 호스트 운영체제 위에 다수의 게스트 운영체제를 가상화하여 사용하는 방식이다. 하지만 여러 게스트 운영체제를 가상화하여 사용하는 방식은 사용법은 간단하지만 기술적으로 너무 무겁다는 단점을 가진다. 각각의 독립적인 운영체제를 실행시켜야 하기 때문에 부팅 시간이 길며 자원을 많이 차지할 수 밖에 없다. 따라서 실제 운영 환경에서는 사용하기 어려웠다.

추가적인 게스트 운영체제를 설치하여 가상화하는 방식은 성능 이슈가 있어 이를 개선하기 위해 프로세스를 격리된 환경에서 실행하는 기술인 컨테이너 가상화 기술이 등장한다. 리눅스에서는 이러한 방식을 리눅스 컨테이너라고 하며 운영체제를 가상화하는 것이 아닌 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하기 때문에 하이퍼바이저 가상화 방식보다 더욱 가볍고 빠르게 동작한다.

컨테이너 가상화 기술을 통해 하나의 서버에 다수의 컨테이너를 실행하면 컨테이너끼리 서로 영향을 끼치지 않고 독립적으로 실행된다. 실행 중인 컨테이너에 접속하여 명령어 입력, 패키지 설치 등 다양한 작업을 할 수 있다. 또한 CPU 혹은 메모리를 제한할 수 있으며 호스트 디렉토리에 마운트하여 내부 디렉토리로 사용할 수도 있다. 새로운 컨테이너를 만드는 시간은 운영체제를 가상화하는 방식과는 비교할 수 없이 빠르며 하나의 프로세스(컨테이너)를 실행하는데 필요한 모든 파일을 이미지로 만들어 놓고 제공하기 때문에 컨테이너 가상화 방식을 사용하면 개발 단계부터 테스트 및 배포에 이르기까지 일관된 환경을 유지할 수 있다.

Update: 2023-08-08

댓글 없음:

댓글 쓰기