오늘은 종종 비교가 되곤 하는 VM과 Container의 차이점에 대해 설명해 보려고 한다.

 

 

VM (Virtual Machine, 가상머신)

VM은 컴퓨터 환경을 말 그대로 가상화하여 소프트웨어로 구현한 것이다. 위 그림에서도 볼 수 있 듯이 VM은 서버, Host OS, Hypervisor 위에 올라가게 되고, 각 VM은 OS, 드라이버, 메모리 등 컴퓨터 환경이 구성되기 위해 필요한 요소들을 갖추게 된다. VM을 사용하면 서버 한 대 안에서도 여러 개의 OS 환경을 구성할 수 있다는 장점이 있고, 그만큼 서버의 공간을 효율적으로 사용할 수 있게 된다.

 

Container (컨테이너)

VM에 비교했을 때 컨테이너는 한 층 더 애플리케이션 중심으로 설계되었다. 위 그림에서 볼 수 있 듯이 컨테이너는 별도의  OS나 드라이버 없이 Host OS를 공유하는 형태로 실행된다. VM이 서버를 여러 대로 사용할 수 있게 해주었다면, 컨테이너는 개별 애플리케이션을 위한 가상 공간을 할당해 준다. 컨테이너는 VM보다 작은 단위이고 내부에서 처리하는 일도 더 적기 때문에 보다 간단하고, 빠르고, 효율적으로 애플리케이션을 실행시킬 수 있다. 하지만 컨테이너를 사용하기 위해서는 하나의 OS만 사용해야 하기 때문에 여러 가지의 OS를 사용할 수 있게 해주는 VM보다는 용도가 제한될 수 있다.

 

VM vs. Container 

컨테이너의 다양한 장점 때문에 컨테이너의 부상이 VM이 종말이 될 것인가에 대한 논쟁은 있지만, 현실적으로 VM은 현재 엔터프라이즈 IT 환경에서 아주 중요한 부분이며 가까운 시일 내에 다른 기술이 VM을 대체하거나 없애는 일은 없을 것이라고 전문가들은 말한다. 컨테이너가 잘 맞는 상황도 있지만 모든 상황에 적합한 것은 아니기 때문에 VM과 컨테이너의 장/단점을 고려하여 상황에 맞게 얼마나 잘 사용하느냐가 관건이 될 것으로 보인다.