가상머신

위키원
leejia1222 (토론 | 기여)님의 2020년 8월 19일 (수) 13:51 판
이동: 둘러보기, 검색

가상머신(VM, virtual machine)이란 소프트웨어를 이용하여 특정한 컴퓨터 시스템을 에뮬레이션한 것을 말한다. 가상기계 또는 브이엠(VM)이라고도 한다. 에뮬레이션(emulation)이라는 소프트웨어 기술을 사용하여, 하나의 컴퓨터가 다른 기종의 컴퓨터와 동일한 방식으로 작동하는 것처럼 보이도록 만드는 것을 말한다. 가상머신 기술을 이용하면 하나의 물리적 하드웨어(H/W) 시스템 위에 다수의 가상 환경을 구성하여, 복수의 운영체제(OS)나 시스템을 운영할 수 있다. 자바 가상머신JVM(=Java Virtual Machine)이라고 한다.

종류

가상머신은 시스템 가상머신과 프로세스 가상머신으로 나뉜다.

시스템 가상머신

시스템 가상머신(system virtual machine)은 각 운영체제를 실행하는 가상머신 사이의 기초가 되는 물리 컴퓨터를 다중화한다. 가상화를 제공하는 소프트웨어 계층은 가상머신 모니터 또는 하이퍼바이저라고 한다. 하이퍼바이저는 하드웨어 또는 호스트 운영 체제 위에서 실행할 수 있고 여러 가지 운영체제를 제공하기 위해서 멀티부팅의 어려움을 겪지 않아도 되고 각각은 서로 독립되어 있어서 서로 영향을 미치지 않는다. 또한 시스템 가상머신은 완전한 운영체제(OS) 실행을 지원한다.

프로세스 가상머신

프로세스 가상머신(process virtual machine)은 운영체제 안에서 일반 응용 프로그램을 구동하고 단일 프로세스를 지원한다. 프로세스가 시작하고, 끝내기되어 파괴될 때 만들어진다. 목적은 어떤 플랫폼에서나 동일한 방식으로 실행되는 프로그램을 허용하고, 기초가 되는 하드웨어나 운영체제의 상세한 부분을 가져오는 독립 프로그래밍 환경을 제공하기 위함이다. 또한 프로세스 가상머신은 하나의 단일 프로세스를 지원한다.

특징

가상머신의 중요한 특징은 내부에서 작동하는 소프트웨어가 가상머신이 정해놓은 환경과 자원에 대한 제약을 받아서 결국 가상 세계를 벗어날 수 없다는 것이다.

장점

  • 가상화 시스템은 물리적 하드웨어 시스템에 대한 요구를 줄여서 비용을 절감한다.
  • 가상화 시스템은 하드웨어를 보다 효율적으로 사용하므로, 하드웨어 및 관련 유지보수 비용이 절감되고 전력 및 냉각 수요가 줄어든다.
  • 가상화 하드웨어에 장애가 발생하지 않으므로 관리자는 가상 환경을 활용하여 백업, 재해복구(DR), 새로운 시스템 구축 및 기본 시스템 관리 작업을 간소화하여 수행할 수 있다.

단점

  • 하나의 하드웨어의 중단으로 인해서 자원이 과도하게 사용되거나 여러 가상머신(VM)에서 운영이 중단되는 등 통합에 따른 위험이 존재한다.

활용

가상머신은 자바 등 다양한 프로그래밍 언어와 블록체인 기반의 암호화폐 플랫폼에서 활용되고 있다.

비교

컨테이너

컨테이너화를 이끄는 두 가지 주도적인 힘은 컨테이너 가동에 널리 사용되는 툴인 도커, 그리고 여러 컨테이너를 관리하는 데 도움이 되는 구글 쿠버네티스다. 컨테이너는 호스트 OS의 커널을 공유하는 독립적인 코드 실행 환경이다. 컨테이너는 중복 게스트 OS 및 관련 시작 오버헤드를 건너뛰므로 가상머신에 비해 더 능률적이고 가볍다. 개발자는 동일한 하드웨어에서 가상머신에 비해 6~8배 더 많은 컨테이너를 실행할 수 있다. 컨테이너에도 단점은 있다. 비교적 새로운 접근 방법이므로 성숙한 기술에서 흔히 볼 수 있는 풍부한 관리 툴이 없고 따라서 설정과 유지보수 작업이 많이 필요하다. 또한 보안에 대한 우려도 있다. 가상머신에서는 게스트 이미지를 사용해서 호스트에서 호스트로 손쉽게 워크로드를 옮길 수 있지만 베어 메탈은 업그레이드와 이동이 더 어렵다. 베어 메탈 서버에서는 머신 상태 롤백이 쉽지 않은 일이다.

서버리스 컴퓨팅

전통적인 IaaS 클라우드 환경에서 고객은 먼저 가상머신, 스토리지, 데이터베이스, 관련 보안 및 관리 툴을 프로비저닝한 다음 가상머신에 애플리케이션을 로드한다. 서버리스 컴퓨팅에서는 개발자가 코드를 쓰고 클라우드 서비스 제공업체가 나머지 모든 부분을 처리한다. 개발자는 서버, 운영체제, 프로비저닝 또는 관리에 대해 생각할 필요가 없다. 물론 코드를 실행하는 실제 서버가 있지만 이는 클라우드 서비스 제공업체의 책임이다. 모놀리식 애플리케이션 대신 코드는 구체적인 함수로 세분화된다. 그 함수를 트리거하는 이벤트가 발생하면 서버리스 서비스(아마존 람다(Lambda) 등)가 함수를 실행한다. 서버리스 제공업체는 함수별로 고객에게 비용을 청구한다. 마이크로서비스/컨테이너 시나리오와 마찬가지로, 서버리스 컴퓨팅은 가상머신 계층을 건너뛰며 함수는 베어 메탈에서 실행된다. 현재 시점에서 서버리스 컴퓨팅은 비교적 미성숙한 기술이며 사용 사례도 제한적이다.[1]

각주

  1. Neal Weinberg , 〈서버 가상화의 미래 : 컨테이너 및 서버리스 비교 진단〉, 《아이티월드》, 2018-07-13

같이 보기