컨테이너 기술과 가상화 기술

GonnabeAlright·2022년 5월 13일
0
post-thumbnail

가상화 기술하이퍼바이저를 통해 하드웨어를 에뮬레이션하는 방법으로 가상 이미지마다 게스트 OS를 사용해야 합니다. 반면 컨테이너커널을 공유하는 방법으로 호스트 OS 하나에서 여러 OS를 가상화합니다.

가상화기술의 문제점

가상화 기술의 고질적인 문제점에는 거대한 이미지 사이즈와, 느린 시작 시간, VM간의 환경 불일치가 있습니다. 따라서 VM 템플릿 관리를 하지만 사이즈가 커서 재사용성을 높이기가 어렵고 부팅 시 Hypervisor-OS-미들웨어-애플리케이션까지 실행되어야 하며 VM 생성 후 개별로 변경 사항을 관리하기 때문에 VM 간 구성이나 환경이 불일치합니다.

가상 머신은 Guest OS에 BIOS, 가상 CPU, 가상 메모리, 가상 디스크, 가상 NIC 등을 제공하여 마치 물리서버에서 실행되는 것처럼 보입니다. 이 때문에 Guest OS 입장에서는 OS 시작과 정지 등의 운영에 있어서 물리서버와 아무런 차이점 없이 운용이 가능합니다. 가상화 기술은 가상머신 이미지마다 게스트 OS가 필요합니다. 이로 인하여 OS에 대한 라이선스가 필요합니다. 또한 운영하면서 가상머신의 OS 별로 차이점이 발생하게 되고 이로 인하여 운영관리의 어려움이 증가하게 됩니다. 시간에 따라 이미지 사이즈가 증가하면서 마이그레이션에 대한 부담도 커지게 됩니다.

컨테이너 기술을 통해 이러한 가상화 기술의 문제점을 해결할 수 있습니다. 아래와 같이 컨테이너 기술이 가진 장점들이 있습니다.

컨테이너 기술의 장점

작은 이미지 사이즈

  • 컨테이너는 레이어 개념으로 이미지에 파일을 추가/삭제하여 관리하며 레이어 사이즈를 최적화하여 이미지 사이즈를 최소화합니다.

빠른 시작 시간

  • 컨테이너는 분리된 프로세스 형식으로 OS 부팅이 필요 없기 때문에 부팅 시간을 최소화 할 수 있습니다.

높은 이동성 (Portability)

  • 애플리케이션에 필요한 라이브러리나 의존 파일들을 이미지에 포함하기 때문에 환경에 의해 발행되는 문제가 거의 없습니다.

컨테이너는 OS를 가상화하여 여러 개의 컨테이너를 OS 커널에서 직접 실행합니다. 컨테이너는 기존의 가상화 기술보다 훨씬 가볍게 동작하며 OS 커널을 공유하고 시작 시간이나 종료 시간이 빠르고 메모리를 훨씬 적게 차지합니다.

컨테이너는 가상 머신과 마찬가지로 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스를 위한 환경을 분리할 수 있도록 해줍니다. 가상화 기술과 컨테이너 기술의 유사점은 여기까지 입니다. 컨테이너를 사용하면 개발자와 IT 운영팀이 훨씬 작은 단위로 업무를 수행할 수 있어 많은 이점이 있습니다.

다음은 가상화의 종류와 특징에 대해서 살펴보겠습니다.

Bare Metal (호스트 가상화)

  • OS 위에 OS가 얹히는 방식으로 오버헤드 증가
  • 자원(CPU, Memory) 격리 불가
  • OS 간 호환성 문제
  • Application 자동 확장 불가

하이퍼바이저 가상화

  • 자원(CPU, Memory) 격리
  • 하이퍼바이저 및 GuestOS 부하
  • 이기종 VM 기술간 호환성 문제
  • 애플리케이션 자동 확장 불가

전가상화 (Full-Virtualization)

전가상화는 하드웨어를 완전히 가상화하는 방식으로 Hardware Virtual Machine이라고도 불립니다. 하이퍼바이저를 구동하면 DOM0이라고 하는 관리용 가상 머신이 실행되며 모든 가상머신들의 하드웨어 접근이 DOM0을 통해서 이루어집니다. 즉, 모든 명령에 대해서 DOM0가 개입을 하게 되는 형태입니다.

쉽게 말해 하이퍼바이저 가상화는 OS가 뭐든지간에 각 OS들이 내리는 명령어를 알아들을 수 있습니다. 예를 들어 add 라는 명령어를 리눅스, 맥, 윈도우에 내렸을 때 하이퍼바이저가 '더해라'라고 번역하여 명령어를 실행해주는 것입니다. 하이퍼바이저는 이러한 번역 역할 뿐만 아니라 가상화된 OS들에게 자원을 할당해주는 역할도 담당합니다.

  • 장점: 하드웨어를 완전히 가상화하기 때문에 Guest OS 운영체제의 별다른 수정이 필요 없음
  • 단점: 하이퍼바이저가 모든 명령을 중재하기 때문에 성능이 비교적 느리다.

반가상화 (Para-Virtualization)

반가상화는 전가상화와 달리 하드웨어를 완전히 가상화 하지 않습니다. 전가상화의 가장 큰 단점인 성능 저하의 문제를 해결하기 위해 하이퍼콜(Hyper Call)이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청을 날릴 수 있습니다. 쉽게 말하면 가상화된 각 OS들이 각각 다른 번역기를 갖고 있는 것입니다. 그 번역기는 각각 다른 OS에서 내리는 각각 다른 명령어를 "더해라"라고 번역해주게 되는 것입니다.

  • 장점: 모든 명령을 DOM0를 통해 하이퍼바이저에게 요청하는 전가상화에 비해 성능이 빠르다
  • 단점: 하이퍼바이저에게 Hyper Call 요청을 할 수 있도록 각 OS의 커널을 수정해야하며 오픈 소스 OS가 아니면 반가상화를 이용하기가 쉽지 않다.

컨테이너 가상화

  • 자원(CPU, Memory) 격리
  • 컨테이너는 OS, Kernel을 공유 프로세스로 시작
  • 표준 컨테이너 기술로 호환성 제공
  • 애플리케이션 자동 확장 및 자동 치유 지원
  • 하이브리드 클라우드 환경

0개의 댓글