
이 글에서 다룰 내용
이번 글에서는 PART 1의 연장선으로,VM:Virtual Machine이 무엇인지 그리고 VM이 왜 단순한 "서버 여러 개"가 아니라 하드웨어를 추상화한 결과물이라고 불리는지 다룸VM이 실제로 무엇을 제공하고, 무엇을 숨기며, OS는 어떤 관점에서 서버를 인식하게 되는지를 중심으로 설명함
학습 목표
이 글을 통해 다음을 이해하는 것을 목표로함
- VM을 단순한 개념 정의가 아니라 구조적으로 설명할 수 있음
- Bare Metal과 VM의 차이를 "추상화" 관점에서 설명할 수 있음
- VM이 제공하는 vCPU, vRAM, 가상 디스크가 무엇인지 감을 잡음
- 이후 Hypervisor, vCPU/vRAM 설명으로 자연스럽게 넘어갈 수 있는 기반을 마련함
VM:Virtual Machine은 하나의 물리 서버 위에서, 여러 개의 독립된 서버가 존재하는 것처럼 동작하도록 만든 논리적 서버임중요한 점은
VM은 단순히 서버를 쪼갠 것이 아니라, 하드웨어를 추상화하여 제공한다는 점임
VM은 실제 하드웨어를 그대로 보여주지 않고, "서버처럼 보이는 환경"을 만들어 OS에게 제공함
🔹 Bare Metal환경에서는
운영체제(OS)가 물리 하드웨어를 직접 인식함
- 실제 CPU 코어
- 실제 메모리 주소
- 실제 디스크 장치
그리고 OS는 이 모든 것을 있는 그대로 다룸.
반면,
🔹 VM 환경에서는
OS가 물리 하드웨어를 직접 보지 못하며, OS가 인식하는 것은
- vCPU
- vRAM
- 가상 디스크
- 가상 네트워크 카드
를 인식하기때문에 OS는 이게 진짜 하드웨어인지 알 수 없으며, 그저 서버 하나가 있다고 믿고 동작할 뿐임
하드웨어 추상화란 흔히 물리 자원을 그대로 나눠 쓰는 것으로 오해되지만, 본질은 그보다 한 단계위의 개념임
추상화의 핵심은 다음과 같음
즉, 하드웨어의 추상화란
물리 자원의 실제 형태와 동작 방식은 감춘 채, OS에게는 항상 같은 방식으로 사용할 수 있는 가짜 하드웨어를 제공하는 개념
VM 환경에서 보면
하지만 OS는 이를 진짜 CPU, 메모리, 디스크처럼 사용함
각 VM은 아래의 요소들을 가지고 있음
- 독립된 운영체제
- 독립된 프로세스 공간
- 독립된 파일 시스템
- 독립된 네트워크 인터페이스
VM 내부에서 보면, 다른 VM의 존재를 알 수 없으며, 물리 서버를 공유하고 있다는 사실도 인식하지 못함
VM은 사용자와 OS 관정에서 완전히 독립된 서버처럼 보이도록 설계된 환경임
VM을 그저 "CPU와 메모리를 로 나눈 것" 으로 이해하는것은 타당하지 않음
실제로 Hypervisor는 다음과 같은 역할을 수행함
Bare Metal와 VM의 가장 큰 구조적 차이는
하드웨어 자원을 누가, 어떻게 조율하느냐에 있음.
VM 환경에서는 hypervisor가 CPU와 메모리 같은 물리 자원을 직접 중재하고 스케줄링함
그 결과,
VM환경에서는
하나의 물리 서버 자원을 여러 VM이 함께 사용하기 때문에
- 특정 VM이 자원을 거의 사용하지 않는 동안 다른 VM이 해당 자원을 사용할 수 있으며,
- 전체 서버 관점에서 자원이 보다 균형있게 사용됨.
이로 인해 서버당 평균 자원 활용률이 크게 개선됨
VM 환경에서는
버서를 물리 장비가 하닌 논리적 개체로 다룸
- 미리 준비된 이미지 기반으로 VM을 생성하고
- 하드웨어 설치 없이 수 분 내에 새로운 서버를 준비할 수 있음
이로써 서버 확장의 시간 단위가 '수 주'에서 '수 분'으로 바뀌게 됨
VM 환경에서는
장애의 기본 단위가 물리서버가 아닌 VM이기 때문에 하나의 VM에 문제가 발생하더라도 동일 물리 서버위의 다른 VM에는 영향을 최소화할 수 있음
VM환경에서는 장애의 영향 범위를 논리적으로 분리할 수 있게 됨
VM은 서버를 이미지 기반으로 관리할 수 있음
- 동일한 이미지로 여러 VM을 생성하고,
- 테스트 환경과 운영 환경을 동일하게 맞출 수 있으며,
- 서버 간 환경 편차를 크게 줄일 수 있음
이로 인해
"환경 차이로 발생하는 문제"가 운영 이유의 주요 원인에서 점차 일려나게됨
결론부터 말하자면 완벽한 해답은 아님
VM은 Bare Metal 환경의 많은 문제를 해결했지만, 새로운 형태의 과제를 함께 가져옴
운영의 기본 단위가 여전히 "서버(VM)"에 머물러 있음
이 점은
서비스와 애플리케이션이 더 작고 빠르게 변화하기 시작하면서 점점 더 부담으로 작용하게 됨
이 한계가 이후 Container와 Kubernetes로 이어지는 또 하나의 전환점을 만듦
VM은
- 서버를 물리 장비가 아닌 추상화된 자원 단위로 다루게 만든 기술로
- 자원 활용률
- 서버 생성 속도
- 장애 격리
- 운영 표준화
와 같은 문제를 크게 개선함
그러나
- 운영의 기본 단위는 여전히 VM에 머무르며,
- 애플리케이션 중심 운영에는 한계를드러냄