가상화(Virtualization) 는 하나의 물리적인 컴퓨터(서버) 자원을 논리적으로 분리해서 여러 개처럼 사용하는 기술이다.
예를 들어, 컴퓨터 한 대를 🧑💻 개발자가 두 명이 나눠 쓴다고 할 때, 서로 간섭 없이 각각의 OS를 설치하고 독립적으로 사용할 수 있다면 얼마나 좋을까?
그걸 가능하게 하는 기술이 바로 가상화다.
1️⃣ 하드웨어 가상화 (서버 가상화)
대표 예: VMware, VirtualBox, KVM
물리적인 서버 하나에 여러 개의 가상 머신(VM) 을 띄움
각 가상 머신은 자체 OS와 자원을 가짐
2️⃣ 운영체제 수준 가상화 (컨테이너 가상화)
대표 예: Docker 🐳
하나의 OS 커널을 공유하면서, 격리된 컨테이너를 실행
VM보다 가볍고 빠름
가상화를 가능하게 해주는 핵심 기술이다.
| 종류 | 설명 | 예시 |
|---|---|---|
| Type 1 (Native) | 하드웨어 위에 직접 설치 | VMware ESXi, Hyper-V |
| Type 2 (Hosted) | 기존 OS 위에 설치 | VirtualBox, VMware Workstation |
| Hypervisor는 가상 머신의 생성, 자원 할당, 실행 등을 담당합니다.
| 항목 | 가상머신(VM) | 컨테이너(Docker) |
|---|---|---|
| OS 구조 | 전체 OS 포함 | OS 공유 (커널만 공유) |
| 무게감 | 무거움 | 가벼움 |
| 부팅 속도 | 느림 (수 분) | 빠름 (수 초) |
| 격리 수준 | 높음 | 낮음 (커널 공유) |
| 대표 기술 | VMware, VirtualBox | Docker, Podman |
VM은 완전히 독립적인 환경이 필요할 때
Docker는 빠르고 가벼운 실행 환경이 필요할 때
👍 장점
자원 활용도 향상
유지/보수 효율 증가
테스트 환경 격리
물리 서버 비용 절감
👎 단점
성능 손실 (VM은 오버헤드 존재)
설정 복잡도
하이퍼바이저의 보안 위협
| 분야 | 사용 예시 |
|---|---|
| 개발 | 테스트용 VM 생성, 다양한 OS 환경 검증 |
| 서버 | 하나의 서버에 여러 VM을 띄워 서비스 |
| 클라우드 | AWS, Azure는 모두 가상화 기반 |
| 보안 | 샌드박스 분석 환경 등 |