개념
Linux® 컨테이너 및 VM(가상 머신)은 다양한 IT 요소를 결합해 시스템의 나머지 부분으로부터 격리하는 패키징된 컴퓨팅 환경입니다. 이 둘은 확장 방식 및 이식성에서 큰 차이가 있습니다.
- 컨테이너는 일반적으로 크기가 메가바이트 단위입니다. 앱보다 크거나 실행하는 데 필수적인 모든 파일이 컨테이너에 패키징되는 것은 아니며, 특정 작업을 수행하는 단일 기능(마이크로서비스라고 함)이 컨테이너에 패키징되는 경우가 많습니다. 컨테이너는 경량화 속성과 공유 운영 체제(OS)로 인해 여러 환경 간에 매우 쉽게 이동할 수 있습니다.
- VM은 일반적으로 크기가 기가바이트 단위입니다. 일반적으로 VM은 자체 OS를 포함하고 있어 리소스 집약적인 기능 여러 개를 동시에 수행할 수 있습니다. VM에서 사용할 수 있는 리소스가 늘어남에 따라 VM은 전체 서버, OS, 데스크탑, 데이터베이스, 네트워크를 추상화, 분할, 복제, 에뮬레이션할 수 있습니다.
컨테이너와 VM을 비교하는 것은 기술적 차이를 넘어 새로운 IT 프랙티스와 기존 IT 아키텍처 간의 프록시를 비교하는 것입니다.
기존 IT 아키텍처(모놀리식 및 레거시)는 워크로드의 모든 측면을 하나의 큰 파일 형식으로 분할할 수 없기 때문에 주로 VM과 같은 대규모 환경 내에서 전체 유닛으로 패키징해야 합니다. 전에는 VM 내에서 전체 애플리케이션을 빌드하고 실행하는 것이 일반적이었습니다. 그러나 이 경우 모든 코드와 종속성이 한 곳에 배치되므로 VM의 크기가 커지고 업데이트를 푸시할 때 연속적인 장애와 다운 타임이 발생했습니다.
어느 기술을 사용해야 하나요?
쉽게 이동할 수 있는 작은 인스턴스(컨테이너)가 필요한지, 아니면 사용자 정의 IT 리소스의 반영구적 할당이 필요한지에 따라 달라집니다.
컨테이너는 특성상 작고 가벼워 퍼블릭, 프라이빗, 하이브리드 및 멀티클라우드 환경뿐 아니라 베어 메탈 시스템 간에도 쉽게 이동할 수 있습니다. 또한 퍼블릭, 프라이빗, 하이브리드 및 멀티클라우드 환경 전반에 걸쳐 일관된 개발 및 자동 관리 환경을 제공하기 위해 설계된 마이크로서비스 컬렉션, 즉 오늘날의 클라우드 네이티브 애플리케이션을 배포하기에 이상적인 환경입니다. 클라우드 네이티브 애플리케이션을 사용하여 새 애플리케이션이 빌드 방법, 기존 애플리케이션이 최적화 방법, 이 모든 애플리케이션 연결 방법을 가속화할 수 있습니다. 주의할 점은 컨테이너가 기본 OS와 호환되어야 한다는 것입니다. VM과 비교했을 때 컨테이너는 다음 용도에 가장 적합합니다.
- 클라우드 네이티브 애플리케이션 빌드
- 마이크로서비스 패키징
- DevOps 또는 CI/CD 프랙티스 촉진
- 동일한 OS를 공유하는 다양한 IT 설치 공간에서 확장 가능한 IT 프로젝트로 전환
VM은 모놀리식 워크로드 패키징에 사용되는 기존 방식(현재도 이렇게 패키징되고 있음)인 단일 컨테이너보다 훨씬 더 많은 작업을 실행할 수 있습니다. 하지만 이처럼 확장된 기능으로 인해 OS, 애플리케이션, 라이브러리에 의존하게 되어 VM의 이식성이 크게 저하됩니다. 컨테이너와 비교해 VM은 다음 용도에 가장 적합합니다.
가상화
하이퍼바이저라고 하는 소프트웨어는 리소스가 파티셔닝되어 VM 전용으로 할당될 수 있도록 리소스를 물리 머신에서 분리합니다. 사용자가 물리 환경의 추가 리소스를 요구하는 VM 명령을 발행하면 하이퍼바이저는 이 요청을 물리 시스템으로 전달하고 변경 사항을 캐싱합니다. VM은 물리 서버처럼 보이고 작동하므로 애플리케이션 종속성 및 대규모 OS 설치 공간(단일 애플리케이션이나 마이크로서비스를 실행하는 데는 거의 필요하지 않음)의 단점을 증대시킬 수 있습니다.
컨테이너
컨테이너는 마이크로서비스 또는 애플리케이션과 이를 실행하는 데 필요한 모든 것이 포함되어 있습니다. 컨테이너에 있는 모든 것은 '이미지'라고 하는 모든 라이브러리와 종속성을 포함하는 코드 기반 파일에 저장됩니다. 이 이미지는 RPM 패키지 및 구성 파일과 함께 제공되므로 이 파일은 Linux 배포 설치로 간주될 수 있습니다. 컨테이너는 너무 작기 때문에 일반적으로 수백 개가 서로 느슨하게 결합되어 있으므로 컨테이너 오케스트레이션 플랫폼(예: Red Hat OpenShift 및 쿠버네티스)을 사용하여 컨테이너를 프로비저닝하고 관리합니다.
Red Hat을 선택하는 이유
Red Hat은 오래전부터 가상화 및 컨테이너 개발을 지원해 왔습니다. Red Hat은 KVM(커널 기반 가상 머신) 및 oVirt 커뮤니티 설립 이래 지속적으로 기여해 왔으며 Docker 및 쿠버네티스 코드베이스에 대한 두 번째 주요 기여자입니다. 또한 이 2가지 기술의 미래에도 투자하고 있습니다. 컨테이너 네이티브 가상화, KubeVirt 및 하이퍼컨버지드 인프라에 대한 Red Hat의 참여로 컨테이너와 VM이 동일한 IT 시스템의 일부로 함께 작동하는 방식이 개선되고 있습니다.