가상머신(Virtual Machine) VS 컨테이너(Container)

devH·2023년 3월 30일
0
post-thumbnail

가상머신(VM)이란?

물리적 컴퓨팅 환경을 소프트웨어로 구현한 것으로 즉, 컴퓨터 시스템을 에뮬레이션(가상현실화) 하는 소프트웨어 이며, 각 가상머신상에서 운영체제나 응용프로그램을 설치 및 실행하는 것

컨테이너(Container)란?

개별 Software의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술을 말합니다. 컨테이너는 애플리케이션을 실제 구동 환경으로부터 추상화할 수 있는 논리 패키징 메커니즘을 제공하는 것

차이점

가상 머신(VM)은 하드웨어 기반의 여러 게스트 운영 체제로, 하이퍼바이저를 통해 에뮬레이션됩니다. 컨테이너는 애플리케이션 수준 구성이며 커널 하나를 공유하는 여러 가상 환경을 에뮬레이션합니다.

  • 시스템 성능
    가상머신을 사용하는 기존 가상화는 각 가상머신마다 운영체제가 있기 때문에 가상머신에 구축된 애플리케이션을 실해할 때 메모리 사용량이 필요이상으로 많아진다. 반면에, 컨테이너는 한 운영체제 환경을 공유하여 사용하기 때문에 메모리 사용량이 상대적으로 적고 빠르다.

  • 유지관리
    가상머신은 운영 체제를 업데이트하거나 패치할 경우 기존 컴퓨터를 하나씩 업데이트해야 하고 각 게스트 OS를 개별적으로 패치해야 합니다.
    컨테이너의 경우에는 컨테이너 호스트(컨테이너를 호스트하는 컴퓨터)의 운영 체제만 업데이트하면 됩니다. 따라서 유지관리가 매우 간소화됩니다.

  • 보안성
    가상머신은 보안적으로 문제가 생겨도 각각의 VM이 분리되어 있기 때문에 서로 피해가 가지 않지만 컨테이너는 보안적으로 문제가 생길 수 있다.

정리

  • 기존의 가상머신보다 컨테이너를 선호하는 이유는?
    가상머신은 한 대 마다 자체적인 운영체제, 하드웨어를 구축하여 격리된 방식의 컴퓨팅 환경으로 크기가 커서 메모리 사용이 비효율적이고 느리다.
    반면에 컨테이너는 하드웨어에 설치된 커널(운영체제) 하나를 공유하여 애플리케이션 코드, 라이브러리, 바이너리가 패키징된 컨테이너를 실행한다.
    따라서 자원들 끼리의 이동성과 유연성이 높고 메모리를 많이 차지하지 않고 실행속도가 빨라 성능이 우수하고 커널 하나를 관리하면 변경사항이 모든 컨테이너에 적용되어 서버를 더 효율적으로 유지관리 할 수 있습니다.

**단, 컨테이너는 커널을 공유하기 때문에, 보안적인 문제가 있다.
물리적으로 격리한 가상머신에 비해서는 보안이 취약 할 수 밖에 없다.

profile
'잘'살고 싶은 보통사람

0개의 댓글