프린세스 다이어리

가상머신 vs 컨테이너 차이점 비교, 컨테이너를 사용해야 하는 이유 본문

BE

가상머신 vs 컨테이너 차이점 비교, 컨테이너를 사용해야 하는 이유

개발공주 2021. 9. 13. 12:00
728x90
가상 머신과 컨테이너는 부팅 속도, 메모리 사용량, 자원의 격리와 쿼터 제한, 호스트 OS 환경에 종속적인지 등에서 차이점이 있다.

 

1. 가상 머신 vs 컨테이너 기술 장단점 비교

컨테이너는 호스트OS의 커널을 공유하면서 격리된 컴퓨팅 자원을 제공하는 가상화 기술이다. 가상 머신은 하이퍼바이저와 같은 소프트웨어로 하드웨어를 에뮬레이팅 하고, 그 위에 게스트 OS를 설치하는 방식으로 격리된 컴퓨팅 자원을 제공하는 반면, 컨테이너는 호스트 OS만 필요로 하고, 커널을 공유하여 별도의 프로세스가 동작하는 기술이다. 

 

1-1. 부팅 속도 차이

가상머신을 사용하면, 가상 하드웨어를 준비하고 그 위에 게스트 OS를 부팅하는 시간이 오래 걸린다. 반면 컨테이너는 게스트 운영체제라는 개념이 없고, 컨테이너 플랫폼 위에 프로세스를 띄우는 정도만 수행하면 되기 때문에 부팅 시간에 큰 차이가 있다.

 

1-2. 메모리 사용량 차이

가상머신은 단순히 애플리케이션을 작동시키기 위해 게스트 OS가 별도로 실행되어야 하기 때문에, 이 운영체제를 위한 시스템 메모리만 수백 MB가 소모된다. 반면 컨테이너는 게스트 OS를 띄우지 않기 때문에 애플리케이션과 애플리케이션이 수행할 때 필요로 하는 라이브러리, 환경 구성 정도의 추가 메모리를 소모할 뿐이다.

 

1-3. 자원의 격리와 쿼터 제한 차이

가상머신은 가상 하드웨어를 직접 제어할 수 있기 때문에, 물리적 자원을 분산시키고 격리하는 데 최적화되어 있다. 반면 컨테이너는 가상 하드웨어 없이 작동하기 때문에 격리 수준과 쿼터 제한이 가상 머신에 비해 떨어질 수밖에 없다. 하지만 현재 컨테이너 서비스 플랫폼들의 해당 기술이 발전하고 있다.

 

1-4. 호스트OS의 실행 환경에 종속적인지 차이

컨테이너는 호스트OS의 커널을 공유하기 때문에, 호스트 OS 환경을 그대로 가져갈 수밖에 없다. 예를 들어 리눅스에 컨테이너를 띄워서 Windows 실행 환경을 만들 수는 없다는 의미다. 

 

위와 같은 단점에도 불구하고, 클라우드 서비스 환경에서 컨테이너 기술을 사용하는 것이 가상머신을 사용하는 것에 비해 얻을 수 있는 장점이 많기 때문에 폭넓게 사용되고 있다. 

 

2. 컨테이너를 사용해야 하는 이유

 

내 개인 컴퓨터로 애플리케이션을 개발하고 있다고 가정해 본다면, 내가 작업 중인 애플리케이션의 설정 환경, 의존하고 있는 라이브러리, 종속성 및 파일이 있을 것이다. 동시에 회사에서 사용하는 컴퓨터에서는 자체적인 설정화 표준화된 개발 환경을 갖추고 있을 수 있다. 이때, 서버 환경을 재구축하는 부가적인 작업 없이, 로컬에서 회사 애플리케이션을 에뮬레이팅 하려고 할 때 바로 컨테이너가 필요하다.

 

컨테이너를 사용하면 내 환경에서 외부 애플리케이션을 작동하는 데 필요한 라이브러리, 종속 요소와 파일을 사용하고 품질 검사를 통과하므로, 문제 없이 애플리케이션을 배포할 수 있다. 기존의 가상화 기술을 사용하여 내 컴퓨터에 회사 애플리케이션을 작동시키는 데 필요한 서버를 새로 설치하는 것보다 훨씬 간편하다. 이렇게 신속하게 내 컴퓨터에서 애플리케이션을 실행시킬 수 있다는 것은 빠르게 개발하고 협업하며 비즈니스 요구를 민첩하게 충족할 수 있다는 의미다. 특히 Apache Kafka를 통한 실시간 데이터 스트리밍과 같이 대규모 데이터가 신속하게 이동해야 하는 플랫폼의 경우 컨테이너가 중요한 역할을 한다. 컨테이너 플랫폼은 다양하기 때문에, 본인이 개발하는 애플리케이션에 적합한 컨테이너 플랫폼을 선택하는 것은 컨테이너 자체만큼이나 중요하다. 

728x90
Comments