가상 머신이란 무엇입니까? (왜, 언제 사용해야 하는지)

소프트웨어 업계 또는 그 주변에서 일한다면 가상 머신에 대해 들어본 적이 있을 것입니다. 그렇지 않다면 그것들이 무엇이며 무엇을 위해 사용되는지 궁금할 것입니다.

소프트웨어 엔지니어로서 저는 매일 가상 머신을 사용합니다. 소프트웨어 개발에 있어 강력한 도구이지만 다른 용도도 있습니다. VM이라고도 하는 VM은 유연성, 안정성 및 비용 효율성 때문에 많은 기업에서 사용합니다. 또한 폭주하는 소프트웨어 테스트로 인한 재해를 방지합니다.

가상 머신이 무엇이고 왜 사용되는지 살펴보겠습니다.

가상 머신이란 무엇입니까?

가상 머신은 컴퓨터의 기본 OS 내에서 실행되는 Windows, Mac OS 또는 Linux와 같은 운영 체제(OS)의 인스턴스입니다.

일반적으로 데스크탑의 앱 창에서 실행됩니다. 가상 머신은 모든 기능을 갖추고 있으며 별도의 컴퓨터나 머신처럼 작동합니다. 본질적으로 가상 머신은 호스트 머신으로 알려진 다른 컴퓨터 내부에서 실행되는 가상 컴퓨터입니다.

가상 머신 1
이미지 1: 랩톱에서 실행되는 가상 머신.

가상 머신에는 하드웨어(메모리, 하드 드라이브, 키보드 또는 모니터)가 없습니다. 호스트 시스템에서 시뮬레이션된 하드웨어를 사용합니다. 이 때문에 ‘게스트’라고도 하는 여러 VM을 단일 호스트 시스템에서 실행할 수 있습니다.

가상 머신 2
이미지 2: 여러 VM을 실행하는 호스트 시스템.

호스트는 Linux, Mac OS 및 Windows를 비롯한 다양한 운영 체제에서 여러 VM을 실행할 수도 있습니다. 이 기능은 하이퍼바이저라는 소프트웨어에 따라 다릅니다(위의 이미지 1 참조). 하이퍼바이저는 호스트 시스템에서 실행되며 가상 시스템을 생성, 구성, 실행 및 관리할 수 있습니다.

하이퍼바이저는 디스크 공간을 할당하고 처리 시간을 예약하며 각 VM의 메모리 사용량을 관리합니다. Oracle과 같은 애플리케이션은 다음과 같습니다. 버추얼, VM웨어, 패러랠, Xen, Microsoft Hyper-V 및 기타 많은 제품이 하이퍼바이저입니다.

하이퍼바이저는 랩톱, PC 또는 서버에서 실행할 수 있습니다. 로컬 컴퓨터 또는 네트워크에 분산된 사용자가 가상 ​​머신을 사용할 수 있도록 합니다.

다양한 유형의 가상 머신과 환경에는 다양한 유형의 하이퍼바이저가 필요합니다. 그 중 몇 가지를 살펴보겠습니다.

가상 머신 유형

시스템 가상 머신

전체 가상화라고도 하는 시스템 VM은 하이퍼바이저에 의해 실행되며 실제 컴퓨터 시스템의 기능을 제공합니다. 호스트의 기본 운영 체제를 사용하여 시스템 리소스를 관리하고 공유합니다.

시스템 가상 머신에는 종종 빠르거나 여러 개의 CPU, 많은 양의 메모리 및 수많은 디스크 공간이 있는 강력한 호스트가 필요합니다. 개인 또는 랩톱 컴퓨터에서 실행되는 일부는 대기업 가상 서버에 필요한 컴퓨팅 성능이 필요하지 않을 수 있습니다. 그러나 호스트 시스템이 적절하지 않으면 느리게 실행됩니다.

가상 머신 처리

Process Virtual Machines는 SVM과 상당히 다릅니다. SVM을 컴퓨터에서 실행하고 있는데도 알지 못할 수 있습니다. 애플리케이션 가상 머신 또는 관리되는 런타임 환경(MRE)이라고도 합니다. 이러한 가상 머신은 호스트 운영 체제 내에서 실행되며 애플리케이션 또는 시스템 프로세스를 지원합니다.

왜 PVM을 사용합니까? 특정 운영 체제나 하드웨어에 의존하지 않고 서비스를 수행합니다. 필요한 리소스만 포함된 자체 OS가 있습니다. MRE는 별도의 환경에 있습니다. Windows, Mac OS, Linux 또는 기타 호스트 시스템에서 실행되는지 여부는 중요하지 않습니다.

가장 일반적인 프로세스 가상 머신 중 하나는 컴퓨터에서 실행되는 것을 들어봤고 본 적이 있을 것입니다. Java 응용 프로그램을 실행하는 데 사용되며 줄여서 Java Virtual Machine 또는 JVM이라고 합니다.

하이퍼바이저 유형

우리가 우려하는 대부분의 가상 머신은 전체 컴퓨터 시스템을 에뮬레이트하기 때문에 하이퍼바이저를 사용합니다. 베어메탈 하이퍼바이저와 호스트 하이퍼바이저의 두 가지 유형의 하이퍼바이저가 있습니다. 두 가지 모두에 대해 간단히 살펴보겠습니다.

베어메탈 하이퍼바이저

BMH는 기본 하이퍼바이저라고도 하며 호스트의 운영 체제 내에서 실행되는 대신 호스트의 하드웨어에서 직접 실행됩니다. 실제로 호스트의 운영 체제를 대신하여 각 가상 머신의 하드웨어 사용을 예약하고 관리하므로 프로세스에서 ‘중간자'(호스트의 OS)가 제거됩니다.

기본 하이퍼바이저는 일반적으로 회사에서 직원에게 서버 리소스를 제공하는 데 사용하는 대규모 엔터프라이즈 VM에 사용됩니다. Microsoft Azure 또는 Amazon Web Services는 이러한 유형의 아키텍처에서 호스팅되는 VM입니다. 다른 예로는 KVM, Microsoft Hyper-V 및 VMware vSphere가 있습니다.

호스팅된 하이퍼바이저

호스팅된 하이퍼바이저는 시스템에서 실행되는 다른 애플리케이션과 마찬가지로 표준 운영 체제에서 실행됩니다. 호스트의 OS를 사용하여 리소스를 관리하고 배포합니다. 이러한 유형의 하이퍼바이저는 컴퓨터에서 여러 운영 체제를 실행해야 하는 개별 사용자에게 더 적합합니다.

여기에는 Oracle VirtualBox, VMware Workstations, VMware Fusion, Parallels Desktop 등과 같은 애플리케이션이 포함됩니다. 호스팅된 하이퍼바이저에 대한 자세한 정보는 당사 기사에서 찾을 수 있습니다. 최고의 가상 머신 소프트웨어.

가상 머신을 사용하는 이유

이제 가상 머신이 무엇인지 기본적으로 이해했으므로 몇 가지 우수한 응용 프로그램을 생각할 수 있습니다. 다음은 사람들이 가상 머신을 사용하는 몇 가지 주요 이유입니다.

1. 비용 효과적

가상 머신은 다양한 상황에서 비용 효율적입니다. 가장 눈에 띄는 것 중 하나는 기업 세계입니다. 직원에게 리소스를 제공하기 위해 물리적 서버를 사용하는 것은 비용이 많이 들 수 있습니다. 하드웨어는 저렴하지 않으며 유지 관리 비용이 훨씬 더 많이 듭니다.

가상 머신을 엔터프라이즈 서버로 사용하는 것은 이제 표준이 되었습니다. MS Azure와 같은 공급자의 VM을 사용하면 초기 하드웨어 구매 및 유지 관리 비용이 없습니다. 이러한 VM을 설정, 구성 및 사용할 수 있는 비용은 단 XNUMX시간입니다. 또한 사용하지 않을 때 종료될 수 있으며 비용이 전혀 발생하지 않습니다.

컴퓨터에서 VM을 사용하면 비용을 크게 절약할 수도 있습니다. 여러 운영 체제 또는 다른 하드웨어 구성에서 작업을 수행해야 하는 경우 다음을 수행할 수 있습니다.
하나의 호스트에서 여러 가상 머신을 사용하여 각 작업에 대해 별도의 컴퓨터를 구입할 필요가 없습니다.

2. 확장성과 유연성

엔터프라이즈 서버이든 랩톱에서 실행되는 VM이든 가상 머신은 확장 가능합니다. 필요에 맞게 리소스를 쉽게 조정할 수 있습니다. 더 많은 메모리 또는 하드 디스크 공간이 필요한 경우 하이퍼바이저로 이동하여 더 많은 공간을 갖도록 VM을 재구성하면 됩니다. 새 하드웨어를 구입할 필요가 없으며 프로세스를 빠르게 완료할 수 있습니다.

3. 빠른 설정

새 VM을 빠르게 설정할 수 있습니다. 새로운 VM 설정이 필요한 경우가 있었고 이를 관리하는 동료에게 전화를 걸어 XNUMX시간 이내에 사용할 수 있도록 했습니다.

4. 재해 복구

데이터 손실을 방지하고 재해 복구를 준비하려는 경우 VM은 훌륭한 도구가 될 수 있습니다. 백업하기 쉽고 필요한 경우 다른 위치에 배포할 수 있습니다. Microsoft 또는 Amazon과 같은 타사에서 가상 머신을 호스팅하는 경우 가상 머신은 오프사이트에 있게 됩니다. 즉, 사무실이 소실되더라도 데이터는 안전합니다.

5. 재생산 용이

대부분의 하이퍼바이저는 VM의 복사본 또는 이미지를 만들 수 있습니다. 이미징을 사용하면 어떤 상황에서도 동일한 기본 VM의 정확한 복제를 쉽게 스핀업할 수 있습니다.

내가 일하는 환경에서는 모든 개발자에게 개발 및 테스트에 사용할 VM을 제공합니다. 이 프로세스를 통해 필요한 모든 도구와 소프트웨어로 이미지를 구성할 수 있습니다. 새로운 개발자 온보딩이 있을 때 우리가 해야 할 일은 해당 이미지의 복사본을 만드는 것뿐입니다.

6. 개발/테스트에 적합

가상 머신 사용의 가장 큰 장점 중 하나는 가상 머신이 소프트웨어 개발 및 테스트를 위한 완벽한 도구라는 것입니다. VM을 사용하면 개발자는 하나의 시스템에서 여러 플랫폼과 환경에서 개발할 수 있습니다. 해당 VM이 손상되거나 파괴되면 새 VM을 빠르게 만들 수 있습니다.

이를 통해 테스터는 모든 테스트 주기에 대해 깨끗한 새 환경을 가질 수 있습니다. 저는 새 VM을 만들고, 최신 소프트웨어 버전을 설치하고, 필요한 모든 테스트를 실행하고, 테스트가 완료되면 VM을 삭제하는 자동화된 테스트 스크립트를 설정하는 프로젝트에서 작업했습니다.

VM은 TechFewer.com에서 수행하는 것과 같은 제품 테스트 및 검토에 훌륭하게 작동합니다. 내 컴퓨터에서 실행되는 VM에 앱을 설치하고 기본 환경을 어지럽히지 않고 테스트할 수 있습니다.

테스트가 끝나면 항상 가상 머신을 삭제하고 필요할 때 새 머신을 생성할 수 있습니다. 이 프로세스를 통해 Windows 시스템만 있어도 여러 플랫폼에서 테스트할 수 있습니다.

최종 단어

보시다시피 가상 머신은 많은 애플리케이션에 사용할 수 있는 비용 효율적이고 다재다능한 도구입니다. 더 이상 테스터, 개발자 및 기타 사용자에게 서버 액세스를 제공하기 위해 값비싼 하드웨어를 구입, 설정 및 유지 관리할 필요가 없습니다. VM은 우리에게 필요한 운영 체제, 하드웨어 및 환경을 언제든지 쉽고 빠르게 생성할 수 있는 유연성을 제공합니다.