1. 가상화(Virtualization)란?
- 정의: 물리적인 하드웨어 리소스(CPU, 메모리, 스토리지 등)를 소프트웨어적으로 추상화하여, 하나의 물리적 시스템에서 여러 개의 논리적 자원(가상 머신, VM)이 동시에 실행될 수 있도록 분리하는 기술이다.
- 요약: 물리적 컴퓨터 한 대를 여러 개의 가상 컴퓨터처럼 나눠서 사용하는 방법이다.
2. 가상화의 목적
| 목적 | 설명 |
|---|---|
| 자원 효율성 증대 | 단일 물리 서버에서 활용되지 않는 유휴 자원을 여러 가상 머신에 할당하여 전체 사용률을 극대화함. |
| 비용 절감 | 필요한 물리 장비의 수가 줄어들어 초기 도입 비용, 상면 비용, 전력 및 유지보수 비용을 절감할 수 있음. |
| 격리 및 보안 강화 | 각 가상 머신은 논리적으로 완전히 격리되어, 하나의 VM에서 발생한 오류나 보안 문제가 다른 VM에 영향을 주지 않음. |
| 유연한 배포와 관리 | 개발 및 테스트 환경을 쉽게 복제하고 배포할 수 있으며, 시스템 마이그레이션이 용이함. |
| 신속한 복구 | 특정 시점의 VM 상태를 저장하는 '스냅샷' 기능을 통해 문제 발생 시 빠르게 이전 상태로 롤백할 수 있음. |
3. 하이퍼바이저(Hypervisor)
- 정의: 가상 머신(VM)을 생성하고 관리하는 핵심 소프트웨어 계층. VMM(Virtual Machine Monitor)이라고도 불린다.
- 역할:
- 물리 하드웨어 자원을 가상 머신에 할당하고 제어함.
- 각 VM이 독립된 하드웨어를 사용하는 것처럼 CPU, 메모리, 저장소 등의 가상 리소스를 제공함.
4. 하이퍼바이저 유형
Type 1: 네이티브 (Bare-metal) 하이퍼바이저
- 정의: 별도의 호스트 운영체제(OS) 없이 하드웨어 위에 직접 설치되어 실행되는 하이퍼바이저.
- 구조:
하드웨어 → 하이퍼바이저 → VM - 특징:
- 직접적인 하드웨어 제어: 하이퍼바이저가 직접 드라이버 호출, 메모리 접근, CPU 스케줄링을 담당하여 자원을 효율적으로 사용.
- 우수한 성능: 호스트 OS를 거치지 않으므로 오버헤드가 적고 더 빠르며 안정적임.
- 높은 보안성: 범용 OS가 없어 공격 표면이 상대적으로 적고, OS 레벨의 일반적인 취약점에서 자유로움.
- 서버 환경에 적합: 기업의 데이터센터나 클라우드 인프라 구축에 주로 사용됨.
- 대표 예시: VMware ESXi, Microsoft Hyper-V, Xen, KVM
Type 2: 호스티드 (Hosted) 하이퍼바이저
- 정의: 윈도우, macOS, 리눅스 등 기존의 운영체제(OS) 위에 애플리케이션처럼 설치되는 하이퍼바이저.
- 구조:
하드웨어 → 호스트 OS → 하이퍼바이저 App → VM - 특징:
- 쉬운 사용법: 일반 애플리케이션처럼 설치하고 사용할 수 있어 편리함.
- 성능 제약: 호스트 OS를 거쳐 하드웨어에 접근하므로 지연과 오버헤드가 발생하며, 호스트 OS가 자원 우선순위를 가져갈 수 있음.
- 보안 의존성: 호스트 OS의 보안 상태에 직접적인 영향을 받음.
- 개인용 환경에 적합: 개발, 테스트, 학습 등 개인용 데스크탑 환경에서 주로 사용됨.
- 대표 예시: Oracle VirtualBox, VMware Workstation/Fusion, Parallels (Mac)
타입별 비교
| 항목 | Type 1 (네이티브) | Type 2 (호스티드) |
|---|---|---|
| 설치 위치 | 하드웨어 위 | 호스트 OS 위 |
| 성능 | 매우 높음 | 상대적으로 낮음 |
| 보안 | 높음 | 호스트 OS에 의존 |
| 주요 사용 환경 | 서버, 클라우드 데이터센터 | 개인용 PC, 개발/테스트 |
| 예시 | VMware ESXi, Hyper-V, KVM | VirtualBox, VMware Workstation |
5. 가상화의 종류
무엇을 추상화하고 분리하느냐에 따라 다음과 같이 분류할 수 있다.
하드웨어 가상화
- 개념: 하나의 물리 서버를 여러 개인 것처럼 나누어 사용하는 가장 일반적인 가상화.
- 목적: 서버와 같은 고성능 장비의 유휴 자원을 효율적으로 활용하기 위해 CPU, 메모리 등을 여러 VM에 할당.
- 기술: 하이퍼바이저(VMware ESXi, KVM 등)가 물리 자원을 가상 머신에 할당하여 여러 OS가 동시에 실행되도록 함.
OS 수준 가상화 (컨테이너)
- 개념: 하나의 OS 내에 여러 독립적인 실행 환경을 구현.
- 목적: 무거운 VM보다 가볍고 빠르게 애플리케이션 환경을 구성하고 배포하기 위해 사용.
- 기술: 호스트 OS의 커널은 공유하되, 격리된 사용자 공간(컨테이너)을 만들어 애플리케이션을 운영. (예: Docker, Podman, LXC)
데스크탑 가상화 (VDI)
- 개념: 개인의 데스크탑 환경 전체를 중앙 서버에서 실행하고, 사용자는 네트워크를 통해 원격으로 접속.
- 목적: 중앙에서 사용자 환경을 관리하여 보안을 강화하고, 장소에 구애받지 않는 원격 근무 환경을 제공하기 위해 사용.
- 기술: VDI (Virtual Desktop Infrastructure) 솔루션 (예: Citrix, VMware Horizon)
스토리지 가상화
- 개념: 여러 개의 물리적 저장 장치를 논리적으로 통합하여 하나의 큰 저장소처럼 보이게 만듦.
- 목적: 저장 공간을 효율적으로 관리하고, 데이터 보호 및 장애 시 빠른 대처를 위해 사용.
- 기술: SAN/NAS 장치 등을 가상 볼륨, 스토리지 풀 등으로 통합 관리. (예: RAID, LVM)
네트워크 가상화
- 개념: 물리적 네트워크 장비(스위치, 라우터)를 소프트웨어적으로 구현하여 논리적인 네트워크를 구성.
- 목적: 물리적 케이블링 없이도 복잡한 네트워크를 유연하게 구성하고, 서비스 간 네트워크를 격리하여 보안을 강화.
- 기술: SDN(Software-Defined Networking), NFV(Network Functions Virtualization) (예: VLAN, VMware NSX, AWS VPC)
6. 컨테이너(Container) vs 가상 머신(VM)
컨테이너란?
- 정의: 애플리케이션과 그 실행에 필요한 모든 환경(라이브러리, 종속성 등)을 함께 패키징하여, 호스트 OS의 커널을 공유하며 격리된 프로세스 환경에서 실행하는 기술.
컨테이너의 등장 배경
기존 하드웨어 가상화(VM)는 뛰어난 격리성을 제공했지만 다음과 같은 한계가 있었다.
- 무거움: 각 VM은 독립된 Guest OS 전체를 포함하므로 용량이 큼.
- 느린 속도: OS 부팅 과정이 필요해 VM 하나를 시작하는 데 수 분이 걸릴 수 있음.
- 자원 비효율성: 여러 VM에서 비슷한 커널과 시스템 프로세스가 중복 실행되어 메모리와 CPU 자원을 낭비.
- 낮은 이식성: VM 이미지는 크고 특정 하이퍼바이저에 종속될 수 있어 이동이 번거로움.
컨테이너는 이러한 문제를 해결하기 위해 등장했다. OS 전체를 가상화하는 대신, 호스트 OS의 커널은 공유하면서 애플리케이션과 필요한 라이브러리만 격리하여 패키징한다. 그 결과, 훨씬 가볍고 빠르며 높은 이식성을 갖게 되었다.
오케스트레이션 (Orchestration)
수십, 수백 개의 컨테이너를 효율적으로 관리하기 위해 등장한 기술. 마치 오케스트라의 '지휘자'처럼 여러 컨테이너를 자동으로 배치, 확장, 복구, 네트워킹하는 역할을 한다.
- 주요 기능: 스케줄링, 서비스 디스커버리, 로드 밸런싱, 자가 복구(Self-healing), 스케일링
- 대표 기술: Kubernetes, Docker Swarm, Nomad
비교표: VM vs 컨테이너
| 항목 | 가상 머신 (VM) | 컨테이너 |
|---|---|---|
| 부팅 시간 | 수 분 | 수 초 |
| 크기/무게 | 무거움 (GB 단위, OS 전체 포함) | 가벼움 (MB 단위, OS 미포함) |
| 자원 사용 | 높음 (각 VM이 OS 자원 점유) | 낮음 (호스트 OS 커널 공유) |
| 격리 수준 | 하드웨어 수준의 완전한 격리 (하이퍼바이저) | 프로세스 수준의 격리 (커널 공유) |
| 실행 단위 | OS + 애플리케이션 | 애플리케이션 |
| 이식성 | 상대적으로 낮음 | 매우 높음 |
| 주요 기술 | 하이퍼바이저 (KVM, ESXi) | 컨테이너 런타임 (Docker, containerd) |
| 사용 예 | 보안이 중요한 금융권, 레거시 시스템 운영 | 마이크로서비스 아키텍처, CI/CD 파이프라인 |
- VM 비유: 독립된 주택. 각자 상하수도, 전기(OS)를 개별적으로 사용. 보안은 뛰어나지만 짓는 데 오래 걸리고 비용이 많이 듦.
- 컨테이너 비유: 오피스텔. 건물 전체의 상하수도, 전기(커널)는 공유하고, 각 세대는 독립된 공간을 가짐. 빠르고 효율적으로 입주 가능.
7. 가상화 기술의 통합과 활용: 클라우드와 DevOps
가상화 기술은 단독으로 쓰이기보다, 클라우드 인프라나 DevOps 환경에서 서로 통합되어 강력한 시너지를 낸다.
Kubernetes 환경
- 컨테이너 가상화: Docker 또는 CRI-O로 애플리케이션 실행
- 네트워크 가상화: CNI 플러그인(Calico, Flannel)을 통해 가상 네트워크 자동 구성
- 스토리지 가상화: CSI를 통해 외부 스토리지(Ceph, AWS EBS)를 동적으로 연결
AWS 클라우드 환경
- EC2 인스턴스 (하드웨어 가상화) 위에 ECS/EKS (컨테이너 오케스트레이션)를 통해 컨테이너 기반 서비스를 운영하고, EBS (스토리지 가상화)와 VPC (네트워크 가상화)를 결합하여 완전한 인프라를 구성.
VMware vSphere 환경
- 물리 서버 위에 ESXi (Type 1 하이퍼바이저)로 VM을 구성하고, vSAN (스토리지 가상화)과 NSX (네트워크 가상화)를 결합하여 소프트웨어 정의 데이터센터(SDDC)를 구현.
8. 용어 정리
DevOps (데브옵스)
- 정의: Development(개발)와 Operations(운영)의 합성어. 개발팀과 운영팀이 긴밀하게 협업하여 소프트웨어 개발부터 배포, 운영까지의 전체 생명주기를 자동화하고 가속화하는 문화이자 방법론.
- 핵심 가치: 지속적 통합(CI), 지속적 배포/딜리버리(CD), 자동화, 협업, 모니터링 및 피드백.
DevOps 관련 주요 도구
- 코드 관리: Git, GitHub, GitLab
- CI/CD: Jenkins, GitLab CI, GitHub Actions
- 컨테이너화: Docker, Podman
- 오케스트레이션: Kubernetes
- 인프라 관리 자동화 (IaC): Terraform, Ansible
- 모니터링: Prometheus, Grafana, ELK Stack
728x90