기타

Container와 VM의 차이

창욱씨 2020. 12. 10. 22:24

가상화(Virtualization)란

가상화의 개념

가상화는 하드웨어 리소스를 추상적으로 표현하여 사용하는 것을 말합니다. 예를 들어 가상 메모리라고 하면, 메모리라는 하드웨어 리소스를 추상적으로 표현하여 사용합니다. 즉, 실제 메모리를 추상화하여 새로운 계층인 가상 메모리를 만들어냅니다. 추상 계층이 1단계 늘어났기 때문에 메모리에 접근할 때는 가상 메모리 -> 물리 메모리의 형태가 되고, 프로그래머는 물리 메모리의 특성에 대해 알 필요가 없게 됩니다. 또한 가상화 덕분에 수많은 장점이 부가적으로 생길 수 있습니다.

가상화의 종류

가상 머신

가상 머신의 구현 방법에 따라 다르지만, 기본적으로 하이퍼바이저가 여러 개의 가상 머신을 띄우고 실행합니다. 이때 중요한 것은 각 가상머신마다 독립된 실행 환경을 제공한다는 것입니다. 즉 VM1과 VM2가 동일한 OS를 사용한다고 하더라도, 데이터는 물론이고 코드도 전혀 공유하여 사용하지 않습니다. 이로 인해 각 가상머신마다 최소 GB 단위의 공간이 필요하며, 가상 머신 수에 비례해서 늘어나게 됩니다. 퍼포먼스 오버헤드도 상당합니다.

컨테이너

컨테이너는 독립된 실행환경을 제공하지 않습니다. 즉 OS의 많은 자원들을 컨테이너들끼리 공유합니다. 덕분에 부팅시간이 훨신 짧고, 컨테이너 개수가 늘어나더라도 디스크 공간을 많이 차지하지 않습니다. 또한 컨테이너가 완전히 독립된 실행환경을 제공하지 않고 공유한다고 하더라도, 각 컨테이너 내의 프로세스들은 이를 감지하지 못하고 자신이 OS의 모든 자원을 독점하고 있다고 생각합니다.

Container와 VM의 비교

시스템 성능

가상 머신
가상 머신을 사용한 가상화에서는 각 가상 머신마다 전용 운영 체제가 있기 때문에 가상 머신에 구축된 애플리케이션을 실행할 때 메모리 사용량이 필요 이상으로 많아져 가상 머신이 호스트에 필요한 리소스를 모두 사용할 수 있습니다.

컨테이너
기존 가상화와 달리 컨테이너화된 애플리케이션은 완전한 가상 머신보다 리소스를 더 적게 사용하고 호스트 메모리에 가해지는 부담을 줄일 수 있도록 운영 체제 환경(커널)을 공유합니다.

무게

가상 머신
기존의 가상 머신은 디스크 공간을 많이 차지할 수 있습니다. VM 호스트하는 애플리케이션과 함께 전체 운영 체제와 관련 도구도 포함하기 때문입니다.

컨테이너
컨테이너는 가상 머신과 비교했을 때, 상대적으로 가볍습니다. 컨테이너화된 애플리케이션을 실행하는데 필요한 라이브러리와 도구만 포함하기 때문에 가상 머신보다 더 작고 더 빨리 시작됩니다.

유지관리와 업데이트

가상 머신
운영 체제를 업데이트하거나 패치할 경우 기존 컴퓨터를 하나씩 업데이트해야하고 각 게스트 OS를 개별적으로 패치해야 합니다.

컨테이너
컨테이너의 경우 컨테이너 호스트의 운영 체제만 업데이트하면 됩니다. 따라서 유지관리가 매우 간소화됩니다.

728x90