Jump to section

컨테이너와 VM 비교 (Container vs VM)

URL 복사

Linux® 컨테이너VM(가상 머신)은 다양한 IT 요소를 결합해 시스템의 나머지 부분으로부터 격리하는 패키징된 컴퓨팅 환경입니다. 이 둘은 확장 방식 및 이식성에서 큰 차이가 있습니다.

  • 컨테이너는 일반적으로 크기가 메가바이트 단위입니다. 앱보다 크거나 실행하는 데 필수적인 모든 파일이 컨테이너에 패키징되는 것은 아니며, 특정 작업을 수행하는 단일 기능(마이크로서비스라고 함)이 컨테이너에 패키징되는 경우가 많습니다. 컨테이너는 경량화 속성과 공유 운영 체제(OS)로 인해 여러 환경 간에 매우 쉽게 이동할 수 있습니다.
  • VM은 일반적으로 크기가 기가바이트 단위입니다. 일반적으로 VM은 자체 OS를 포함하고 있어 리소스 집약적인 기능 여러 개를 동시에 수행할 수 있습니다. VM에서 사용할 수 있는 리소스가 늘어남에 따라 VM은 전체 서버, OS, 데스크탑, 데이터베이스, 네트워크를 추상화, 분할, 복제, 에뮬레이션할 수 있습니다. 

컨테이너와 VM을 비교하는 것은 기술적 차이를 넘어 새로운 IT 프랙티스와 기존 IT 아키텍처 간의 프록시를 비교하는 것입니다. 

새로운 IT 프랙티스(클라우드 네이티브 개발, CI/CD, DevOps)는 워크로드를 일반적으로 기능 또는 마이크로서비스라고 하는 서비스 가능한 최소 유닛으로 분할하여 사용합니다. 이 작은 유닛들은 컨테이너에 최적으로 패키징됩니다. 따라서 여러 팀이 다른 컨테이너에 패키징된 코드를 방해하거나 위협하지 않고 애플리케이션 또는 서비스의 개별 부분에서 작업할 수 있습니다.

기존 IT 아키텍처(모놀리식 및 레거시)는 워크로드의 모든 측면을 하나의 큰 파일 형식으로 분할할 수 없기 때문에 주로 VM과 같은 대규모 환경 내에서 전체 유닛으로 패키징해야 합니다. 전에는 VM 내에서 전체 애플리케이션을 빌드하고 실행하는 것이 일반적이었습니다. 그러나 이 경우 모든 코드와 종속성이 한 곳에 배치되므로 VM의 크기가 커지고 업데이트를 푸시할 때 연속적인 장애와 다운 타임이 발생했습니다.

쉽게 이동할 수 있는 작은 인스턴스(컨테이너)가 필요한지, 아니면 사용자 정의 IT 리소스의 반영구적 할당이 필요한지에 따라 달라집니다.

컨테이너는 특성상 작고 가벼워 퍼블릭, 프라이빗, 하이브리드 및 멀티클라우드 환경뿐 아니라 베어 메탈 시스템 간에도 쉽게 이동할 수 있습니다. 또한 퍼블릭, 프라이빗, 하이브리드멀티클라우드 환경 전반에 걸쳐 일관된 개발 및 자동  관리 환경을 제공하기 위해 설계된 마이크로서비스 컬렉션, 즉 오늘날의 클라우드 네이티브 애플리케이션을 배포하기에 이상적인 환경입니다. 클라우드 네이티브 애플리케이션을 사용하여 새 애플리케이션이 빌드 방법, 기존 애플리케이션이 최적화 방법, 이 모든 애플리케이션 연결 방법을 가속화할 수 있습니다. 주의할 점은 컨테이너가 기본 OS와 호환되어야 한다는 것입니다. VM과 비교했을 때 컨테이너는 다음 용도에 가장 적합합니다. 

  • 클라우드 네이티브 애플리케이션 빌드
  • 마이크로서비스 패키징
  • DevOps 또는 CI/CD 프랙티스 촉진
  • 동일한 OS를 공유하는 다양한 IT 설치 공간에서 확장 가능한 IT 프로젝트로 전환

VM은 모놀리식 워크로드 패키징에 사용되는 기존 방식(현재도 이렇게 패키징되고 있음)인 단일 컨테이너보다 훨씬 더 많은 작업을 실행할 수 있습니다. 하지만 이처럼 확장된 기능으로 인해 OS, 애플리케이션, 라이브러리에 의존하게 되어 VM의 이식성이 크게 저하됩니다. 컨테이너와 비교해 VM은 다음 용도에 가장 적합합니다.

  • 기존, 레거시 및 모놀리식 워크로드 수용
  • 위험한 개발 사이클 분리
  • 인프라 리소스(예: 네트워크, 서버, 데이터) 프로비저닝
  • 다른 OS에서 또 다른 OS 실행(예: Linux에서 Unix 실행)

virtualization vs containers

가상화

하이퍼바이저라고 하는 소프트웨어는 리소스가 파티셔닝되어 VM 전용으로 할당될 수 있도록 리소스를 물리 머신에서 분리합니다. 사용자가 물리 환경의 추가 리소스를 요구하는 VM 명령을 발행하면 하이퍼바이저는 이 요청을 물리 시스템으로 전달하고 변경 사항을 캐싱합니다. VM은 물리 서버처럼 보이고 작동하므로 애플리케이션 종속성 및 대규모 OS 설치 공간(단일 애플리케이션이나 마이크로서비스를 실행하는 데는 거의 필요하지 않음)의 단점을 증대시킬 수 있습니다.

컨테이너

컨테이너는 마이크로서비스 또는 애플리케이션과 이를 실행하는 데 필요한 모든 것이 포함되어 있습니다. 컨테이너에 있는 모든 것은 '이미지'라고 하는 모든 라이브러리와 종속성을 포함하는 코드 기반 파일에 저장됩니다. 이 이미지는 RPM 패키지 및 구성 파일과 함께 제공되므로 이 파일은 Linux 배포 설치로 간주될 수 있습니다. 컨테이너는 너무 작기 때문에 일반적으로 수백 개가 서로 느슨하게 결합되어 있으므로 컨테이너 오케스트레이션 플랫폼(예: Red Hat OpenShift쿠버네티스)을 사용하여 컨테이너를 프로비저닝하고 관리합니다.

Red Hat은 오래전부터 가상화 및 컨테이너 개발을 지원해 왔습니다. Red Hat은 KVM(커널 기반 가상 머신)oVirt 커뮤니티 설립 이래 지속적으로 기여해 왔으며 Docker쿠버네티스 코드베이스에 대한 두 번째 주요 기여자입니다. 또한 이 2가지 기술의 미래에도 투자하고 있습니다. 컨테이너 네이티브 가상화, KubeVirt 및 하이퍼컨버지드 인프라에 대한 Red Hat의 참여로 컨테이너와 VM이 동일한 IT 시스템의 일부로 함께 작동하는 방식이 개선되고 있습니다.

추가 자료

문서

컨테이너와 VM 비교

Linux 컨테이너 및 VM(가상 머신)은 다양한 IT 요소를 결합해 시스템의 나머지 부분으로 부터 격리하는 패키징된 컴퓨팅 환경입니다.

문서

컨테이너 오케스트레이션이란?

컨테이너 오케스트레이션은 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화합니다.

문서

Linux 컨테이너란?

Linux 컨테이너는 시스템에서 격리된 프로세스로, 이러한 프로세스를 지원하는 데 필요한 모든 파일을 제공하는 고유한 이미지에서 실행됩니다.

컨테이너에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

리소스

교육

무료 교육 과정

Running Containers with Red Hat Technical Overview

무료 교육 과정

Containers, Kubernetes and Red Hat OpenShift Technical Overview

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures