게시일: 2024년 3월 3일
기고자: Stephanie Susnjara, Ian Smalley
가상 머신(VM)은 하드웨어 대신 소프트웨어를 사용하여 프로그램을 실행하고 애플리케이션을 배포하는 물리적 컴퓨터의 가상 표현 또는 에뮬레이션입니다.
VM은 메모리, CPU, 네트워크 인터페이스 및 스토리지와 같은 단일 물리적 머신의 리소스를 사용하여 기업이 단일 장치에서 서로 다른 운영 체제를 가진 여러 머신을 가상으로 실행할 수 있도록 합니다.
일반적으로 가상 머신을 게스트라고 하며, 하나 이상의 '게스트' 머신이 '호스트' 머신이라고 하는 물리적 머신에서 실행됩니다. VM 기술에는 가상 서버, 가상 서버 인스턴스(VSI) 및 가상 사설 서버(VPS)가 포함됩니다.
글로벌 마켓 인사이트(GMI) 보고서(ibm.com 외부 링크)에 따르면 2023년에 가상 머신 시장 규모가 95억 달러를 넘어섰다고 합니다. GMI는 이 시장이 클라우드 컴퓨팅의 꾸준한 채택에 힘입어 2024년부터 2032년까지 약 12%의 연평균 성장률(CAGR)로 확장될 것으로 예상하고 있습니다. 기업이 확장성, 유연성, 비용 효율성을 위해 클라우드로 전환함에 따라 클라우드 제공업체는 일관된 IT 인프라를 제공하기 위해 가상 머신과 기타 중요 기술(예: 컨테이너)을 지속적으로 통합하고 있습니다.
서비스형 데스크톱(DaaS)을 통해 기업이 온프레미스에 애플리케이션을 배포하는 것과 동일한 수준의 성능과 보안을 달성할 수 있는 방법을 알아보세요.
IBM 뉴스레터 구독하기
가상화는 물리적 컴퓨터 하드웨어를 보다 효율적으로 사용할 수 있도록 하며 클라우드 컴퓨팅의 기반이 됩니다.
가상화는 가상 머신 모니터(VMM)라고도 알려진 하이퍼바이저를 통해 가능합니다. 이 경량 소프트웨어 계층은 서로 나란히 실행되는 가상 머신을 관리합니다.
가상화의 탄생은 IBM이 IBM System/360을 위한 실험적인 시간 공유 연구 프로젝트인 CP-40을 설계하고 출시했던 1964년으로 거슬러 올라갑니다. CP-40은 이후 CP-67과 유닉스로 발전하면서 여러 사용자를 동시에 지원할 수 있는 컴퓨터 하드웨어를 제공했고 가상 머신의 토대를 마련했습니다.
1972년 8월 2일, IBM은 최초의 가상 머신인 VM/370과 가상 메모리를 지원하는 최초의 System/370 메인프레임을 출시했습니다.
1998년 VMware(ibm.com 외부 링크)는 x86 운영 체제를 개발하여 단일 시스템을 각각 고유한 운영 체제가 있는 여러 가상 머신으로 분할할 수 있도록 했습니다. 1999년에는 사용자가 하나의 PC에서 여러 운영 체제를 가상 머신으로 실행할 수 있는 최초의 상용 제품인 VM Workstation 1.0을 출시했습니다.
오늘날 가상화는 엔터프라이즈급 IT 인프라의 표준 관행이자 클라우드 컴퓨팅 경제의 원동력으로, 기업이 용량 활용도를 높이고 비용을 절감할 수 있도록 지원합니다. 데스크탑 환경, 운영 체제, 스토리지 하드웨어, 데이터 센터 등을 포함한 모든 IT 인프라를 가상화할 수 있습니다.
가상화는 하이퍼바이저 기술에 의존합니다. 물리적 컴퓨터 또는 서버(Bare Metal Server라고도 함)에 배치된 이 소프트웨어 계층을 사용하면 물리적 컴퓨터가 운영 체제 및 애플리케이션을 하드웨어에서 분리할 수 있습니다. 이러한 가상 머신은 하이퍼바이저가 관리하는 서버의 원래 리소스(메모리, RAM, 스토리지 등)를 공유하면서 운영 체제와 애플리케이션을 독립적으로 실행할 수 있습니다. 기본적으로 하이퍼바이저는 가상 머신에 리소스를 할당하고 서로를 방해하지 않도록 하는 트래픽 경찰과 같은 역할을 합니다.
하이퍼바이저에는 크게 두 가지 유형이 있습니다.
하이퍼바이저 관리에 따른 분류 외에도 가상 머신은 시스템 가상 머신(전체 가상화 머신이라고도 함)과 프로세스 가상 머신이라는 두 가지 주요 범주로 분류됩니다.
시스템 가상 머신을 사용하면 각각 자체 운영 체제를 실행하는 여러 가상 머신 간에 기본 물리적 머신 리소스를 공유할 수 있습니다. 반면 프로세스 가상 머신(애플리케이션 가상 머신이라고도 함)은 OS 내에서 애플리케이션을 실행하고 단일 프로세스를 지원합니다. 프로세스 VM의 예로는 Java로 컴파일된 프로그램을 실행하는 Java 가상 시스템이 있습니다.
VM은 기존의 물리적 하드웨어에 비해 많은 이점을 제공합니다.
하나의 물리적 컴퓨터에서 여러 가상 머신을 실행할 수 있으므로 고객은 다른 OS를 실행할 때마다 새 서버를 구매할 필요가 없습니다. 따라서 이미 보유하고 있는 각 하드웨어에서 더 많은 수익을 얻을 수 있어 자본 및 운영 비용과 관련된 IT 비용을 크게 절감할 수 있습니다.
VM은 소프트웨어 기반이므로 새로운 VM을 쉽게 가동할 수 있어 새로운 하드웨어 기반 환경을 프로비저닝하는 것에 비해 새로운 워크로드 요구 사항에 맞게 더 빠르게 확장할 수 있습니다.
기업은 필요에 따라 네트워크의 물리적 컴퓨터 간에 VM을 재배치할 수 있습니다. 이 기능을 사용하면 여유 컴퓨팅 성능이 있는 서버에 작업 부하를 할당할 수 있습니다. VM은 온프레미스 환경과 클라우드 환경 간에 이동할 수도 있기 때문에 데이터 센터와 클라우드 서비스 공급자 간에 컴퓨팅 리소스를 공유하는 하이브리드 클라우드 시나리오에 유용합니다.
이미 OS가 설치된 상태에서 VM을 복제할 수 있기 때문에 물리적 서버에 OS를 설치하는 것보다 VM을 생성하는 것이 더 빠르고 쉽습니다. 개발자와 소프트웨어 테스터는 필요에 따라 새로운 환경을 만들어 새로운 작업이 발생할 때 이를 처리할 수 있습니다.
VM은 하드웨어에서 직접 실행되는 운영 체제에 비해 여러 가지 방법으로 보안을 향상시킵니다. 외부 프로그램을 사용하여 VM 파일에서 악성 소프트웨어를 검사할 수 있습니다. 언제든지 VM의 스냅샷을 생성하고 맬웨어에 감염된 경우 해당 상태로 복원하여 효과적으로 VM을 이전 상태로 되돌릴 수 있습니다. 또한 VM을 빠르고 쉽게 생성할 수 있으므로 손상된 VM을 빠르게 삭제하고 다시 생성하여 멀웨어 감염으로부터 신속하게 복구할 수 있습니다.
워크로드와 애플리케이션을 실행하는 데 필요한 물리적 서버 수가 줄어들면 에너지 소비를 획기적으로 줄여 환경에 미치는 영향을 개선할 수 있습니다.
가상 머신은 기업 IT 관리자와 사용자 모두에게 다음과 같이 다양한 용도로 사용됩니다.
x86 마이크로프로세서 아키텍처의 가상화를 성공적으로 상용화한 최초의 기업인 VMware는 가상화 시장의 선두 주자입니다(ibm.com 외부 링크). VMware는 엔터프라이즈 고객에게 유형 1 및 유형 2 하이퍼바이저와 VM 소프트웨어를 제공합니다.
대부분의 하이퍼바이저는 Windows OS를 게스트로 실행하는 VM을 지원합니다. Microsoft의 Hyper-V 하이퍼바이저는 Windows 운영 체제의 일부로 제공됩니다. 설치되면 자체 및 기본 Windows OS를 포함하는 상위 파티션이 만들어지며, 각각 하드웨어에 대한 액세스 권한이 부여됩니다. Windows 게스트를 포함한 다른 운영 체제는 하위 파티션에서 실행되며 상위 파티션을 통해 하드웨어와 통신합니다.
Google의 오픈 소스 Android OS는 모바일 및 커넥티드 홈 디바이스에서 흔히 사용됩니다.
Android OS는 이러한 장치에 일반적으로 사용되는 ARM 프로세서 아키텍처에서만 실행되지만, 매니아, Android 게이머 또는 소프트웨어 개발자는 PC에서 이를 실행하기를 원할 수 있습니다. PC는 완전히 다른 x86 프로세서 아키텍처에서 실행되고 하드웨어 가상화 하이퍼바이저는 VM과 CPU 간에만 명령을 전달하기 때문에 이러한 상황은 문제가 될 수 있습니다. 이는 다양한 명령어 세트를 가진 프로세서에 대해서는 변환하지 않습니다.
Shashlik 또는 Genymotion과 같은 다양한 프로젝트에서는 소프트웨어에서 ARM 아키텍처를 다시 만드는 에뮬레이터를 사용하여 이 문제를 해결할 수 있습니다. 한 가지 대안인 Android-x86 프로젝트는 대신 Android를 x86 아키텍처로 포팅합니다. 이를 실행하려면 Android-x86 프로그램을 VirtualBox 유형 2 하이퍼바이저를 사용하는 가상 머신으로 설치해야 합니다. 또 다른 대안인 Anbox는 호스트 Linux OS의 커널에서 Android 운영 체제를 실행합니다.
Apple은 macOS 시스템이 Apple 하드웨어에서만 실행되도록 허용합니다. 즉, Apple 이외의 하드웨어에서는 VM으로 또는 최종 사용자 라이선스 계약에 따라 실행할 수 없습니다. 그러나 Mac 하드웨어에서 유형 2 하이퍼바이저를 사용하여 macOS 게스트가 있는 VM을 만들 수 있습니다.
Apple은 iOS OS를 엄격하게 제어하고 iOS 기기에서만 실행할 수 있도록 허용하기 때문에 오늘날 VM에서 iOS를 실행하는 것은 불가능합니다.
iOS VM에 가장 가까운 것은 소프트웨어에서 전체 iPhone 시스템을 시뮬레이션하는 Xcode 통합 개발 환경과 함께 제공되는 iPhone 시뮬레이터입니다.
Java 플랫폼은 Java 소프트웨어 개발 언어로 작성된 프로그램을 위한 실행 환경입니다. "한 번 작성하면 어디서나 실행할 수 있다"는 Java의 약속은 모든 Java 프로그램이 모든 Java 플랫폼에서 실행될 수 있다는 것을 의미하며, 이 때문에 Java 플랫폼에는 Java 가상 머신(JVM)이 포함되어 있습니다.
Java 프로그램에는 JVM을 위한 명령어의 한 형태인 바이트코드가 포함되어 있습니다. JVM은 이 바이트코드를 호스트 컴퓨터에서 사용하는 가장 낮은 수준의 언어인 머신 코드로 컴파일합니다. 한 컴퓨팅 플랫폼의 Java 플랫폼에 있는 JVM은 프로세서가 기대하는 머신 코드에 따라 다른 컴퓨팅 플랫폼의 JVM과 다른 머신 코드 명령어 세트를 생성합니다.
따라서 JVM은 전체 OS를 실행하지 않으며 다른 VM처럼 하이퍼바이저를 사용하지 않습니다. 대신 특정 하드웨어에서 실행되도록 애플리케이션 수준의 소프트웨어 프로그램을 변환합니다.
JVM과 마찬가지로 Python VM은 하이퍼바이저에서 실행되거나 게스트 OS를 포함하지 않습니다. 이는 Python으로 작성된 프로그램을 다양한 CPU에서 실행할 수 있도록 하는 툴입니다.
Java와 마찬가지로 Python은 프로그램을 바이트코드라는 중간 형식으로 변환하여 실행할 수 있는 파일에 저장합니다. 프로그램이 실행되면 Python VM은 빠른 실행을 위해 바이트코드를 머신 코드로 변환합니다.
Linux는 많은 VM에서 사용되는 일반적인 게스트 OS입니다. 또한 VM을 실행하는 데 사용되는 일반적인 호스트 OS이며 자체 하이퍼바이저인 커널 기반 가상 머신(KVM)도 있습니다. 오픈 소스 프로젝트이긴 하지만 Red Hat은 KVM을 소유하고 있습니다.
Ubuntu는 Canonical에서 제작한 Linux 배포판입니다. 데스크톱 및 서버 버전으로 제공되며 VM으로 설치할 수 있습니다. 사용자는 Microsoft Hyper-V에 Ubuntu를 게스트 OS로 배포할 수 있습니다. Hyper-V의 고급 세션 모드에서 잘 작동하는 최적화된 버전의 Ubuntu 데스크톱을 제공하여 Windows 호스트와 Ubuntu VM 간의 긴밀한 통합을 제공합니다. 여기에는 클립보드 통합, 동적 데스크톱 크기 조정, 공유 폴더 및 호스트와 게스트 데스크톱 간의 마우스 이동에 대한 지원이 포함됩니다.
퍼블릭 또는 멀티 테넌트 가상 머신은 여러 사용자가 공통의 물리적 인프라를 공유하는 가상 머신입니다. 이 모델은 가상 머신을 프로비저닝하는 가장 비용 효율적이고 확장 가능한 접근 방식입니다. 그러나 멀티 테넌트 환경에는 엄격한 보안 또는 규정 준수 의무가 있는 조직이 선호할 수 있는 몇 가지 격리 특성이 없습니다.
싱글 테넌트 가상 머신의 두 가지 모델은 전용 호스트와 전용 인스턴스입니다.
종량제 모델은 가상 머신에 대한 초기 비용이 없으며, 사용자는 사용한 만큼만 비용을 지불하면 됩니다. 고객은 공급자 및 인스턴스 유형에 따라 시간 또는 초 단위로 요금을 지불합니다.
가장 저렴한 VM 모델인 임시 또는 스팟 인스턴스는 공급자의 초과 용량을 활용하지만 언제든지 공급자가 회수할 수 있습니다. 임시/스팟 인스턴스는 항상 켜져 있을 필요가 없거나 다른 모델에서는 엄청나게 비싼 애플리케이션에 유용합니다.
종량제 모델과 달리 예약 케이스에는 보통 1년에서 3년 사이의 명시적인 약정 기간이 있지만, 큰 폭의 할인 혜택도 함께 제공됩니다.
사용자는 일반적으로 물리적 서버의 총 비용을 지불하고 공급업체가 전용 서버를 제공하는 단위(일반적으로 시간당 또는 월별)에 따라 요금이 청구됩니다.
Bare Metal Servers는 원시 하드웨어, 전력 및 격리가 전부입니다. 이 서버는 하이퍼바이저 주기(가상화 소프트웨어)가 전혀 없는 싱글 테넌트, 물리적 서버로 고객 한 명만을 위한 전용 서버입니다.
데이터 집약적인 애플리케이션 및 규정 준수 요건과 같이 성능 및 격리를 우선시하는 워크로드는 일반적으로 Bare Metal Servers에 가장 적합하며, 특히 장기간에 걸쳐 배포되는 경우 더욱 그렇습니다.
엔터프라이즈 리소스 프로그램(ERP), 고객 관계 관리(CRM), 공급망 관리(SCM), 전자상거래 및 금융 서비스 애플리케이션은 Bare Metal Servers에 적합한 몇 가지 워크로드에 불과합니다.
반면, 워크로드에 최대한의 유연성과 확장성이 필요한 경우 베어 메탈 하드웨어에 하이퍼바이저를 배치하여 가상 머신을 만드는 것이 좋습니다. 가상 머신은 서버 용량과 활용도를 높입니다. 한 VM에서 다른 VM으로 데이터를 이동하고, 데이터 세트의 크기를 조정하고, 동적 워크로드를 나누는 데 이상적입니다.
컨테이너를 이해하는 가장 쉬운 방법은 컨테이너가 기존 가상 머신(VM)과 어떻게 다른지 파악하는 것입니다. 기존 가상화에서 온프레미스든 클라우드든, 하이퍼바이저는 물리적 하드웨어를 가상화하는 데 도움이 됩니다. 그런 다음 각 VM에는 애플리케이션 및 관련 라이브러리 및 종속성과 함께 게스트 OS와 OS 실행에 필요한 하드웨어의 가상 복사본이 포함됩니다.
컨테이너는 기본 하드웨어를 가상화하는 대신 운영 체제(일반적으로 Linux)를 가상화합니다. 각 컨테이너에는 애플리케이션과 해당 라이브러리, 종속성만 포함됩니다. 게스트 OS가 없기 때문에 컨테이너는 매우 가볍고 빠르며 이식성이 뛰어납니다.
컨테이너와 컨테이너를 관리하는 오픈 소스 컨테이너 오케스트레이션 플랫폼인 Kubernetes는 최신 클라우드 네이티브 및 마이크로서비스 아키텍처의 사실상 단위가 되었습니다. 컨테이너는 일반적으로 상태 비저장 서비스와 연결되지만 조직은 상태 저장 서비스에도 컨테이너를 사용할 수 있습니다. 컨테이너는 퍼블릭 클라우드, 프라이빗 클라우드 및 기존 온프레미스 설정에서 일관되게 실행할 수 있기 때문에 하이브리드 클라우드 시나리오에서 표준으로 사용됩니다. 현재 조직은 프라이빗 클라우드에서 애플리케이션을 실행할 수 있지만 내일은 다른 제공업체의 퍼블릭 클라우드에 배포해야 할 수도 있습니다. 애플리케이션을 컨테이너화하면 팀은 현대 IT의 다양한 소프트웨어 환경을 처리하는 데 필요한 유연성을 얻을 수 있습니다.
기업은 컨테이너 및 가상 머신과 공존할 수 있다는 점에 유의해야 합니다. 예를 들어 많은 기업이 VM 기반 인프라를 보유하고 있기 때문에 VM에서 컨테이너를 실행하는 것이 일반적입니다.
회사는 애플리케이션을 실행할 컨테이너를 선택하고 가상 머신이 기본 인프라를 제공하도록 할 수 있습니다. 이 방법은 컨테이너의 이식성과 속도를 가상 머신의 보안과 결합합니다. 또 다른 시나리오에서 금융 기관은 데이터베이스 시스템에 VM을 사용하여 리소스 격리를 통해 보안을 강화하고 고객 대면 모바일 앱과 같은 프론트 엔드 애플리케이션용 컨테이너를 사용할 수 있습니다.
블로그 게시물 "컨테이너와 VM: 차이점은 무엇일까요?"에서 자세한 내용을 살펴보세요.
다음 동영상에서는 컨테이너화의 기본 사항을 설명하고 컨테이너화가 VM 사용과 어떻게 다른지 설명합니다.
가상 머신과 클라우드 제공업체를 선택할 때는 워크로드 요구 사항과 예산 요구 사항, 기타 중요한 요소를 검토하는 것부터 시작해야 합니다. 다음은 가상 머신 서비스 제공업체를 선택할 때 고려해야 할 10가지 사항입니다.
뛰어난 확장성을 갖춘 단일 테넌트 및 다중 테넌트 컴퓨팅 용량을 지원하여 최대 수준의 네트워크 격리 및 제어를 신속하게 실행할 수 있습니다.
IBM Power Virtual Server는 IBM Cloud 서비스에 액세스할 수 있는 구성 가능한 멀티 테넌트 가상 IBM Power 서버 제품군입니다.클라우드와 온프레미스 환경 전반에서 워크로드를 원활하게 이동하고 관리하세요.
IBM z/VM은 보안이 강화되고 확장 가능한 하이퍼바이저 및 가상화 기술을 갖춘 운영 체제로, IBM Z 및 LinuxONE 서버에서 Red Hat OpenShift 뿐만 아니라 Linux, z/OS 및 z/TPF Virtual Machines과 같은 게스트 서버를 실행하도록 설계되었습니다.
클라우드 컴퓨팅은 IT 인프라를 유틸리티로 전환하여 온프레미스에 설치하고 유지 관리할 필요 없이 인터넷을 통해 컴퓨팅 리소스와 애플리케이션에 '플러그인'할 수 있도록 합니다.
하이브리드 클라우드는 퍼블릭 클라우드 서비스, 프라이빗 클라우드 서비스 및 온프레미스 인프라를 단일 분산형 컴퓨팅 환경으로 통합합니다.
DevOps는 소프트웨어 개발 팀과 IT 운영 팀의 작업을 결합하고 자동화하여 고품질 소프트웨어의 제공 속도를 높입니다.
마이크로서비스 또는 마이크로서비스 아키텍처는 하나의 애플리케이션이 느슨하게 결합되고 독립적으로 배포 가능한 여러 개의 작은 구성 요소 또는 서비스로 구성된 클라우드 네이티브 아키텍처 방식입니다.
컨테이너는 애플리케이션 코드가 라이브러리 및 종속 요소와 함께 공통된 방식으로 패키징되어 데스크톱, 기존 IT 또는 클라우드 등 어디서나 코드를 실행할 수 있도록 하는 실행 가능한 소프트웨어 단위입니다.
가상화는 물리적 컴퓨터 하드웨어를 보다 효율적으로 사용할 수 있도록 하는 프로세스이며 클라우드 컴퓨팅의 기반이 됩니다.