Docker + CI,CD/Docker

가상화 기술 : 하드웨어 가상화 vs OS 가상화 vs 컨테이너화

JuNo_12 2025. 6. 18. 12:17

프롤로그 :

Docker를 학습하면서 자연스럽게 가상화 기술에 대한 궁금증이 생겼습니다. "Docker 말고 다른 가상화 기술들은 어떻게 다른가?", "왜 이렇게 여러 종류가 있는가?"에 대한 답을 찾기 위해 가상화 기술의 발전 과정과 각각의 특징을 정리해보겠습니다.


1. 가상화 기술의 탄생 배경

물리 서버 시대의 문제점 :

1990년대까지 대부분의 기업들은 하나의 물리 서버에 하나의 애플리케이션만 실행했습니다. 이로 인해 심각한 자원 낭비가 발생했습니다.

 

물리 서버 1대의 일반적인 상황:

- CPU 사용률: 10-15%

- 메모리 사용률: 20-30%

- 나머지 70-80%는 모두 낭비!

문제점: 자원 낭비 심각 / 서버 구매/운영 비용 과다 / 하드웨어 장애 시 서비스 전체 중단 / 확장성 부족

이러한 문제를 해결하기 위해 "한 대의 물리 서버를 여러 대인 것처럼 나누어 쓸 수 없을까?"라는 아이디어에서 가상화 기술이 시작되었습니다.


2. 가상화 기술 구조 비교

세 가지 주요 가상화 기술의 구조를 시각적으로 비교해보겠습니다. 


3. 하드웨어 가상화 (Hardware Virtualization)

개념과 작동 원리

하드웨어 가상화는 "가짜 컴퓨터를 여러 대 만들기"입니다. 하이퍼바이저(Hypervisor)라는 소프트웨어가 물리적 하드웨어를 가상머신들에게 나누어 주는 중개업자 역할을 합니다.

하이퍼바이저가 하는 일:

  1. 하드웨어 추상화: 물리 CPU 8코어 → VM1(2코어) + VM2(3코어) + VM3(3코어) 물리 RAM 32GB → VM1(8GB) + VM2(12GB) + VM3(12GB)
  2. 완전한 격리: VM1의 크래시가 VM2, VM3에 영향을 주지 않음
  3. 다양한 OS 지원: VM1: Windows Server 2019 VM2: Ubuntu 20.04 VM3: CentOS 8

장단점


4. OS 가상화 (Operating System Virtualization)

개념과 작동 원리

OS 가상화는 "하나의 OS를 여러 개인 것처럼 나누기"입니다. 하나의 운영체제 커널을 공유하면서 각 Zone이나 Jail을 격리시킵니다.


OS 가상화의 특징: 공유되는 것들:

- 운영체제 커널 (하나만 존재)

- 기본 시스템 라이브러리

 

- 디바이스 드라이버 격리되는 것들:

- 프로세스 공간

- 파일시스템 네임스페이스

- 네트워크 설정

- 사용자 계정 대표 기술:

- Solaris Zones (Oracle) - FreeBSD Jails - Linux-VServer

 

장단점


5. 컨테이너화 (Containerization)

개념과 작동 원리

컨테이너화는 "애플리케이션 중심의 가상화"입니다. Docker로 대표되는 이 기술은 애플리케이션과 그 실행에 필요한 것들만 패키징합니다.

컨테이너화의 철학:

  • VM의 패키징: [전체 OS + 애플리케이션] → 무겁고 느림
  • 컨테이너의 패키징: [애플리케이션 + 런타임 의존성만] → 가볍고 빠름 실제 크기 비교: VM: Ubuntu(2GB) + Java(500MB) + App(100MB) = 2.6GB
  • 컨테이너: JRE(200MB) + App(100MB) = 300MB

 

장단점


6. 성능 비교

세 가지 가상화 기술의 성능을 구체적인 수치로 비교해보겠습니다.

 

 


7. 실무 사용 사례

언제 어떤 기술을 사용할까?

 

 

실제 기업 사례

대기업의 하이브리드 전략

 물리 서버: VMware vSphere (하드웨어 가상화)
├── Windows Server VM: 레거시 .NET 애플리케이션
├── Linux VM: Docker (컨테이너화) → 신규 마이크로서비스들
└── Database VM: Oracle, SQL Server → 안정성 중시

이유: 레거시는 안정성, 신규는 속도, 데이터베이스는 성능 최적화

 

 

스타트업의 일반적인 선택:

클라우드 (AWS/GCP/Azure)

└── Kubernetes (컨테이너 오케스트레이션)

├── 웹 애플리케이션 컨테이너들

├── API 서버 컨테이너들

├── 백그라운드 작업 컨테이너들

└── 모니터링 컨테이너들

 

이유: - 빠른 개발과 배포 속도 필요 - 클라우드 비용 최적화 - 개발팀 생산성 극대화 - 자동 스케일링 필요


8. 가상화 기술의 진화

기술 발전의 흐름

가상화 기술 타임라인

 

1990년대: 물리 서버 (자원 낭비) → 2000년대: 하드웨어 가상화 (서버 통합)

→ 2005년: OS 가상화 (효율성 개선) → 2013년: 컨테이너화 (DevOps 혁신)

 

 

 

현재의 하이브리드 접근법

현재 많은 기업들이 여러 가상화 기술을 조합하여 사용하고 있습니다. 특히 주목할만한 것은 마이크로VM 기술입니다:

 

마이크로VM (AWS Firecracker): 물리 서버

└── Lightweight Hypervisor

├── MicroVM 1: 컨테이너들 + 최소한의 OS

├── MicroVM 2: 컨테이너들 + 최소한의 OS

└── MicroVM 3: 컨테이너들 + 최소한의 OS

 

장점: 컨테이너의 속도 + VM의 격리성 서버리스 컴퓨팅에 최적화 + 차세대 클라우드 인프라의 기반

 

 

WebAssembly의 등장

차세대 가상화 기술로 주목받고 있는 WebAssembly(WASM)는 다음과 같은 특징을 가집니다:

 


9. 실제 프로젝트 적용 가이드

프로젝트 요구사항별 선택 기준

어떤 가상화 기술을 선택할까?

1. 레거시 시스템이 많다면: → 하드웨어 가상화 (VMware, Hyper-V)

2. 같은 OS에서 서비스 격리가 필요하다면: → OS 가상화 (LXC, Zones)

3. 새로운 웹 서비스를 빠르게 개발/배포하고 싶다면: → 컨테이너화 (Docker + Kubernetes)

4. 최고 수준의 보안이 필요하다면: → 하드웨어 가상화 + 추가 보안 설정

5. 개발팀의 생산성이 가장 중요하다면: → 컨테이너화 (Docker + CI/CD)

 

마이그레이션 전략

기존 시스템에서 새로운 가상화 기술로 이전할 때는 단계적 접근이 중요합니다:

 


 

결론: 상황에 맞는 선택이 핵심

 

세 가지 가상화 기술은 각각 다른 문제를 해결하기 위해 발전했습니다:

  • 하드웨어 가상화: "물리 서버를 효율적으로 활용하자"
  • OS 가상화: "하나의 OS를 효율적으로 나누어 쓰자"
  • 컨테이너화: "애플리케이션 배포와 실행을 간단하게 하자"

Docker로 대표되는 컨테이너화가 현재 가장 혁신적이고 널리 사용되지만, 실제 프로덕션 환경에서는 요구사항에 맞게 이 세 기술을 조합하여 사용하는 것이 최적의 전략입니다.

 

 

가상화 기술의 발전은 IT 인프라의 패러다임을 완전히 바꾸어 놓았습니다. 물리 서버 한 대에 애플리케이션 하나를 실행하던 시대에서, 이제는 하나의 서버에서 수십, 수백 개의 애플리케이션을 효율적으로 실행할 수 있게 되었습니다.

특히 Docker와 Kubernetes로 대표되는 컨테이너 기술은 개발자들의 일상을 바꾸어 놓았습니다. "내 컴퓨터에서는 되는데"라는 말은 이제 과거의 유물이 되었고, 개발 환경과 운영 환경의 일치, 빠른 배포와 스케일링이 당연한 것이 되었습니다.

하지만, 기술은 도구일 뿐, 중요한 것은 비즈니스 문제를 효과적으로 해결하는 것입니다.