컨테이너와 가상화 (Container & Virtualization)
핵심 인사이트 (3줄 요약)
하이퍼바이저 기반 VM과 컨테이너는 격리 수준과 효율이 다른 가상화 기술. Type 1(베어메탈)은 OS 없이 직접, Type 2는 Host OS 위에서 동작. 컨테이너는 OS 커널을 공유해 경량·빠른 가상화를 제공한다.
1. 가상화 개념
가상화(Virtualization): 하나의 물리 자원을 여러 논리 자원처럼 사용
목적: 자원 효율성 향상, 격리, 이식성, 비용 절감
가상화 유형:
- 서버 가상화: VM, 컨테이너
- 스토리지 가상화: SAN, NAS
- 네트워크 가상화: SDN, NFV
- 데스크톱 가상화: VDI
2. 하이퍼바이저 Type 1 vs Type 2 비교 ★
Type 1 (베어메탈, Native): Type 2 (호스트형, Hosted):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━
[VM][VM][VM] [VM][VM][VM]
│ │
[하이퍼바이저] ← 직접 하드웨어 제어 [하이퍼바이저]
│ │
[물리 하드웨어] [Host OS]
│
[물리 하드웨어]
특징: 특징:
- 성능 우수 (오버헤드 최소) - 설치 쉬움 (일반 앱처럼)
- 보안 강력 - 개발·테스트 환경 적합
- 엔터프라이즈 표준 - 성능 오버헤드 있음
예: 예:
- VMware ESXi - Oracle VirtualBox
- Microsoft Hyper-V - VMware Workstation
- Xen, KVM - Parallels (Mac)
적합:데이터센터, 클라우드 적합: 개발PC, 테스트
3. VM vs 컨테이너 vs Unikernel 비교 ★ (기술사 핵심)
┌──────────────────────────────────────────────────────────┐
│ 가상화 방식 비교 │
├────────────────┬────────────────┬────────────────────────┤
│ VM │ Container │ Unikernel │
├────────────────┼────────────────┼────────────────────────┤
│ App │ App │ App+OS kernel │
│ Guest OS │ (OS 없음) │ (필요한 것만) │
│ Hypervisor │ Container Engine│ 하이퍼바이저 or 베어메탈│
│ Host OS │ Host OS + Kernel│ │
│ Hardware │ Hardware │ Hardware │
├────────────────┼────────────────┼────────────────────────┤
│ 격리: 강함 │ 격리: 보통 │ 격리: 강함 │
│ 크기: GB │ 크기: MB │ 크기: KB~MB │
│ 시작: 분 │ 시작: 초 │ 시작: ms │
│ OS 공유: X │ OS 공유: O │ 필요한 OS만 포함 │
│ 보안: 높음 │ 보안: 중간 │ 공격 면적 최소 │
└────────────────┴────────────────┴────────────────────────┘
4. Docker 컨테이너 동작 원리
컨테이너 격리 기술 (Linux Kernel 기능):
Namespace (이름 공간 격리):
- PID namespace: 프로세스 ID 격리
- Network namespace: 네트워크 스택 격리
- Mount namespace: 파일시스템 격리
- User namespace: 사용자 ID 격리
→ 컨테이너는 자신만의 격리된 환경으로 인식
cgroups (Control Groups, 자원 제한):
- CPU: 사용량 제한 (예: CPU 50%)
- Memory: 메모리 제한 (예: 512MB)
- I/O: 디스크 I/O 제한
→ 컨테이너 간 자원 경합 방지
Docker 레이어 구조:
[Container (read-write layer)]
[Image layer 3: apt install python]
[Image layer 2: copy app files]
[Image layer 1: ubuntu:22.04 base]
→ 레이어 캐시로 빌드 속도 향상
5. 컨테이너 보안 이슈
컨테이너의 보안 취약점:
1. 커널 공유: 커널 취약점 → 모든 컨테이너 영향
2. 특권 컨테이너: root 실행 시 호스트 접근 가능
3. 이미지 취약점: 베이스 이미지의 CVE
보안 강화 방법:
- 최소 권한 원칙 (Non-root 실행)
- 이미지 스캔 (Trivy, Clair)
- 런타임 보안 (Falco)
- 컨테이너 네트워크 정책 (Kubernetes NetworkPolicy)
- seccomp, AppArmor 프로파일
- 이미지 서명 (cosign, Notary)
6. 가상화 기술 발전 흐름
2000년대: 서버 가상화 (VMware ESXi)
→ 물리 서버 통합, 자원 효율화
2013년: Docker 컨테이너
→ 개발-운영 환경 통일, 이식성
2014년: Kubernetes (구글)
→ 컨테이너 오케스트레이션 표준화
2019년: 서버리스 (FaaS)
→ 함수 단위 실행, 인프라 추상화
현재: WebAssembly (Wasm)
→ 브라우저 밖 서버 환경 실행
→ 컨테이너보다 빠른 시작, 강한 격리
미래: Confidential Computing
→ 실행 중 데이터도 암호화 (TEE)
7. NFV (Network Function Virtualization)
기존: 전용 하드웨어 어플라이언스 (방화벽, 로드밸런서, IDS)
NFV: 네트워크 기능을 소프트웨어로 가상화 → 범용 서버에서 실행
[vFirewall][vRouter][vLB][vIDS] ← 소프트웨어 VNF
[NFV 인프라 (NFVI)]
[범용 x86 서버 클러스터]
장점: 비용 절감, 빠른 배포, 유연한 확장
ETSI NFV 표준: VNF + NFVI + MANO
8. 실무에서? (기술사적 판단)
- 클라우드: AWS EC2 = VM (Nitro 하이퍼바이저), Lambda = 컨테이너/VM
- 마이크로서비스: 서비스별 Docker 컨테이너 + Kubernetes
- 보안 강화: 컨테이너 + VM 혼합 (Kata Containers = 컨테이너 in VM)
- 기술사 포인트: Type 1 vs Type 2 하이퍼바이저, VM vs 컨테이너, NFV
9. 관련 개념
- 쿠버네티스 (Kubernetes)
- 마이크로서비스 아키텍처
- SDN / NFV
- 클라우드 컴퓨팅
📝 기술사 모의답안 (2.5페이지 분량)
📌 예상 문제
"서버 가상화의 개념과 하이퍼바이저 Type 1·Type 2를 비교하고, VM·컨테이너·Unikernel의 차이를 설명하여 클라우드 환경에서의 적용 전략을 논하시오."
Ⅰ. 개요
**서버 가상화(Server Virtualization)**란 하나의 물리 서버 위에 하이퍼바이저를 통해 다수의 독립적인 가상 머신(VM)을 생성·운영하는 기술이다.
- 등장 배경: 서버 자원 사용률 평균 15~20% 수준 (낭비) → 가상화로 70~80%로 향상, IDC 공간·전력 절감 필요
- 발전 흐름: VM(2000s) → 컨테이너(2013) → 서버리스(2015) → Wasm(현재) → Confidential Computing(미래)
Ⅱ. 구성 요소 및 핵심 원리
1. 하이퍼바이저 유형 비교
| 항목 | Type 1 (Bare-Metal) | Type 2 (Hosted) |
|---|---|---|
| 아키텍처 | 하드웨어 → 하이퍼바이저 → VM | 하드웨어 → Host OS → 하이퍼바이저 → VM |
| 성능 | ★ 우수 (오버헤드 최소) | Host OS 오버헤드 존재 |
| 보안 | ★ 강력 (공격 면적 최소) | Host OS 취약점 영향 받음 |
| 설치 복잡도 | 높음 | ★ 낮음 (일반 앱처럼 설치) |
| 적용 환경 | ★ 데이터센터, 클라우드 | 개발 PC, 테스트 |
| 대표 제품 | VMware ESXi, Xen, KVM | VirtualBox, VMware Workstation |
2. VM vs 컨테이너 vs Unikernel 비교
| 항목 | VM | 컨테이너 | Unikernel |
|---|---|---|---|
| 격리 기반 | 하이퍼바이저 (완전 격리) | Namespace + cgroups | 단일 주소 공간 |
| 이미지 크기 | 수GB (Guest OS 포함) | 수MB~수백MB | 수KB~수MB |
| 부팅 시간 | 수십 초~수분 | 1~10초 | 수ms |
| 보안 격리 | ★★ 매우 강함 | 중간 (커널 공유) | ★★ 강함 (최소 공격 면) |
| 적합 용도 | 레거시 앱, DB | ★ 마이크로서비스 | IoT, 엣지, 보안 민감 |
3. Docker 격리 핵심 기술
Linux Namespace (논리 격리): cgroups (자원 제한):
PID namespace: 프로세스 격리 CPU: 사용량 제한 (50%)
Net namespace: 네트워크 스택 격리 Memory: 메모리 상한 (512MB)
Mount namespace: 파일시스템 격리 I/O: 디스크 대역폭 제한
→ 컨테이너는 자신만의 OS 환경 인식 → 자원 경합 방지
Ⅲ. 기술 비교 분석
| 비교 항목 | 물리 서버 운영 | VM 가상화 | 컨테이너(Docker+K8s) |
|---|---|---|---|
| 자원 효율 | 15~20% | 60~70% | ★ 80~90% |
| 배포 시간 | 수일 | 수십 분 | ★ 수초~수분 |
| 격리 수준 | 완전 | ★★ 강함 | 보통 |
| 이식성 | 낮음 | 중간 | ★★ 매우 높음 |
| 비용(서버) | 높음 | 절감 | ★★ 최소 |
| 5G/NFV 적합 | 불가 | 가능 | ★★ 최적 |
★ 선택 기준: 보안 격리 최우선이면 VM, 빠른 배포·마이크로서비스는 컨테이너, NFV·5G 코어는 VM+컨테이너 혼합(Kata Containers)
Ⅳ. 실무 적용 방안
| 분야 | 적용 방법 | 기대 효과 |
|---|---|---|
| 데이터센터 통합 | 물리 서버를 Type 1 하이퍼바이저로 통합 | 서버 수 80% 감소, TCO 60% 절감 |
| 마이크로서비스 | Docker+Kubernetes로 서비스별 컨테이너화 | 배포 주기 주 1회→일 수십 회 단축 |
| 5G 코어(NFV) | VNF(가상 방화벽·로드밸런서)로 전용 장비 대체 | 장비 비용 60% 절감, 탄력적 확장 |
| 보안 강화 | Kata Containers (VM 기반 컨테이너)로 커널 분리 | 컨테이너 탈출 공격 차단 |
Ⅴ. 기대 효과 및 결론
| 효과 | 내용 | 정량 목표 |
|---|---|---|
| 자원 효율 | 가상화로 물리 서버 통합 | 서버 자원 사용률 80% 이상 |
| 비용 절감 | 서버·전력·냉각 비용 줄임 | TCO 50~60% 절감 |
| 배포 속도 | 컨테이너 기반 CI/CD 자동화 | 배포 시간 95% 단축 |
| 탄력성 | 수요에 따른 자동 스케일링 | 서비스 무중단 99.99% 달성 |
결론
서버 가상화는 IT 인프라 효율화의 핵심이며, VM→컨테이너→서버리스 순으로 추상화 수준이 높아지고 있다. 미래에는 Confidential Computing(실행 중 데이터도 암호화)과 WebAssembly가 결합한 새로운 가상화 패러다임이 클라우드 보안과 이식성을 더욱 강화할 것이다.
※ 참고 표준: ETSI NFV ISG, OCI(Open Container Initiative) 표준, NIST SP 800-190 (컨테이너 보안)
어린이를 위한 종합 설명
가상화는 "방 나누기"야!
물리 서버: 큰 아파트 🏢
VM: 방을 완전히 나눠서 (벽 두꺼움, 독립적) 🏠
컨테이너: 방은 나누지만 복도 공유 🚪 (가볍고 빠름!)
Type 1 하이퍼바이저: 관리인이 건물 직접 관리 👷
Type 2 하이퍼바이저: 세입자가 서브렛 관리 (한 단계 더)
왜 컨테이너가 핫해?
VM: 방 하나 준비 = 몇 분 (OS 설치부터)
컨테이너: 방 준비 = 1~2초 (이미 준비된 레이어 사용!)
배포 10번 해야 하면?
VM: 30분 / 컨테이너: 10초 ⚡✨