가상 머신(Virtual Machine)
가상화
💡 가상화 기술이 무엇인지, 왜 생겨났을까?
- 가상화
- 하나의 물리 하드웨어 시스템에서 여러 시뮬레이션 환경이나 전용 리소스를 생성하는 프로세스
- 네트워크, 서버, 운영 체제를 마치 여러 개로 나뉜 것 처럼 쓸 수 있다.
- 가상화 기술은 왜 생겨났을까?
- 대부분의 기업이 물리 서버(실제 컴퓨터) + 한 회사 기술을 사용하고 있었기 때문에 다른 회사의 하드웨어에서는 오래된 프로그램(레거시 애플리케이션)을 실행하기 어려웠다.
- 각 물리 서버에서 회사별 작업을 1개만 실행할 수 있었기에 자원이 낭비되었다.
- 이 때, 가상화를 사용하면 이러한 문제를 해결할 수 있었다.
- 파티셔닝: 가상화를 통해 하나의 실제 컴퓨터를 여러 개의 가상 컴퓨터로 파티셔닝했고, 여러 유형의 버전 및 운영 체제에서 레거시 애플리케이션을 실행할 수 있게 되었다.
- 비용 절감: 실제 컴퓨터를 더 많이 구매하지 않아도 되었으므로 비용도 감소되었다.
- 대부분의 기업이 물리 서버(실제 컴퓨터) + 한 회사 기술을 사용하고 있었기 때문에 다른 회사의 하드웨어에서는 오래된 프로그램(레거시 애플리케이션)을 실행하기 어려웠다.
가상머신
💡 가상머신의 구조
- 가상머신
- 물리적 하드웨어 시스템에 구축되어 가상 컴퓨터 시스템으로 작동하는 가상 환경
- 하나의 물리적 컴퓨터 위에서 여러 운영 체제를 동시에 실행해 각각 독립적인 서버처럼 작동한다.
- 가상머신의 구조
하이퍼바이저
라는 소프트웨어를 하드웨어에 직접 연결해 1 개의 시스템을 가상 머신으로 분할**한다.- 가상 머신을 호스트 컴퓨터에서 실행하고 실제 하드웨어 리소스를 필요에 따라 각 가상 머신에 적절히 분배한다.
- VMM(가상 머신 모니터)라고도 하며, 여러 가상 머신이 실행 및 모니터링 되는 가상 플랫폼을 만든다.
Host OS
는 하이퍼바이저가 탑재된 물리적 머신이다.Guest OS
는 리소스를 사용하는 여러 가상머신들이다.
가상머신, 어디에 사용할까?
💡 가상머신의 활용
- 독립적인 개발, 테스트 환경 만들기
- 가상화된 환경은 운영 환경에 영향을 주지 않기 때문에 개발자가 가상 시스템을 빠르게 복제해 테스트가 가능하다.
- 레거시 시스템 운영
- 레거시 시스템의 호환성 문제를 가상 머신을 통해 해결해 신규 하드웨어에서도 실행할 수 있다.
가상머신 vs 컨테이너
💡 가상머신과 컨테이너를 비교해보자
- 가상머신
- 전체 컴퓨터를 하드웨어 계층까지 가상화한다.
- 하나의 컴퓨터에서 여러 개의 다른 컴퓨터를 돌릴 수 있다. (독립된 작은 컴퓨터)
- 컨테이너
- 운영체제 수준 위의 소프트웨어 계층만 가상화한다.
- 하나의 컴퓨터 안에 여러 개의 작은 공간을 만들어 컴퓨터의 기본 운영체제를 공유하며, 각자 프로그램만 따로 가지고 있다. (하나의 컴퓨터를 여러 부분으로 나눔)
- 하지만 동일한 하드웨어 시스템을 공유하므로 한 컨테이너가 악용되면 공유 하드웨어에 영향을 미칠 수 있다.
가상머신 | 컨테이너 | |
---|---|---|
성능 | 각 가상머신마다 전용 운영체제를 사용해 메모리 사용량이 높다. | 운영체제 환경을 공유하므로 리소스를 더 적게 사용한다. |
공간 차지 | 애플리케이션 + 운영체제이므로 공간 차지를 많이 한다. (GB 단위) | 애플리케이션을 실행하는 데 필요한 라이브러리와 도구만 포함해 더 적게 차지한다. (MB 단위) |
제어 | 전체 환경을 보다 효과적으로 제어할 수 있다. | 컨테이너 외부 환경에 대한 제어 권한이 적다. |
유지관리 | 운영체제를 업데이트할 경우 Host OS 업데이트 + 각 Guest OS 업데이트가 필요하다. | 컨테이너 Host OS만 업데이트하면 되어서 간소하다. |
적합한 사용 | 프로젝트에 특정 하드웨어 요구사항이 있거나 다른 플랫폼을 대상으로 해야 하는 경우 사용한다. | 소프트웨어 전용 요구사항은 컨테이너를 사용한다. |
- 출처
https://www.redhat.com/ko/topics/virtualization
https://cloud.google.com/learn/what-is-a-virtual-machine?hl=ko
https://www.oracle.com/kr/cloud/compute/virtual-machines/what-is-virtual-machine/
https://www.ibm.com/kr-ko/topics/virtual-machines
https://azure.microsoft.com/ko-kr/resources/cloud-computing-dictionary/what-is-a-virtual-machine
https://learn.microsoft.com/ko-kr/virtualization/windowscontainers/about/containers-vs-vm
https://aws.amazon.com/ko/compare/the-difference-between-containers-and-virtual-machines/
'💾 CS' 카테고리의 다른 글
CI/CD (Continuous Integration/Delivery & Deployment) (0) | 2024.03.21 |
---|---|
컨테이너(container)와 도커(docker) (0) | 2024.03.20 |
IaaS, PaaS, SaaS (0) | 2024.03.19 |
온프레미스(on-premises), 오프프레미스(off-premises) (0) | 2024.03.18 |
JSON과 XML (0) | 2024.03.18 |