그림 4-1을 얼핏 보면 그다지 큰 차이가 없다는 것을 알 수 있다. 결국 게스트 OS 계층만 사라지고 하이퍼바이저는 컨테이너 엔진으로 대체되는 것뿐이다. 하지만 VM과 컨테이너에는 여전히 큰 차이가 있다.
VM에서는 사전에 필요한 물리적 자원량을 설정해야 한다. 예를 들어 사용할 가상 프로세서 수나 램(RAM) 또는 디스크 스페이스 용량(GB)을 정해야 한다. 이러한 값을 정의하는 것은 까다로운 작업일 수 있지만, 다음 사항을 주의 깊게 고려해야 한다.
• 프로세서는 서로 다른 VM 간에 공유될 수 있다.
• VM의 디스크 스페이스는 필요한 만큼만 사용할 수 있도록 설정할 수 있다. 디스크 최대 크기를 정의할 수 있지만, 시스템에서 활발히 사용되는 스페이스만 사용한다.
• 예약 메모리는 총 메모리이며 VM 간 공유되지 않는다.
컨테이너로 쿠버네티스를 사용하는 데 필요한 메모리와 CPU를 설정할 수 있지만 필수는 아니다. 이 값을 지정하지 않으면 컨테이너 엔진은 컨테이너가 정상적으로 작동하는 데 필요한 자원을 할당한다. 컨테이너는 기본 OS를 재사용할 수 있어 완전한 OS가 필요하지 않기 때문에 물리 머신이 지원해야 하는 부하는 물론 사용된 스토리지 스페이스와 애플리케이션 시작 시간도 줄어든다. 따라서 컨테이너는 VM보다 훨씬 가볍다.
결과적으로 두 기술은 모두 장단점이 있으며 궁극적인 결정은 요구 사항에 달려 있다. 예를 들어 다양한 운영 체제를 처리하고, 단일 서버에서 여러 애플리케이션을 관리하고, OS 기능이 필요한 애플리케이션을 실행하려고 한다면 VM이 더 나은 솔루션이다.